服务器搭建部分:html
yum install nfs-utils yum install rpcbind.x86_64 service rpcbind restart service nfs restart chkconfig rpcbind on chkconfig nfs on
nfs的自己不具有传输的能力,将由rpc模块来完成调用daemons实现传输目的。vim
nfs的自身端口是tcp和dup的2049安全
rpc自身的端口是tcp和udp的111bash
客户端在链接nfs服务器时,rpc负责告诉客户端你要链接的端口是多少,这些端口是由rpc产生的随机产生的。服务器
注:图片来自 http://www.cnblogs.com/zzzhfo/p/5804831.htmlasync
1.在/etc/sysconfig/nfs中将变化的端口锁住(先用netstat -ntulp | grep 6000 肯定这个端口无进程使用)tcp
vim /etc/sysconfig/nfs # TCP port rpc.lockd should listen on. 锁定的tcp端口 LOCKD_TCPPORT=6000 # UDP port rpc.lockd should listen on. 锁定的udp端口 NFS V2只支持UDP LOCKD_UDPPORT=6000 # Port rpc.mountd should listen on. 负责NFS的档案系统,当CLIENT端经过rpc.nfsd登录SERVER后,对 # clinet存取server的文件进行一系列的管理 MOUNTD_PORT=892 # Port rpc.statd should listen on. 为nfs锁定服务提供crash恢复功能 STATD_PORT=66 # Port rquotad should listen on. 处理当用户经过nfsmount到远程服务器时的配额 RQUOTAD_PORT=875
2.放行防火墙学习
iptables -I INPUT -p tcp --dport 2049 -j ACCEPT iptables -I INPUT -p udp --dport 2049 -j ACCEPT iptables -I INPUT -p tcp --dport 111 -j ACCEPT iptables -I INPUT -p udp --dport 111 -j ACCEPT iptables -I INPUT -p tcp --dport 6000 -j ACCEPT iptables -I INPUT -p udp --dport 6000 -j ACCEPT iptables -I INPUT -p tcp --dport 892 -j ACCEPT iptables -I INPUT -p tcp --dport 66 -j ACCEPT iptables -I INPUT -p tcp --dport 875 -j ACCEPT
3.建立共享目录ui
mkdir /share
4.配置共享目录的配置文件url
vim /etc/exports /share 192.168.80.0/24(rw,sync,no_root_squash)
5.挂载
#实际的生产环境中,不建议重启,能够从新挂载。 #a表示全部 r表示从新挂载,v表示现实结果 exportfs -arv
客户端操做:
1.建立挂载点
mkdir /xx/
2.挂载
mount 192.168.80.130:/share /xx/
-------------------------------------------------------------------------------------------------------------
关于一些命令注释
- 权限有:
- 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值。
NFS客户端用户映射:客户端登录用户为root或者其余用户,而后根据服务器端nfs server配置,相应客户端链接映射到nfs服务器端的用户为root或者指定用户(经过anonuid或者anongid来设定)、nfsnobody等。最后这个映射用户和共享目录的权限共同影响该客户端链接是否有读写权限。
手动设定客户端、服务器端用户映射,参数:map_static=/etc/nfs.map
/etc/nfs.map文件映射内容以下:
# remote local
gid 500 1000
uid 500 2003
参考:NFS 学习笔记中关于nfs客户链接用户身份的描述,没有验证过下述的描述:
- 客户端链接时候,对普通用户的检查,NO.1若是明确设定了普通用户被压缩的身份,那么此时客户端用户的身份转换为指定用户,NO.2若是NFS server上面有同名用户,那么此时客户端登陆帐户的身份转换为NFS server上面的同名用户,NO.3若是没有明确指定,也没有同名用户,那么此时 用户身份被压缩成nfsnobody
- 客户端链接的时候,对root的检查,NO.1若是设置no_root_squash,那么此时root用户的身份被压缩为NFS server上面的root,NO.2若是设置了all_squash、anonuid、anongid,此时root 身份被压缩为指定用户,NO.3若是没有明确指定,此时root用户被压缩为nfsnobody,NO.4若是同时指定no_root_squash与all_squash 用户将被压缩为 nfsnobody,若是设置了anonuid、anongid将被压缩到所指定的用户与组
注:http://desert3.iteye.com/blog/1675522
-------------------------------------------------------------------------------------------------------------