RHCE 练习三:架设一台 NFS 服务器

一、题目要求

1、开放 /nfs/shared 目录,供所有用户查询资料

2、开放 /nfs/upload 目录,为 192.168.xxx.0/24 网段主机可以上传目录,并将所有用户及所属的组映射为 nfs-upload,其 UID 和 GID 均为 210

3.将 /home/tom 目录仅共享给 192.168.xxx.xxx 这台主机,并只有用户 tom 对该目录有读写权限

二、实验

前情提要:

① 需要准备两台版本一致的 linux 主机且网络可互通,这里我的服务端为 192.168.96.142,客户端为 192.168.96.132

② 关闭服务端防火墙以及 selinux

[root@server ~]# systemctl stop firewalld[root@server ~]# setenforce 0

③ 磁盘挂载操作

[root@server ~]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.

④ 配置 yum 源文件

[root@server ~]# vim /etc/yum.repos.d/base.repo[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
gpgcheck=0

1.开放 /nfs/shared 目录,供所有用户查询资料

① 安装 nfs-utils 共享文件系统并启动程序

[root@server ~]# dnf install nfs-utils -y[root@server ~]# systemctl start nfs-server.service 

 ②  编辑 nfs 主配置文件

[root@server ~]# vim /etc/exports# 共享目录(根目录)   允许访问的主机*(权限,参数)
/nfs/shared  *(ro)    

③ 根据配置文件创建资源文件并查看文件权限,确保所有用户可读 /nfs/shared 路径下文件即可

[root@server ~]# mkdir -pv /nfs/shared
mkdir: 已创建目录 '/nfs'
mkdir: 已创建目录 '/nfs/shared'[root@server ~]# touch /nfs/shared/test{1..10}[root@server ~]# ll -d /nfs/shared/
drwxr-xr-x. 2 root root 137  5月 19 20:01 /nfs/shared/

④ 由于上面我们修改了 nfs 的配置文件,想要文件生效我们要重启 nfs-server 服务,但在这里我们不能直接用 systemctl  restart  nfs-server 来重启服务,这样我们每重启一次服务就会重新进行端口注册,推荐用 exportfs  -ra 来实现。刷新后未出现报错说明我们的配置没有问题!

[root@server ~]# exportfs -ra    # 重新导出(re-export)并刷新所有 NFS 共享目录,结合了 -r(重新读取配置)和 -a(应用到所有目录)的功能

⑤ 客户端主机向服务端主机建立 nfs 连接

Ⅰ.想要建立连接我们的客户端也需要下载 nfs-utils 服务程序

[root@client ~]# mount /dev/sr0 /mnt[root@client ~]# dnf install nfs-utils -y

Ⅱ.客户端查询 nfs 服务器(IP 为 192.168.96.142)导出的共享目录列表

[root@client ~]# showmount -e 192.168.96.142Export list for 192.168.96.142:
/nfs/shared *

Ⅲ.创建一个挂载目录 /dbw,在将 /nfs/shared 文件系统挂载到 /dbw 目录(可共享文件路径)

[root@client ~]# mkdir /dbw[root@client ~]# mount 192.168.96.142:/nfs/shared /dbw

Ⅳ.查看 /nfs/shared 路径,可以看到服务端所共享的文件

[root@client ~]# ll /dbw

2.开放 /nfs/upload 目录,为 192.168.xxx.0/24 网段主机可以上传目录,并将所有用户及所属的组映射为 nfs-upload,其 UID 和 GID 均为 210

① 编辑 nfs 配置文件

[root@server ~]# vim /etc/exports
# 共享目录(根目录)   允许访问的主机*(权限,参数)
/nfs/shared  *(ro)/nfs/upload  192.168.96.0/24(rw,all_squash,anonuid=210,anongid=210)

② 根据配置文件创建资源文件并查看文件权限,确保用户可读可写 /nfs/shared 路径下文件即可;刷新

[root@server ~]# mkdir -pv /nfs/upload
mkdir: 已创建目录 '/nfs/upload'[root@server ~]# touch /nfs/upload/red{1..10}[root@server ~]# ll -d /nfs/upload/
drwxr-xr-x. 2 root root 127  5月 19 20:26 /nfs/upload/[root@server ~]# chmod o+w /nfs/upload/ -R   # 修改其他用户权限,加上可写权限[root@server ~]# exportfs -ra

③ 根据配置文件中所写,需要创建一个 uid 为 210 且 gid 也为 210 的用户账号

[root@client ~]# useradd -r -u 210 nfs-upload[root@client ~]# id nfs-upload 
用户id=210(nfs-upload) 组id=210(nfs-upload) 组=210(nfs-upload)

④ 客户端查询 NFS 服务器导出的共享目录列表

[root@server ~]# showmount -e 192.168.96.142Export list for 192.168.96.142:
/nfs/shared *
/nfs/upload 192.168.96.0/24

⑤ 将 /nfs/upload 文件挂载到 /dbw 目录并查看共享目录下是否有服务端共享的文件,挂载之前我们先要取消前面挂载到 /dbw 目录下的 /nfs/shared 文件共享目录

[root@client ~]# umount 192.168.96.142:/nfs/shared /dbw
umount: /dbw: not mounted.[root@client ~]# ll /dbw
total 0[root@client ~]# mount 192.168.96.142:/nfs/upload /dbw[root@client ~]# ll /dbw

⑥ 在客户端下上传文件并查看

[root@client ~]# touch /dbw/red111[root@client ~]# ll /dbw

3.将 /home/tom 目录仅共享给 192.168.xxx.xxx 这台主机,并只有用户 tom 对该目录有读写权限

① 编辑 nfs 配置文件


[root@server ~]# vim /etc/exports# 共享目录(根目录)   允许访问的主机*(权限,参数)
/nfs/shared  *(ro)/nfs/upload  192.168.96.0/24(rw,all_squash,anonuid=210,anongid=210)/home/tom  192.168.96.132(rw,root_squash,all_squash,anonuid=1001,anongid=1001)

② 根据配置文件创建资源文件并查看文件权限,确保 tom 可读可写 /home/tom 路径下文件即可;刷新

[root@server ~]# mkdir -pv /home/tom 
mkdir: 已创建目录 '/home/tom'[root@server ~]# touch /home/tom/tom{1..10}[root@server ~]# ll -d /home/tom
drwxr-xr-x. 2 root root 127  5月 19 22:00 /home/tom[root@server ~]# useradd tom[root@server ~]# chown tom:tom /home/tom    # 改变文件所有者
[root@server ~]# chmod 700 /home/tom     # 改变文件权限仅 tom 用户有读写执行权限[root@server ~]# exportfs -ra

③ 根据配置文件中所写,创建 tom ,id为 1001

[root@client ~]# useradd -u 1001 tom[root@client ~]# id tom
uid=1001(tom) gid=1001(tom) groups=1001(tom)

④ 将 /home/tom 文件挂载到 /dbw 目录并查看共享目录下是否有服务端共享的文件,挂载之前我们先要取消前面挂载到 /dbw 目录下的 /nfs/upload 文件共享目录

[root@client ~]# umount 192.168.96.142:/nfs/upload /dbw
umount: /dbw: not mounted.[root@client ~]# ll /dbw
total 0[root@client ~]# mount 192.168.96.142:/home/tom /dbw[root@client ~]# ll /dbw

⑤ 客户端上创建文件查看权限以及所有者

[root@client ~]# touch /dbw/tom111[root@client ~]# ll /dbw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/80773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【动态导通电阻】GaN HEMT动态导通电阻的精确测量

2023 年 7 月,瑞士洛桑联邦理工学院的 Hongkeng Zhu 和 Elison Matioli 在《IEEE Transactions on Power Electronics》期刊发表了题为《Accurate Measurement of Dynamic ON-Resistance in GaN Transistors at Steady-State》的文章,基于提出的稳态测量方法,研究了氮化镓(…

AI 制作游戏美术素材流程分享(程序员方向粗糙版)

AI 制作游戏美术素材分享(程序员方向粗糙版) 视频讲解: 抖音:https://www.douyin.com/user/self?from_tab_namemain&modal_id7505691614690561295&showTabpost Bilibili: https://www.bilibili.com/video/BV1ojJGzZEve/ 写在最前面: 本方法比较粗糙,只对对美术风…

Java求职面试:互联网大厂技术栈深度解析

文章简述 在这篇文章中,我们将通过一个模拟的面试场景,带你深入了解Java求职面试中可能会遇到的技术栈问题。通过这个故事,你可以学习到相关技术点的具体应用场景和面试技巧。 正文 场景:某互联网大厂的面试现场 面试官&#…

学习日记-day11-5.20

完成目标: comment.java package com.zcr.pojo; import org.hibernate.annotations.GenericGenerator;import javax.persistence.*; //JPA操作表中数据,可以将对应的实体类映射到一张表上Entity(name "t_comment")//表示当前的实体类与哪张表…

机器学习第十九讲:交叉验证 → 用五次模拟考试验证真实水平

机器学习第十九讲:交叉验证 → 用五次模拟考试验证真实水平 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 交叉验证…

Linux面试题集合(6)

创建多级目录或者同级目录 mkdir -p 文件名/文件名/文件名 mkdir -p 文件名 文件名 文件名 Linux创建一个文件 touch 文件名 DOS命令创建文件 echo 内容>文件名(创建一个有内容的文件) echo >文件名(创建一个没有内容的文件&#xff09…

Vue百日学习计划Day46-48天详细计划-Gemini版

Day 46: <KeepAlive> - 组件缓存与优化 (~3 小时) 本日目标: 理解 <KeepAlive> 的作用&#xff0c;学会如何使用它来缓存组件实例&#xff0c;从而优化应用性能和用户体验。所需资源: Vue 3 官方文档 (<KeepAlive>): https://cn.vuejs.org/guide/built-ins/…

SpringBean模块(三)具有生命周期管理能力的类(1)AutowireCapableBeanFactory

一、介绍 1、简介 AutowireCapableBeanFactory 是 Spring 框架中的一个接口&#xff0c;位于 org.springframework.beans.factory 包下&#xff0c;它提供了更底层的 Bean 实例化、依赖注入和生命周期管理能力&#xff0c;即使这些 Bean 没有通过常规的 Component 或 XML 注册…

Service Mesh

目录 一、Service Mesh 的核心特点 二、Service Mesh 的典型架构 1. Sidecar 模式 2. 控制平面与数据平面分离 三、Service Mesh 解决的核心问题 四、典型应用场景 五、主流 Service Mesh 框架对比 六、挑战与局限性 七、未来趋势 总结 Istio 一、Istio 核心组件与…

黑马Java基础笔记-13常用查找算法

查找算法 基本查找(也叫顺序查找&#xff0c;线性查找) 二分查找&#xff08;需要有序数据&#xff09; public static int binarySearch(int[] arr, int number){//1.定义两个变量记录要查找的范围int min 0;int max arr.length - 1;//2.利用循环不断的去找要查找的数据wh…

Go 语言 vs C+Lua(Skynet)游戏服务器方案对比分析

为啥挑这两个呢&#xff1f;因为两种技术分别对应CSP模型和Actor模型&#xff0c;都是经过时间检验的成熟且可靠的并发模型&#xff0c;问了很多地方&#xff0c;经过gpt整理得出如下报告。 从开发效率、运行性能、热更新扩展、云部署与水平扩展能力、多类型游戏支持等五个维度…

LeetCode 925. 长按键入 java题解

双指针。不会写。 https://leetcode.cn/problems/long-pressed-name/description/ class Solution {public boolean isLongPressedName(String name, String typed) {int len1name.length();int len2typed.length();int i0,j0;while(i<len1&&j<len2){if(name.ch…

如何使用通义灵码提高前端开发效率

工欲善其事&#xff0c;必先利其器。对于前端开发而言&#xff0c;使用VSCode已经能够极大地提高前端的开发效率了。但有了AI加持后&#xff0c;前端开发的效率又更上一层楼了&#xff01; 本文采用的AI是通义灵码插件提供的通义千问大模型&#xff0c;是目前AI性能榜第一梯队…

【小明剑魔视频Viggle AI模仿的核心算法组成】

Viggle AI 作为一款先进的生成式视频AI工具&#xff0c;其核心技术栈融合了多项前沿算法。以下是深度解析其核心算法架构及实现原理&#xff1a; 一、核心算法组成 1. 运动控制生成&#xff08;Motion Control Generation&#xff09; 算法框架&#xff1a;基于扩散模型&…

解决Power BI Desktop导入Excel数据第一行不是列标题问题

选中第一行不是列标题的表→鼠标右键→选择编辑查询→进入Power Query界面→点击“将第一行用作标题”→点击左边的“关闭并应用” 第一行就提升为标题了

对 Lambda 架构问题的深入理解

感谢 GPT&#xff0c;对很多问题的理解有机会更深。 大家攻击 Lambda 架构&#xff0c;常说的一个点就是 “实时离线指标存在差异”。“实时离线指标存在差异”&#xff0c;是一个真实困扰运营方的问题吗&#xff1f; 答案&#xff1a;是的&#xff0c;这是一个真实生活中的痛…

React中使用ahooks处理业务场景

// 从 ahooks 引入 useDynamicList 钩子函数&#xff0c;用于管理动态列表数据&#xff08;增删改&#xff09; import { useDynamicList } from ahooks;// 从 ant-design/icons 引入两个图标组件&#xff1a;减号圆圈图标和加号圆圈图标 import { MinusCircleOutlined, PlusCi…

蓝桥杯2114 李白打酒加强版

问题描述 话说大诗人李白, 一生好饮。幸好他从不开车。 一天, 他提着酒显, 从家里出来, 酒显中有酒 2 斗。他边走边唱: 无事街上走&#xff0c;提显去打酒。 逢店加一倍, 遇花喝一斗。 这一路上, 他一共遇到店 N 次, 遇到花 M 次。已知最后一次遇到的是花, 他正好把酒喝光了。…

小土堆pytorch--神经网路-卷积层池化层

神经网路-卷积层&池化层 一级目录二级目录三级目录 1. 神经网路-卷积层2. 神经网路最大池化的应用 一级目录 二级目录 三级目录 1. 神经网路-卷积层 在PyTorch中&#xff0c;torch.nn.Conv2d函数定义了一个二维卷积层&#xff0c;其常用参数包括&#xff1a; in_channel…

C++显式声明explicit

C显示声明explicit 在 C 中&#xff0c;explicit 关键字用于修饰单参数构造函数或多参数构造函数&#xff08;C11 起&#xff09;&#xff0c;其核心作用是禁止编译器的隐式类型转换。 一、必须加 explicit 的典型场景 1. 单参数构造函数 当构造函数只有一个参数时&#xff…