我想创建一个目录,其中的所有文件都可由一组特定用户读取/写入。这应该适用于此目录中的新文件/目录,以及复制到此目录中的文件/目录。
现在我对 ACL 掩码感到困惑。我尝试了以下方法:
创建具有以下 ACL 的目录:
$ getfacl dirWithAcl
# file: dirWithAcl
# owner: rainer
# group: users
user::rwx
user:nobody:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:nobody:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
这样,在里面创建文件和目录就dirWithAcl
可以正常工作。
但是现在我创建了一个测试文件夹外部此文件夹。根据我的 umask,它具有以下权限:
drwxr-xr-x 2 rainer users 4.0K Sep 11 08:21 testdir/
dirWithAcl
当我现在使用将此文件夹复制到 时cp -r testdir dirWithAcl
,副本具有以下 ACL:
getfacl testdir
# file: testdir
# owner: rainer
# group: users
user::rwx
user:nobody:rwx #effective:r-x
group::rwx #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:user:nobody:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
mask 已经设置为 rx,好像是先将原 testdir 目录的组权限转换为 mask,然后才应用默认组。
如果我现在再次将副本的组权限设置为 rwx (实际上已经是),则掩码会突然更新为正确值:
$ setfacl -m "group::rwx" testdir
$ getfacl testdir
# file: testdir
# owner: rainer
# group: users
user::rwx
user:nobody:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:nobody:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
有人能解释一下这种行为吗?我也很高兴能被重定向到一些比手册页更详细的关于 ACL 的解释。
此外,我想知道是否可以将文件夹中所有文件的组权限设置为 --- 并且仅使用 ACL 控制权限。新文件和复制文件都获得 mask:rwx
感谢您的帮助:)
答案1
要将 ACL 从一个目录复制到另一个目录,您必须cp
使用开关指示执行此操作-a
。换句话说,使用cp -a src dst
编辑 继承的 ACL 不会授予文件原本不具备的权限。换句话说,如果源文件没有组写入权限,则不会通过简单地将其移动到启用 ACL 的目录中来继承权限。
答案2
cp -r --no-preserve=mode src dst
作品。