目录
一、安装
nfs客户端和服务端都安装nfs-utils包,同时自动安装rpcbind。安装后会创建nfsnobody用户和组,uid和gid都是65534。
# yum -y install nfs-utils
二、配置端口(防火墙关闭就不用了)
nfs除了主程序端口2049和rpcbind的端口111是固定以外,还会使用一些随机端口,以下配置将定义这些端口,以便配置防火墙
# vim /etc/sysconfig/nfs #追加端口配置 MOUNTD_PORT=4001 STATD_PORT=4002 LOCKD_TCPPORT=4003 LOCKD_UDPPORT=4003 RQUOTAD_PORT=4004
三、NFS权限说明
1、普通用户
当设置all_squash时:访客时一律被映射为匿名用户(nfsnobody)【此时可以配置anonuid的值,让某些IP的用户完全访问】
当设置no_all_squash时:访客被映射为服务器上相同uid的用户,因此在客户端应建立与服务端uid一致的用户(或者是gid用户,文件有664权限也可以),否则也映射为nfsnobody。root除外,因为root_suqash为默认选项,除非指定了no_root_squash
2、root用户
当设置root_squash时:访客以root用户访问NFS服务端时,被映射为nfsnobody用户。
当设置no_root_squash时:访客以root用户访问NFS服务端时,被映射为root用户。以其他用户访问时同样映射为对应uid的用户,因为no_all_squash是默认选项
3、选项说明
ro:共享目录只读 rw:共享目录可读可写 all_squash:所有访问用户都映射为匿名用户或用户组 no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组 root_squash(默认):将来访的root用户映射为匿名用户或用户组 no_root_squash:来访的root用户保持root帐号权限 anonuid=<UID>:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534) anongid=<GID>:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534) secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器 insecure:允许客户端从大于1024的tcp/ip端口连接服务器 sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性 async:将数据先保存在内存缓冲区中,必要时才写入磁盘 wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率 no_wdelay:若有写操作则立即执行,应与sync配合使用 subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限 no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
三、配置案例(普通用户、gid和uid,两边皆不一致)
最关键配置:利用all_squash和anonuid,将匿名访问过来的用户都设置为本地用户UID,即当前目录拥有着的uid即可。
1、配置/etc/exports
允许172.18.5.149访问,且模式是rw,all_squash。
[root@yczbora ~]# vi /etc/exports
/test1 172.18.5.149(rw,async,all_squash,anonuid=51001)
四、配置案例(普通用户,gid一致,文件有664权限)
1、服务端配置:
(1)服务端创建用户和组都为test1,并创建目录/test1,权限为664(组成员也可rw)
[root@yczbora ~]# id test1 uid=51001(test1) gid=50001(test1) groups=50001(test1) [root@yczbora ~]# ll /|grep test1 drwxr-xr-x. 2 test1 test1 19 Apr 16 21:59 test1
(2)配置/etc/exports
允许172.18.5.149访问,且模式是rw,no_all_squash
[root@yczbora ~]# vi /etc/exports
/test1 172.18.5.149(rw,async,no_all_squash)
(3)查看nfs版本及是否参数可用
exportfs -r
exportfs -v
2、客户端配置:
(1)服务端创建用户和组都为test2,并创建目录/test2
[root@localhost /]# id test2 uid=41001(test2) gid=40001(test2) groups=40001(test2),50001(test111)
其中最重要的是test2的从组为test111的id是50001,和test1的组一致,这样才能确保,test2用户可以直接访问test1用户的/test1目录的内容(前提是/test1和其内部文件都有664权限,第二个6是组权限,rw即可)。
(2)挂载:
[root@localhost /]# mount 172.18.5.143:/test1 /test2
五、配置案例(普通用户,uid一致或uid,gid都一致,文件即可读取)
[root@yczbora ~]# vi /etc/exports /test1 172.18.5.149(rw,async,no_all_squash)
这种情况,只要是test1和test2的uid一致了,就实现了test2对/test1下所有的文件的读写。
文章评论