配置 NFS 服务器(服务端)
1、使用 Yum 安装NFS
yum -y install rpcbind nfs-utils
2、创建共享目录;修改配置文件
mkdir /nfs_data vim /etc/exports /nfs_data 192.168.3.0/24(rw)
#配置说明:
/nfs_data 选择需要共享的目录
192.168.3.0/24 这里配置的是192.168.3.0网段可以进行访问;这个也可以写成单个IP,意思就是只允许这一个IP访问;如果不限制访问客户端则用*表示
(rw) 这里配置的是192.168.3.0该网段用户有读写权限,如有多个参数使用英文逗号隔开。需要注意的是IP和权限之间没有空格,需要连起来写。相关参数文末会有说明。
3、启动服务,设置开机自启(先启动rpc-bind,后启动nfs)
systemctl start rpcbind
systemctl start nfs-server
#查看端口监听状态
netstat -antpu | grep 2049
#配置开机自动启动
systemctl enable rpcbind nfs-server
4、 如修改过exports文件,需要重新读取配置文件
exportfs -rv
5、防火墙端口放行
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload
6、(可选)针对需要读写权限用户(命令二选一)
chmod o+w /nfs_data
或者
chmod nfsnobody.nfsnobody -R /nfs_data
以下是一些 NFS 共享的常用参数:
ro #只读访问。
rw #读写访问。
sync #资料同步写入到内存与硬盘当中。(安全性较高,读写IO会比较高,原理是边写边存)
async #资料会先暂存于内存当中,而非直接写入硬盘。(文档安全性较低,读写IO会比较底,原理是你写入数据暂缓到内存,在存到硬盘)
secure #NFS 通过 1024 以下的安全TCP/IP 端口发送。
insecure #NFS 通过 1024 以上的端口发送。
wdelay #如果多个用户要写入 NFS 目录,则归组写入(默认)。
no_wdelay #如果多个用户要写入 NFS 目录,则立即写入,当使用 async 时,无需此设置。
hide #在NFS 共享目录中不共享其子目录。
no_hide #共享NFS 目录的子目录。
subtree_check #如果共享/usr/bin 之类的子目录时,强制 NFS 检查父目录的权限(默认)。
no_subtree_check #和上面相对,不检查父目录权限。
all_squash #共享文件的UID 和GID 映射匿名用户 anonymous,适合公用目录。(类似强制降权,配置用户名权限全部压制为匿名用户 anonymous)
no_all_squash #保留共享文件的 UID 和GID(默认)。
root_squash #root 用户的所有请求映射成如 anonymous 用户一样的权限(默认)。(类似强制降权,强制root用户权限全部压制为匿名用户 anonymous)
no_root_squash #root 用户具有根目录的完全管理访问权限。
常见示例如下:
[root@xue63 a]# cat /etc/exports
/tmp/a/no_root_squash *(rw,no_root_squash)
/tmp/a/sync 192.168.0.0/24(rw,sync)
/tmp/a/ro 192.168.1.64(ro)
/tmp/a/all_squash 192.168.0.0/24(rw,all_squash,anonuid=500,anongid=500)
/tmp/a/async 192.168.3.0/255.255.255.0(async)
/tmp/a/rw 192.168.3.0/255.255.255.0(rw) 192.168.4.0/255.255.255.0(rw)
/tmp/a/root_squash *(rw,root_squash)
注意:在发布共享目录的格式中除了共享目录是必跟参数外,其他参数都是可选的。并且共享目录与客户端之间及客户端与客户端之间需要使用空格符号,但是客户端与参数之间是不能有空格的