我在 Linux samba 服务器上有一些文件,它们的权限旁边有一个加号-rwxrwx---+
。我找到了 setfacl 命令来调整 acl 设置,我想完全删除 ACL,而不必调整 acl 设置。我该怎么做,以便用户可以访问他们需要的文件,并且权限会-rwxrwx---
在 Linux 中显示?
答案1
您还应该找到了这个setfacl
选项:
-b, --remove-all remove all extended ACL entries
因此,为了删除 ACL,只需setfacl -b -R
在目录上运行,chmod g=rwx
然后。(可能需要修复组权限,因为目前您的更改实际上是更改 ACL“掩码”。)
请注意,Samba 直接向 SMB 客户端公开 POSIX 权限和 ACL(将它们转换为 SMB/NTFS ACL),因此可以在 Windows 中通过手动删除除 3 个“Unix”访问条目之外的所有条目来执行相同的操作。
答案2
我知道这是一个老问题,但我遇到了同样的问题,而接受的答案并没有解决它。这是因为删除用户/组的 ACL 权限是不够的,而且还
- 默认权限(掩码)
- 即使 selinux 已被禁用,您也必须从文件系统上应用它的位置明确地将其删除。
所以对我来说完整的解决方案是:
#sudo setfacl -Rbk <parent_dir>
这里 -R 递归,-b 删除用户/组的所有权限 -k 删除默认 acl(掩码)。通过发出此命令,它将删除 ls 输出中看到的加号 (+),但不会删除 ls 输出中的点 (.) 符号。#setfattr -x security.selinux <file>
这将删除 selinux 上下文,并从 ls 输出中删除点 (.) 符号。此命令不是递归的,因此要使其在整个目录及其后代上起作用,您可以使用 find 命令,如下所示:#sudo find <parent_dir> -exec setfattr -x security.selinux {} \;