Ubuntu 18.04 上 setfacl 的意外结果

Ubuntu 18.04 上 setfacl 的意外结果

我尝试在 Ubuntu 18.04 上使用 setfacl,但得到了意想不到的结果。在这里的简单示例中,有一个目录:home,2 个用户:我、她和一个由这两个用户组成的组。文件系统已启用 acl 挂载,我使用 tune2fs 检查了这一点。

这是我用来设置权限的脚本的一部分:

#remove all chmod perms
chmod -R u=,g=,o=   home
# remove default acl settings
setfacl -R -b -k    home
# set default acl 
setfacl -dR -m u:me:rwx,g:we:rwx home
# set actual permissions
setfacl -R -m u:me:rwx,g:we:rwx home

ls -al home
d---rwx---+  9 me    we  4096 sep  5 18:36 .
d---rwx---+  8 me    we  4096 sep  4 15:27 energy
d---rws---+ 13 she   we  4096 sep  4 15:26 she

# Very strange , the chmod group bits are set!
# setfacl should not touch these bits?

# check acl bits
getfacl home

# getfacl output
# file: home
# owner: me
# group: we
user::---
user:me:rwx
group::---
group:we:rwx
mask::rwx
other::---
default:user::---
default:user:me:rwx
default:group::---
default:group:we:rwx
default:mask::rwx
default:other::---

# as expected

# run as user: me
ls home
# result of: ls home:
Permission denied

# Although the acl bits are ok, permission denied!
# It looks like the system api does not use acl bits

问题:

1 标准 chmod 位与 acl 位不同吗?

2 为什么 setfacl 会修改 chmod 组位?

每当我运行:setfacl -R -mu:someuser:rw directory

chmod 组位已设置。

3 aclbits 已经设置为允许访问,但是访问仍然被拒绝,为什么?

答案1

最后我找到了一些完整的文档来解释细节。我以错误的方式使用了 setfacl 命令:当为所有者用户和所有者组设置 acl 时,命令是:

setfacl -R -m u::rwX,g::rwX dir

当 acl 用于非所有者主体时,使用显式用户和/或组的语法。互联网上的大多数示例都处理这些情况,没有什么指导意义。此 acl 机制显然基于从未实现的 Posix 草案。我认为此机制不太适合现有的 unix 权限系统。

相关内容