删除 Linux 权限中的 ACL

删除 Linux 权限中的 ACL

我在 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 权限是不够的,而且还

  1. 默认权限(掩码)
  2. 即使 selinux 已被禁用,您也必须从文件系统上应用它的位置明确地将其删除。

所以对我来说完整的解决方案是:

  1. #sudo setfacl -Rbk <parent_dir>这里 -R 递归,-b 删除用户/组的所有权限 -k 删除默认 acl(掩码)。通过发出此命令,它将删除 ls 输出中看到的加号 (+),但不会删除 ls 输出中的点 (.) 符号。
  2. #setfattr -x security.selinux <file>这将删除 selinux 上下文,并从 ls 输出中删除点 (.) 符号。此命令不是递归的,因此要使其在整个目录及其后代上起作用,您可以使用 find 命令,如下所示:#sudo find <parent_dir> -exec setfattr -x security.selinux {} \;

相关内容