我长期以来一直使用 CIFS 进行网络连接,并且我希望使用 NFS 进行 Linux 到 Linux 的文件分发。我有一个共享驱动器,我已在其上设置了粘性组,当通过 NFS 安装时,该驱动器似乎可以正常工作,除非 root 正在写入。
因此,在文件服务器上有一个名为 media 的目录,我已经执行了 应用 ACL setfacl -d -m u::rwx,g::rwx,o::r-x Media
,所以它看起来像这样:
drwsrwsrwx+ 16 chrishunter users 4096 Sep 25 06:10 Media
并按预期执行操作:
chrishunter@server:/media/disk1/Media$ touch file
chrishunter@server:/media/disk1/Media$ sudo touch file2
[sudo] password for chrishunter:
chrishunter@server:/media/disk1/Media$ sudo su
root@server:/media/Media# touch file3
root@server:/media/Media# ls -ltra file*
-rw-rw-r-- 1 chrishunter users 0 Sep 26 05:51 file
-rw-rw-r-- 1 root users 0 Sep 26 05:51 file2
-rw-rw-r-- 1 root users 0 Sep 26 05:52 file3
现在通过 NFS 挂载似乎没有应用 ACL,因此当我执行 sudo touch 文件时它看起来像这样:
chrishunter@client:/mnt/Media$ touch file
chrishunter@client:/mnt/Media$ sudo touch file2
[sudo] password for chrishunter:
chrishunter@client:/mnt/Media$ sudo su
root@client:/mnt/Media# touch file3
root@client:/mnt/Media# ls -ltra file*
-rw-rw-r-- 1 chrishunter users 0 Sep 26 06:09 file
-rw-r--r-- 1 root users 0 Sep 26 06:10 file2
-rw-r--r-- 1 root users 0 Sep 26 06:10 file3
因此看起来 NFS4 应该自动将其传播到客户端,通过运行nfs4_getfacl Media
我可以看到权限:
A::OWNER@:rwaDxtTcCy
A::GROUP@:rwaDxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rwaDxtcy
A:fdi:EVERYONE@:rxtcy
现在这对我说跟随男人实际上,所有权限都应该被继承,但在这种情况下并非如此。
注释表明它应与 ACL 一起安装。
chrishunter@server:/media/disk1/Media# tune2fs -l /dev/dm-0 | grep "Default mount options:"
Default mount options: acl
chrishunter@server:/media/disk1/Media# mount |grep media
/dev/mapper/vg1-lv1 on /media/disk1/Media type ext4 (rw,acl)
更新: 添加了出口内容,因为这是一个潜在的问题。
/media/Media 192.168.0.0/24(rw,no_root_squash,anonuid=1000,anongid=1000,sync,no_subtree_check)
答案1
经典 NFS 专门处理 root 用户。您可以尝试no_root_squash
在服务器上的导出文件中设置该选项。请参阅man exports