rw 可读写的权限
ro 只读的权限
no_root_squash 登入NFS主机,使用该共享目录时相当于该目录的拥有者,如果是root的话,那么对于这个共享的目录来说,他就具有root的权
限,这个参数『极不安全』,不建议使用
root_squash 登入NFS主机,使用该共享目录时相当于该目录的拥有者。但是如果是以root身份使用这个共享目录的时候,那么这个使用者(root)
的权限将被压缩成为匿名使用者,即通常他的UID与GID都会变成nobody那个身份
all_squash 不论登入NFS的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody
anonuid 可以自行设定这个UID的值,这个UID必需要存在于你的/etc/passwd当中
anongid 同anonuid,但是变成groupID就是了
sync 资料同步写入到内存与硬盘当中
async 资料会先暂存于内存当中,而非直接写入硬盘
insecure 允许从这台机器过来的非授权访问
/etc/exports 部分实例
1./tmp *(rw,no_root_squash) //*号表示所有的IP都可以访问
2./tmp *(rw)
/home/public 192.168.0.*(rw) *(ro) //下面两行作用一样
/home/public 192.168.0.0/24(rw) *(ro)
3./home/test 192.168.0.100(rw) //只对某部机器设置权限
4./home/linux *.linux.org(rw,all_squash,anonuid=40,anongid=40)当*.linux.org 登陆此NFS主机,并且在/home/linux下面写入文件时,该文件的所有人与所有组,就会变
成/etc/passwd里面对应的UID为40的那个身份的使用者了。
注意:修改了/etc/exports后,并不需要重启nfs服务,只要用exportfs重新扫描一次/etc/exports,并且重新加载即可
exportfs[-aruv]
参数 含义
a 全部挂载(或卸载)/etc/exports档案内的设定
r 重新挂载/etc/exports 里面的设定,也同步的更新/etc/exports和/var/lib/nfs/xtab里面的内容
u 卸载某一目录
v 在export的时候,将分享的目录显示到荧屏上
#exportfs -rv//重新export一次
#exportfs -au//全部卸载
举例
node1:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.6G 2.4G 7.2G 25% /
tmpfs 126M 8.0K 126M 1% /dev/shm
172.16.12.89:/home/test
9.6G 2.4G 7.2G 26% /home/nfs
node2:~ # exportfs -av
exporting *:/home/test
node1:~ # umount /home/nfs/
node1:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.6G 2.4G 7.2G 25% /
tmpfs 126M 8.0K 126M 1% /dev/shm
showmount命令
语法:showmount [-aed] [hostname]
-a:显示目前以及连上主机的client机器的使用目录的状态
-e:显示hostname的/etc/exports里面共享的目录
-d:只显示被client机器挂载的目录
NFS故障解决
1、can't contactportmapper: RPC:Remotesystem error-Connection refused:
出现这个错误信息是由于SEVER端的PORTMAP没有启动。
2、mountclntudp_create: RPC: Programnotregistered:NFS没有启动起来,可以
用showmout-ehost命令来检查NFSSERVER是否正常启动起来。
3、mount: localhost:/home/test failed, reason given by server: Permission denied:
这个提示是当client要mountnfsserver时可能出现的提示,意思是说本机没有权限去mount nfsserver上的目录。解决方法当然是去修改NFSSERVER咯。
4、被防火墙搞掉
这个原因很多人都忽视了,在有严格要求的网络环境中,我们一般会关闭linux上的所有端口,当需要使用哪个端口的时候才会去打开。而NFS默认是使用111端口,所以我们先
要检测是否打开了这个端口,另外也要检查TCP_Wrappers的设定。
重新设置防火墙,包括iptables与TCP_Wrappers,因为激活了portmap,所以端口111必须提供出去.因此在iptablesrules中,要增加:
iptables-AINPUT-pTCP --dport111-jACCEPT
iptables-AINPUT-pUDP --dport111-jACCEPT
如果还不行,那就是TCP_Wrappers的问题,检查/etc/hosts.deny,如果有一行是:
ALL:ALL: deny
那就必须在/etc/hosts.allow中增加:
portmap:ALL:allow
注意:由于NFS使用的这个RPC在client端连上主机时,那么你的主机想要关机,那可就会成为『不可能的任务』。即如果你的Server上面还有Client在联机,那么你要关机,可能
得要等到数个钟头才能够正常的关机成功!所以,建议在NFSServer要关机之前,要先『关掉portmap与nfs』这两个东西。如果无法正确的将这两个daemons关掉,那么先以
netstat -utlp找出PID,然后kill掉。
NFS客户端设置
为了担心会不小心将NFS端挂进来的具有SUID权限档案的程序执行,root可以将NFS所分享的目录以较为安全的情况挂载进来,可以
#mount-t nfs -o nosuid,ro hostname:/directory/mountponit
mountnfs的其它可选参数:
HARD:在后台,NFSCLIENT会不断的尝试与SERVER的连接,直到mount上
SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。
例如:mount-F nfs -o hard192.168.0.10:/nfs /nfs
timeo=n:设置超时时间,当数据传输遇到问题时,会根据这个参数尝试进行重新传输
intr 允许通知中断一个NFS调用。当服务器没有应答需要放弃的时候有用处。
retry=n:设定当网络传输出现故障的时候,尝试重新连接多少时间后不再尝试。默认的数值是10000minutes
同时使用多个参数的方法:mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp/nfs
注意:NFS客户机和服务器的选项并不一定完全相同,而且有的时候会有冲突。比如说服务器以只读的方式导出,客户端却以可写的方式mount,虽然可以成功mount上,但尝
试写入的时候就会发生错误。一般服务器和客户端配置冲突的时候,会以服务器的配置为准。