最近在了解一些服务权限的设置,突然就被这个nfs服务的权限给绊住了。当你挂载上服务器上的共享目录

时,却无法访问里面的一些内容。内心满满的忧桑。。。经过努力奋斗几分钟终于搞明白了。

 

  无法访问的原因:因为NFS服务是没有用户验证功能的,所以服务器会将客户端的身份进行映射,将其映射为匿名用户nfsnobody。也就是说,当你用root用户去访问共享目录时,其实你已经变成了服务器端的匿名用户nfsnobodoy了,这样,你还有权限访问nfsnobody没有权限的文件吗?当然是不行的。

  当然,解决的方法是有的。嘿嘿。。。

  通过建立UID和文件所有者UID相同的用户去访问。也就是伪造文件所有者UID去欺骗nfs服务器

 

一、挂载服务器的共享目录到本地,并查看挂载结果

javanfs共享目录 nfs共享目录权限_无法访问

二、进入挂载目录,查看文件。

javanfs共享目录 nfs共享目录权限_无法访问_02

这时我们看到没有权限去访问这个文件,再来看一下这个文件的详细信息。

javanfs共享目录 nfs共享目录权限_无法访问_03

这里我们可以看到文件的所有者UID,有了UID,那么我们开始伪造UID相同的用户

 

三、在客户端伪造UID相同的用户

javanfs共享目录 nfs共享目录权限_javanfs共享目录_04

我们新建一个用户,指定UID为1003,并设置密码

再来看一下这个文件的详细信息

javanfs共享目录 nfs共享目录权限_服务器_05

我们 可以看到,文件的所有者已经变成了user。好,那么我们测试一下能不能访问这个文件呢?

 

四、测试文件访问效果

在共享目录中切换到普通用户user,并查看文件内容

javanfs共享目录 nfs共享目录权限_服务器_06

可以看到,文件的内容已经显现出来。

有人说,你怎么知道远程服务器文件的所有者的名字叫做user。在这里也说一下,其实我也不知道名字是user,因为在linux系统中,判别用户的时候是通过用户的UID来判断的,并不是用户名。

javanfs共享目录 nfs共享目录权限_javanfs共享目录_07

 

 这个就是服务器上这个文件的详细信息,可以看到其实名字是user1的,名字并不相同。所以在我们建立用户的时候只需要将用户的UID和服务器上文件拥有着相同即可!!!