是否可以创建一个 ACL 来拒绝特定用户(例如jdoe
)访问特定文件?
我对 ACL 的微不足道的解决方案不感兴趣,该解决方案允许所有用户访问文件,除了jdoe
. 此解决方案的缺点是系统中连续创建的任何用户都无法访问该文件。
创建一个除所有用户外的jdoe
组并授予组访问该文件也有同样的缺点。
该命令setfacl -x u:jdoe /path/file
将不起作用,因为它仅删除创建的 ACL。
当然,为了证明,作为根......
touch /tmp/test
setfacl -m u:jdoe:--- /tmp/test
getfacl /tmp/test
su - jdoe
cat /tmp/test
exit
rm /tmp/test
Run Code Online (Sandbox Code Playgroud)
默认情况下,它也可以对目录中的每个文件执行:
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
Run Code Online (Sandbox Code Playgroud)
上面,-m
开关是掩码,-d
开关使它成为目录中所有新文件系统对象的默认掩码。该---
可以有其他的许可值,例如:
rwx
r--
rw-
r-x
7
4
6
5
组和其他掩码的工作方式相同:g:groupname:---
或组合:u:username:---,g:groupname:---,o::---
。不指定用户名或组名会将掩码应用于当前用户/组所有权。