![尝试访问受 ACL 保护的目录时 ls 会抛出错误](https://linux22.com/image/207293/%E5%B0%9D%E8%AF%95%E8%AE%BF%E9%97%AE%E5%8F%97%20ACL%20%E4%BF%9D%E6%8A%A4%E7%9A%84%E7%9B%AE%E5%BD%95%E6%97%B6%20ls%20%E4%BC%9A%E6%8A%9B%E5%87%BA%E9%94%99%E8%AF%AF.png)
我已经使用 setfacl 设置了一个目录和一些文件。
jobq@workstation:~/Pool$ getfacl /etc/jobq
getfacl: Removing leading '/' from absolute path names
# file: etc/jobq
# owner: root
# group: jobq
user::rwx
user:jobq:rw-
group::r-x
group:jobq:rwx
mask::rwx
other::r-x
jobq@workstation:~/Pool$ sudo getfacl /etc/jobq/log.txt
getfacl: Removing leading '/' from absolute path names
# file: etc/jobq/log.txt
# owner: root
# group: jobq
user::rw-
group::rw-
group:jobq:rwx
mask::rwx
other::r--
jobq@workstation:~/Pool$ groups
jobq
但是,当我运行命令时,例如
ls -al /etc/jobq
我收到权限错误:
ls: cannot access '/etc/jobq/log.txt': Permission denied
total 0
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
由于用户jobq
位于组中jobq
,因此他们应该有权访问该目录。我有什么误解吗?我怎样才能解决这个问题?
答案1
问题出在以下 ACL 上/etc/jobq
:
user:jobq:rw-
这意味着用户jobq
无法“搜索”目录,从而阻止ls
显示其内容。
要解决此问题,您需要添加x
权限。看执行与读取位。 Linux 中的目录权限如何工作?了解详情。
也可以看看限制“组”权限但开放“世界”权限?了解为什么组权限在这里没有帮助。因此,另一个解决方案是删除 的用户 ACL jobq
,并改为依赖组权限。