服务器环境:CentOS6.9 Linux 2.6.32-696.el6.x86_64
安装NFS服务
nfs客户端和服务端都只需要安装nfs-utils包即可,并且yum安装时会连带安装rpcbind服务
# yum -y install nfs-utils
开机启动
# chkconfig rpcbind on # chkconfig nfs on
出于运维管理的需要,能够快速查找相关启动的服务,配置chkconfig的同时,追加开机启动脚本
# tail -2 /etc/rc.local /etc/init.d/rpcbind start /etc/init.d/nfs start
配置端口
nfs除了主程序端口2049和rpcbind的端口111是固定以外,还会使用一些随机端口,以下配置将定义这些端口,以便配置防火墙
# vim /etc/sysconfig/nfs #追加端口配置 MOUNT_PORT=4001 STATD_PORT=4002 LOCKD_TCPPORT=4003 LOCKD_UDPPORT=4004 RQUOTAD_PORT=4005
配置要共享的目录
# mkdir -p /var/nfs/simple-nfs #要共享的目录 # vim /etc/exports #配置访问权限 /var/nfs/simple-nfs 192.168.100.0/24(rw,async,root_squash)
访问权限:
rw:read-write,可读写; 注意,仅仅这里设置成读写客户端还是不能正常写入,还要正确地设置共享目录的权限,参考问题7
ro:read-only,只读;
sync:文件同时写入硬盘和内存;
async:文件暂存于内存,而不是直接写入内存;
no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid:匿名用户的GID值。
配置防火墙
# vim /etc/sysconfig/iptables -A INPUT -p tcp -m tcp --dport 111 -j ACCEPT -A INPUT -p udp -m udp --dport 111 -j ACCEPT -A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT -A INPUT -p udp -m udp --dport 2049 -j ACCEPT -A INPUT -p tcp -m tcp --dport 4001:4005 -j ACCEPT -A INPUT -p udp -m udp --dport 4001:4005 -j ACCEPT
重启服务和防火墙
# service nfs restart # service iptables restart #或reload
Linux客户端挂载
# mount -t nfs 192.168.100.110:/var/nfs/simple-nfs /mnt
也可将挂载配置写入fstab文件中,与普通磁盘挂载一样,挂载时同样可以指定权限,只是类型为nfs。