我有一个练习来创建一个名为 Projekte 的目录,我应该为 Auftrag 和 Support 组授予 r 和 w 权限,但其他组仅授予 r 权限
我刚刚意识到这是不可能的。我能做些什么?
谢谢你的帮助
答案1
您无法通过创建新组来做到这一点,因为您需要一些用户具有读取权限,而一些用户具有读取/写入权限。除非您需要来自Auftrag
和 的用户Support
具有读/写和每个人否则具有读取权限,在这种情况下,您可以创建一个包含来自Auftrag
和 的所有用户的组Support
,并设置组写入和全局读取。
或者,假设您的文件系统支持它们,您可以使用扩展 ACL: https://wiki.archlinux.org/index.php/Access_Control_Lists
例如:
# setfacl -m "g:Auftrag:rw" /file/path
# setfacl -m "g:Support:rw" /file/path
答案2
我必须假设目标还包括执行位才能更改到目录。
成为 root 用户。
sudo -i
创建目录。 (root 用户是所有者和组所有者。)
mkdir Projekte
定义权限。让我们只允许 root 访问它,以突出 ACL 的影响。
chmod 0700
现在使用 ACL 增强标准权限。
setfacl -d -m g:Auftrag:7 Projekte
setfacl -m g:Auftrag:7 Projekte
setfacl -d -m g:Support:7 Projekte
setfacl -m g:Support:7 Projekte
setfacl -d -m o::5 Projeckte
setfacl -m o::5 Projeckte
上面,-m
开关是掩码,开关-d
使掩码成为目录中所有新文件系统对象的默认掩码。不需要使用八进制值。同样可以写成如下。
setfacl -d -m g:Auftrag:rwx Projekte
setfacl -m g:Auftrag:rwx Projekte
setfacl -d -m g:Support:rwx Projekte
setfacl -m g:Support:rwx Projekte
setfacl -d -m o::r-x Projeckte
setfacl -m o::r-x Projeckte
用户、组和其他掩码的工作方式相同:g:groupname:---
或组合使用:u:username:---,g:groupname:---,o::---
,其中o
表示其他。不指定用户名或组名会将掩码应用于当前用户/组所有权。
请注意如何应用蒙版和默认蒙版。掩码(不带-d
)适用于目录本身。掩码(带有-d
)适用于目录中的所有新文件系统对象。这很容易忘掉这个。