NAS中的NFS文件共享问题

我们买了一台新的H-NAS服务器,运行良好。 我们为Subversion版本库创build了500GB的空间,并创build了nfs共享。

当我创build一个新目录时,所有者和组显示为如下所示的nobody nogroup组。

 drwxr-xr-x 2 nobody nogroup 2048 2013-07-03 19:09 test 

我在nfs共享上创build了一个svn仓库,当我试图改变用户&组时,它说操作不被允许。 这与nfs共享挂载有关。

我执行mount 10.9.17.59:/subversion /subversion命令mount 10.9.17.59:/subversion /subversion nfs共享。 它正确安装。

当我执行chown -R www-data:www-data REPO-NAME是说操作不允许。

你能告诉我,可能是什么问题。 请帮我解决这个问题。

NFS(版本4之前)简单地信任客户为任何特定操作(创build文件,读取文件等)声明的UID和GID。 这有一个明显的缺点,一个恶意的客户端可以说谎的UID和GID。 如果它说谎并且说“我是UID 0”,那么服务器将认为它可以访问导出上的所有文件。 这是坏的。

为了解决这个问题,有一个设置: root_squash 。 这个设置意味着,“如果你说你是UID 0,我会认为你的意思是UID没有人。” 客户仍然可以说谎,但他们不能成为根。 这很好,但有一些缺点:

  • 你不能通过NFS chown文件(因为只有root可以做到这一点)
  • 您不能创build根拥有的文件或目录。

从本质上讲,在NFS共享中创build根文件和目录的最佳select是login到服务器并在本地创build它们。 对于所有其他操作,请使用非root帐户。

你可能会试图用no_root_squashclosures这个保护,但那会是Bad™。 要看到攻击者窃取或删除所有文件有多容易,可以使用NFSpy 。 至less阅读自述文件以了解各种选项的安全含义。