是否可以创建“负”ACL?

是否可以创建“负”ACL?

是否可以创建 ACL 来否定访问特定用户(例如jdoe)特定文件?

我对 ACL 的简单解决方案不感兴趣,该解决方案向除 之外的所有用户提供对文件的访问权限jdoe。此解决方案的缺点是系统中连续创建的任何用户都无法访问该文件。

创建除此之外的所有用户的组jdoe并授予组对文件的访问权限也有同样的缺点。

该命令setfacl -x u:jdoe /path/file不起作用,因为它仅删除创建的 ACL。

答案1

当然,为了证明,以 root 身份......

touch /tmp/test
setfacl -m u:jdoe:--- /tmp/test
getfacl /tmp/test
su - jdoe
cat /tmp/test
exit
rm /tmp/test

默认情况下也可以对目录中的每个文件执行此操作:

mkdir /var/data/not-for-jdoe
setfacl -m u:jdoe:--- /var/data/not-for-jdoe
setfacl -d -m u:jdoe:--- /var/data/not-for-jdoe

上面的-m开关是掩码,并且-d开关使其成为目录中所有新文件系统对象的默认掩码。可以---有其他权限值,例如:

  • rwx
  • r--
  • rw-
  • r-x
  • 7
  • 4
  • 6
  • 5

该组和其他蒙版的工作方式相同:g:groupname:---或组合使用:u:username:---,g:groupname:---,o::---。不指定用户名或组名会将掩码应用于当前用户/组所有权。

答案2

setfacl是来自已弃用的命令,因为在 1997 年 POSIX ACL 草案提案中被撤回,该提案从未标准化。

setfacl不能这样做。

如果您有支持 NFSv4/NTFS ACL 的现代操作系统,则可以执行此操作。参见例如http://schillix.sourceforge.net/man/man1/chmod.1.html

检查从第 19 页开始的示例。

这适用于 Solaris,但 AIX 和 OSX 也支持 NFSv4 ACL。

相关内容