我们买了一台新的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共享中创build根文件和目录的最佳select是login到服务器并在本地创build它们。 对于所有其他操作,请使用非root帐户。
你可能会试图用no_root_squash
closures这个保护,但那会是Bad™。 要看到攻击者窃取或删除所有文件有多容易,可以使用NFSpy 。 至less阅读自述文件以了解各种选项的安全含义。