![如何在 Linux 中使用 ACL 设置默认权限?](https://linux22.com/image/1405327/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%AD%E4%BD%BF%E7%94%A8%20ACL%20%E8%AE%BE%E7%BD%AE%E9%BB%98%E8%AE%A4%E6%9D%83%E9%99%90%EF%BC%9F.png)
我有两个组group1
和group2
。
我需要group1
用户能够读写(rwx) 中的用户拥有的文件group2
,但 中的用户group2
无法写入(rx) 文件group1
。
组中的所有用户都可以读取但不能写入同一组 (rx) 中的文件
我知道我可以使用 ACL(访问控制列表)来处理它。
setfacl -m g:group1:rwx "directory owned by a group2 user"
问题是必须为每个新文件夹设置它。有没有办法将其设置为默认值,以便每个新group2 user's
文件/文件夹都应用此权限?
如果我在 中创建新用户,是否会应用此默认设置group2
?
我知道当创建新用户时,正常权限会被复制到/etc/skel
主文件夹,但是如何让 acl 权限也被复制呢?
答案1
默认权限为“-d”。因此,您可以使用以下命令:
setfacl -d -m g:group1:rwx "Main directory owned by group2 user"
还请检查有效权利使用 getfacl。您可能还必须设置掩码。
答案2
您不需要 ACL。
将组 1 中的所有用户也放入组 2。然后确保将 setgid 位放入目录中:所有新文件都将归目录所有者所有,并具有类似的权限(setgid 将添加到新子目录中)。
# Setup as root
mkdir -p /tmp/test/1
chgrp group1 /tmp/test/1
chmod g+wsx,o= /tmp/test/1
mkdir -p /tmp/test/2
chgrp group2 /tmp/test/2
chmod g+ws,o= /tmp/test/2
# user1 is in groups users (primary gid), group1, group2
# user2 is in groups users (primary gid), group2
# as user1:users
mkdir -p /tmp/test/{1,2}/d1
touch /tmp/test/{1,2}/{f1,d1/f1}
# as user2:users
mkdir -p /tmp/test/{1,2}/d2
touch /tmp/test/{1,2}/{f2,d2/f2}
# check the ownerships on everything
ls -la /tmp/test/{1,2}/{f{1,2},d{1,2},d{1,2}/f{1,2}}
如果您确实想坚持使用 ACL,则需要查看默认 ACL,对它们执行与上述类似的操作。
至于添加新用户/etc/skel/
,恐怕您运气不佳,因为 stockuseradd
命令在复制 /etc/skel/ 时不会保留任何 ACL 或 xattrs。