答案1
是的,文件 ACL 可以做到这一点。您需要的是授予遍历 ( x
) 权限,而不是读取 ( r
) 权限。对于目录:
- Traverse 允许用户沿目录树遍历目录节点。用命令术语来说,它允许他们运行
cd directory
。 - Read 允许用户读取目录的内容。用命令术语来说,它允许用户运行
ls directory
。
因此对于图表中的用户 1:
# Allow user1 to cd /home/user2/folder/subfolder/subfolder:
setfacl -R -m u:user1:x /home/user2/folder/subfolder/subfolder
# Allow user1 to ls /home/user2/folder/subfolder/subfolder:
setfacl -m u:user1:r /home/user2/folder/subfolder/subfolder
注意:
- 在第一个命令中,您需要
-R
(recursive) 标志,因为您需要设置x
所有父目录的权限。如果没有该标志,即使您授予 user1 读取权限,他们也无法访问叶目录并读取它。 - 在第二个命令中不想要
-R
,因为您只想授予叶目录的读取权限,而不是其任何父目录的读取权限。