我已经在 nfs 客户端中为某个目录添加了 nfs4 acl,但是添加 nfs4 acl 后无法使用“chown/chgrp”,现在我想放弃 nfs4 acl,并恢复到原来的 linux 简单访问控制,该怎么做???
在标准 Linux ACL 中,我们可以用来setfacl -bn xxx file
删除所有 ACL,并返回到原始访问控制,但我不知道如何通过 nfs4_setfacl 来做到这一点...
答案1
- 创建一个随机文件来查看默认的 NFS4 ACL:
touch /tmp/foo
- 将默认 ACL 存储在文件中:
nfs4_getfacl /tmp/foo > /tmp/fooacl.txt
- 递归恢复 repo BAR 中的 ACL:
nfs4_setfacl -R -S /tmp/fooacl.txt /path/to/BAR
-R
如果太可怕的话,您也可以使用 find 命令:
find /path/to/BAR -exec nfs4_setfacl -S /tmp/fooacl.txt {} \;
如果您需要递归执行某些操作,我不会推荐 kofemann 的解决方案。或者在将其应用于您的 $HOME 之前务必对其进行测试。我在测试中得到了一个糟糕的结果,导致我无法访问自己的存储库。
答案2
我的解决方案如下:
nfs4_getfacl <file> | nfs4_setfacl -X - <file>