案例要求
- 开放
/nfs/shared
目录,供所有用户查询资料 - 开放
/nfs/upload
目录,为192.168.xxx.0/24
网段主机可以上传目录,并将所有用户及所属的组映射为nfs-upload
,其UID
和GID
均为210 - 将
/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
用户和组,并将 UID
和 GID
设置为 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=210
和anongid=210
:设置匿名用户的 UID 和 GID 为 210(即nfs-upload
用户和组)。
- 共享
/home/tom
目录:仅允许指定的主机(192.168.xxx.xxx
)访问,并且只有tom
用户完全访问,参数说明:no_root_squash
:保留 root 权限。anonuid=1001
和anongid=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
挂载
-
挂载
/nfs/shared
目录(只读):mount -t nfs 192.168.26.130:/nfs/shared /mnt/shared
-
挂载
/nfs/upload
目录(读写):mount -t nfs 192.168.26.130:/nfs/upload /mnt/upload
-
挂载
/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-upload
和tom
用户访问。 - 防火墙:若防火墙开启,需允许 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: 权限不够
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗