将 ACL 与多个默认组结合使用

将 ACL 与多个默认组结合使用

我浏览了类似问题的答案,并通过阅读有关 Linux ACL 的教程刷新了我对 ACL 的记忆。然而,我仍然感到困惑。我做错了什么,或者我不明白什么?

我有一个使用该选项安装的文件系统acl

user@host:/srv$ grep srv /etc/fstab
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /srv ext4 relatime,nodev,nosuid,user_xattr,acl 0 2

用户,用户,是一个成员开发者团体。

user@host:/srv$ id
uid=1000(user) gid=1000(user) groups=1000(user),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),1001(devs)

umask 正常。

user@host:/srv$ umask
0022

创建一个目录;设置组所有权和权限。

user@host:/srv$ sudo mkdir lib; sudo chmod 0750 lib && sudo chgrp www-data lib
user@host:/srv$ ls -l
total 24
drwxr-x---  2 root www-data  4096 May 21 18:00 lib
drwx------  2 root root     16384 Feb 17 18:22 lost+found
drwxr-xr-x  3 root www-data  4096 May 21 17:25 www

ACL 应用于新目录。

user@host:/srv$ sudo setfacl -d -m g:devs:5 lib/
user@host:/srv$ getfacl lib
# file: lib
# owner: root
# group: www-data
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:devs:r-x
default:mask::r-x
default:other::---

我想我应该能够获得目录列表,但我不能。

user@host:/srv$ ls lib/
ls: cannot open directory lib/: Permission denied

答案1

嘎——捂脸!该-d开关用于 lib 目录中的新文件和目录。必须为 lib 目录本身定义显式 ACL。

删除 ACL。

user@host:/srv$ sudo setfacl -b lib
user@host:/srv$ ls -l
total 24
drwxr-x---  2 root www-data  4096 May 21 19:06 lib
drwx------  2 root root     16384 Feb 17 18:22 lost+found
drwxr-x---  3 root www-data  4096 May 21 17:25 www

设置默认ACL。

user@host:/srv$ sudo setfacl -d -m g:devs:5 lib/
user@host:/srv$ getfacl lib
# file: lib
# owner: root
# group: www-data
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:devs:r-x
default:mask::r-x
default:other::---

测试 ACL 是否允许成员开发者组使用ls

user@host:/srv$ ls lib/
ls: cannot open directory lib/: Permission denied

为目录添加新的 ACL,不带-d(默认)开关。

user@host:/srv$ sudo setfacl -m g:devs:5 lib/
user@host:/srv$ ls lib/
user@host:/srv$ ls -l lib/
total 0

将文件复制到 lib 目录中。

user@host:/srv$ sudo cp /etc/hostname lib/
user@host:/srv$ cat lib/hostname
host

显示权限。

user@host:/srv$ ls -l lib/
total 4
-rw-r-----+ 1 root root 6 May 21 19:15 hostname

显示 ACL。

user@host:/srv$ getfacl lib/hostname
# file: lib/hostname
# owner: root
# group: root
user::rw-
group::r-x                      #effective:r--
group:devs:r-x                  #effective:r--
mask::r--
other::---

我很高兴收到有关此事的任何进一步见解。

相关内容