案例要求

  1. 开放/nfs/shared目录,供所有用户查询资料
  2. 开放/nfs/upload目录,为192.168.xxx.0/24网段主机可以上传目录,并将所有用户及所属的组映射为nfs-upload,其UIDGID均为210
  3. /home/tom目录仅共享给192.168.xxx.xxx这台主机,并只有用户tom可以完全访问该目录

前置准备

#临时关闭防火墙和 SELinux(测试环境)
#注:生产环境中一般不建议关闭防火墙和 SELinux,而是根据需求设置规则
systemctl stop firewalld
setenforce 0

服务端操作流程

1. 安装 NFS 必备组件

dnf install -y rpcbind nfs-utils

2. 创建共享目录

mkdir -pv /nfs/shared
mkdir -pv /nfs/upload
mkdir -pv /home/tom

3. 配置用户和用户组

根据需求,创建 nfs-upload 用户和组,并将 UIDGID 设置为 210:

groupadd -g 210 nfs-upload
useradd -u 210 -g nfs-upload nfs-upload

方法二:直接创建系统用户(推荐使用此方法)

useradd -u 210 -r nfs-upload

4. 编辑 /etc/exports 配置文件

编辑 /etc/exports 文件,配置 NFS 共享目录及权限。

vim /etc/exports

# 1. 共享 /nfs/shared 目录,供所有用户只读查询资料
/nfs/shared *(ro,sync)

# 2. 共享 /nfs/upload 目录,供 192.168.xxx.0/24 网段主机上传
#    将所有用户及所属组映射为 nfs-upload 用户(UID 和 GID 均为 210)
/nfs/upload 192.168.26.0/24 (rw,sync,all_squash,anonuid=210,anongid=210)

# 3. 共享 /home/tom 目录,仅允许指定主机的 tom 用户完全访问
/home/tom 192.168.26.129 (rw,sync,no_root_squash,anonuid=1001,anongid=1001)

配置说明

  • 共享 /nfs/shared 目录:允许所有主机以只读方式访问该目录,参数说明:
    • ro:只读权限。
    • sync:同步写入数据以提高数据一致性。
  • 共享 /nfs/upload 目录:仅允许 192.168.26.0/24 网段的主机上传文件,参数说明:
    • all_squash:将所有用户映射为匿名用户。
    • anonuid=210anongid=210:设置匿名用户的 UID 和 GID 为 210(即 nfs-upload 用户和组)。
  • 共享 /home/tom 目录:仅允许指定的主机(192.168.xxx.xxx)访问,并且只有 tom 用户完全访问,参数说明:
    • no_root_squash:保留 root 权限。
    • anonuid=1001anongid=1001:设置匿名用户的 UID 和 GID 为 tom 用户的 UID 和 GID(假设 tom 的 UID 和 GID 为 1001)。

5. 应用配置

加载并应用 NFS 配置:

exportfs -r

6. 启动NFS服务

启动NFS 服务并设置为开机启动:

systemctl start nfs-server
systemctl enable nfs-server

7.目录权限编辑

[root@localhost ~]# chmod o+w /nfs/upload/

# 设置 /nfs/shared 为只读(如果没有特殊用户需要写入权限)
sudo chmod 755 /nfs/shared

# 设置 /nfs/upload 目录,确保 nfs-upload 用户有权限写入
sudo chown 210:210 /nfs/upload
sudo chmod 770 /nfs/upload

# 设置 /home/tom 目录,确保只有 tom 用户可以访问
sudo chown tom:tom /home/tom
sudo chmod 700 /home/tom

客户端操作流程

客户端挂载

在客户端,需要安装 nfs-utils 并挂载目录。

客户端安装 NFS工具

dnf install -y nfs-utils

挂载

  1. 挂载 /nfs/shared 目录(只读):

    mount -t nfs 192.168.26.130:/nfs/shared /mnt/shared
    
  2. 挂载 /nfs/upload 目录(读写):

    mount -t nfs 192.168.26.130:/nfs/upload /mnt/upload
    
  3. 挂载 /home/tom 目录(仅限 tom 用户访问):

    mount -t nfs 192.168.26.130:/home/tom /mnt/tom
    

验证共享目录

使用 showmount 查看 NFS 服务器共享的目录:

showmount -e 192.168.26.130
mount |grep /挂载点

注意事项

  • 目录权限:确保 /nfs/shared/nfs/upload/home/tom 目录的权限允许 nfs-uploadtom 用户访问。
  • 防火墙:若防火墙开启,需允许 NFS 服务端口。
  • SELinux:如果启用了 SELinux,可能需要为 NFS 目录设置适当的 SELinux 上下文标签,或者暂时将其关闭以进行测试。

部分结果展示

挂载成功结果展示

[root@localhost tom]# df -h
文件系统                    容量  已用  可用 已用% 挂载点
192.168.26.130:/nfs/shared   17G   16G  933M   95% /mnt/shared
192.168.26.130:/nfs/upload   17G   16G  933M   95% /mnt/upload
192.168.26.130:/home/tom     17G   16G  933M   95% /mnt/tom

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其余用户无法访问

[elysia@localhost root]$ cd /mnt/tom
bash: cd: /mnt/tom: 权限不够

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传