V3版本,是目前的主流,但是安全性方面没有V4好。RHEL7默认是V4。
V3配置比较方便简单,V4相对比较复杂。
创建共享
1.编辑/etc/exports文件,添加共享条目,如下
/inter 10.42.1.28(rw,sync)
2.
systemctl start nfs rpcbind
#注意rpcbind服务需要先启动,然后再启动nfs
#启动这2个服务,并添加到防火墙
#特别注意mountd这个服务也要添加到防火墙!
在客户端查看共享信息
[[email protected] data]$ showmount -e 10.42.1.27 Export list for 10.42.1.27: /inter 10.42.1.28
在客户端挂载
[[email protected] yum.repos.d]# mount -t nfs 10.42.1.27:/inter /media/
挂载之后会发现root用户没有写的权限
在服务端运行
[[email protected] /]# exportfs -v /inter 10.42.1.28(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
原因就是有一个root_squash的参数
root_squash:是指当客户端用root来访问服务端,服务端会把它映射成nfsnobody的身份
nfsnobody是以other的身份来访问文件或者文件夹,所以访问受限于共享文件夹o的权限。
修改o的权限之后就可以创建文件了,文件拥有人和组是nfsnobody
[[email protected] media]# touch 11 [[email protected] media]# ll total 8 -rw-r--r--. 1 nfsnobody nfsnobody 0 Oct 15 15:33 11 -rw-r--r--. 1 root root 2808 Oct 15 10:59 passwd ----------. 1 root root 1562 Oct 15 11:00 shadow
在服务端/etc/exports文件中添加一个参数no_root_squash
/inter 10.42.1.28(rw,sync,no_root_squash)
reload nfs服务,客户端root用户也可以写了。
no_root_squash:这个参数的作用是客户端的root访问这个共享文件夹,就映射成服务端的root身份。
这个参数比较不安全,默认是不开启的。
#客户端以root身份访问共享文件夹,对服务端来说是映射成匿名身份来访问,
如果是其它普通用户来访问,则映射成对应相同uid的用户。
客户端上创建文件,2个用户的uid相同
-rw-rw-r--. 1 wudan wudan 0 Oct 15 16:10 33
服务器端查看文件
-rw-rw-r--. 1 user1 user1 0 Oct 15 16:10 33
这个很蠢!
可以添加一个参数all_squash
所有用户都是以匿名身份来访问!
或者添加这个参数,表示指定以什么用户来访问共享。
/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)
kerberos
美国麻省理工开发的
nfs是sun发开的