我想知道是否有人可以为我解释一下 Linux 权限。我有两组
Group A - Normal Users
Group B - File Changing group
我希望 B 组与 A 组几乎完全相同,但 B 组能够更改“每日消息”我如何设置它以便他们对 MOTD 具有写访问权限而 A 组只有读访问权限?
我想知道是否有人可以为我解释一下 Linux 权限。我有两组
Group A - Normal Users
Group B - File Changing group
我希望 B 组与 A 组几乎完全相同,但 B 组能够更改“每日消息”我如何设置它以便他们对 MOTD 具有写访问权限而 A 组只有读访问权限?
使用普通 UNIX ugo 权限,您只能将单个 UNIX 组分配给任何给定文件。在您的情况下,由于“普通用户”可能意味着“所有用户”,您可以chmod
将 MOTD 文件发送到664
(组读写,全部只读),并将chown
其发送到root:file_changers
(root 拥有的文件,并分配给 file_changers 组)。
使用 Linux ACL,您可以将多个组分配给一个文件。并非所有文件系统都支持 ACL。您可以使用setfacl
更改权限:
setfacl -m g:regular:r motd
setfacl -m g:file_changers:rw motd
请注意,在我看来,ACL 通常可能是矫枉过正的。如果您没有为他们做好准备,他们可能会使权限管理变得麻烦。如果需要,请仔细考虑;否则,请坚持使用更简单的 UNIX 权限系统。
没有 ACL:s 的解决方案:
您可以将 motd 文件移动到组 A 可以读取的目录中,并使该文件可以由组 B 写入。然后将符号链接从原始位置放置到新位置。
示例(假设 motd 在 /etc/motd 中):
# mkdir /etc/motd-dir
# mv /etc/motd /etc/motd-dir/
# chown groupA /etc/motd-dir
# chown groupB /etc/motd-dir/motd
# chmod 750 /etc/motd-dir
# chmod 664 /etc/motd-dir/motd
# ln -s /etc/motd-dir/motd /etc/motd
此解决方案要求组 B 的所有成员也必须属于组 A,以便他们可以访问目录。