已挂载的 NFS 分区上的 chown 给出“不允许操作”

Dis*_*sco 38 permissions nfs chown

我有一个使用 NFS 在本地安装的远程分区。

'mount' 给出

192.168.3.1:/mnt/storage-pools/ on /pools type nfs (rw,addr=192.168.3.1)
Run Code Online (Sandbox Code Playgroud)

在我有出口的服务器上:

/mnt/storage-pools   *(rw,insecure,sync,no_subtree_check)
Run Code Online (Sandbox Code Playgroud)

然后我试试

 touch /pools/test1
 ls -lah
 -rw-r--r--  1 65534 65534    0 Dec 13 20:56 test1
 chown root.root test1
 chown: changing ownership of `test1': Operation not permitted
Run Code Online (Sandbox Code Playgroud)

我错过了什么?拉我的头发。

Ser*_*sov 31

默认情况下,root_squash导出选项是打开的,因此 NFS 不允许来自客户端的 root 用户以 root 身份在服务器上执行操作,而是将其映射到由anonuidanongid选项指定的用户/组 ID (默认值 = 65534)。这可以/etc/exports与其他导出选项一起配置。


lar*_*sks 29

阅读exports(5)有关“压根”的部分:

很多时候,在访问 NFS 服务器上的文件时,客户机上的 root 用户也被视为 root 用户是不希望的。为此,uid 0 通常映射到不同的 id:所谓的匿名或无人 uid。这种操作模式(称为“root squashing”)是默认的,可以用 no_root_squash 关闭。

所以你要:

/mnt/storage-pools   *(rw,insecure,sync,no_subtree_check,no_root_squash)
Run Code Online (Sandbox Code Playgroud)

(编辑错字)