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这个服务也要添加到防火墙!

 在客户端查看共享信息

[chomperwu@rh2 data]$ showmount -e 10.42.1.27
Export list for 10.42.1.27:
/inter 10.42.1.28

在客户端挂载

[root@rh2 yum.repos.d]# mount -t nfs 10.42.1.27:/inter /media/

挂载之后会发现root用户没有写的权限


在服务端运行

[root@rh1 /]# 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

[root@rh2 media]# touch 11
[root@rh2 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发开的