NFS是基于TCP/IP的网络文件系统协议,可将一台机器的目录/文件通过网络共享给其他机器,客户端能像访问本地目录一样操作远程共享资源。
一、基础核心
核心前提:客户端与服务端需正常通信(能ping通、端口可访问)。
跨网段共享:默认网段不同无法直接共享,可通过网络路由、防火墙策略打通连通性。
二、环境准备
服务器(共享目录主服务器):<192.168.10.130>
客户端(访问共享资源):<192.168.10.133>
依赖软件:nfs-utils(NFS核心工具)、rpcbind(端口映射服务)
三、配置步骤(服务器端)
1. 安装 nfs-utils、rpcbind
Bash
yum install -y nfs-utils recbind

2. 设置共享目录
创建共享目录:mkdir -p /root/gongxiang

赋予最大权限(确保客户端可访问):chmod 777 /root/gongxiang

3. 修改配置文件(/etc/exports)
格式:共享目录位置 客户端地址(权限选项)
vim /etc/exports
/root/gongxiang 192.168.10.0/24(rw,sync,no_root_squash)
共享目录位置 客户端网段
rw代表可读可写
sync代表同步到内存与硬盘
no_root_squash代表以root身份访问时赋予本地root权限

4. 启动服务与设置自启
关闭防火墙和SELinux(避免拦截):
Bash
systemctl stop firewalld
setenforce 0
启动服务(先rpcbind后nfs):
Bash
先开启rpcbind
systemctl start rpcbind
再开启nfs
systemctl start nfs
设置开机自启:
Bash
systemctl enable rpcbind
systemctl enable nfs
查看端口启动情况
netstat -natp | gerp rpcbind
netstat -natp | gerp 111

5. 发布与查看共享
发布共享:exportfs -rv
查看本机共享:showmount -e

四、配置步骤(客户端)
1. 安装依赖与启动服务
安装软件:yum install -y nfs-utils rpcbind
关闭防火墙和SELinux:同服务器端操作
启动服务:systemctl start rpcbind && systemctl start nfs

2. 查看服务器共享目录
Bash
查看共享目录
showmount -e 192.168.10.130

3. 挂载共享目录
手动挂载:
Bash
新建目录作为挂载目录
mkdir /gx
对共享目录进行手动挂载
mount 192.168.10.130:/root/gongxiang /gx
查看挂载结果
df -Th

自动挂载(开机生效):
-
编辑配置文件:
vim /etc/fstab -
添加内容:
192.168.10.130:/root/gongxiang /gx nfs defaults,_netdev 0 0 -
生效配置:
mount -a(解除手动挂载:umount /gx)vim /etc/fstab
192.168.10.130:/root/gongxiang /gx nfs defaults,_netdev 0 0
要挂载的共享目录 挂载点 格式nfs netdev表示挂载需要网络#解除手动挂载
umount /gx
查看挂载情况
df -Th重新加载自动挂载配置文件
mount -a
查看挂载情况
df -Th
4. 验证共享成功
服务器端:cd /root/gongxiang && vim 1.txt(写入测试内容)
客户端:cd /gx && cat 1.txt(能查看测试内容即成功)

五、关键权限选项说明
| 权限选项 | 说明 |
|---|---|
| rw | 允许客户端读写共享目录 |
| ro | 客户端仅能只读访问(默认) |
| sync | 数据同步写入内存与硬盘,保证数据一致性 |
| async | 数据先存于内存缓冲区,必要时写入硬盘,效率高但有数据丢失风险 |
| no_root_squash | 客户端以root身份访问时,赋予本地root权限(默认是root_squash) |
| root_squash | 客户端root用户映射为匿名用户 |
| all_squash | 所有访问用户均映射为匿名用户或用户组 |
| no_subtree_check | 不检查共享子目录的父目录权限,提升效率 |
| anonuid=xxx | 指定匿名用户的UID(对应服务器/etc/passwd文件) |
| anongid=xxx | 指定匿名用户的GID(对应服务器/etc/passwd文件) |
| 享子目录的父目录权限,提升效率 | |
| anonuid=xxx | 指定匿名用户的UID(对应服务器/etc/passwd文件) |
| anongid=xxx | 指定匿名用户的GID(对应服务器/etc/passwd文件) |