Mal*_*ppa 11
让我说清楚:
您希望group1对特定文件夹具有读/写访问权限。
您希望group2对该文件夹具有只读访问权限。
您不想others拥有对该文件夹的读取权限。
默认情况下,Linux 的权限系统不允许这样做。原因很简单:对于每个 inode,只有三位 ( rwx) 描述特定组的权限,即拥有该 inode 引用的文件/目录的组。任何不是所有者也不属于该组的用户将自动归入others。在实践中,这通常是足够的,但在某些极少数情况下可能不够。
好消息是 Linux 实际上支持ACL(访问控制列表),它允许进行更细粒度的访问控制。为了启用 ACL,您必须添加acl到挂载选项。例如,如果包含要设置高级访问控制的目录的分区按/etc/fstab如下方式安装在:
/dev/sda1 / ext4 defaults 0 1
Run Code Online (Sandbox Code Playgroud)
...你可以将其更改为:
/dev/sda1 / ext4 acl,defaults 0 1
Run Code Online (Sandbox Code Playgroud)
然后您需要重新挂载文件系统(例如,mount -o remount /dev/sda1),或者简单地重新启动。
接下来让我们确保您的文件夹/path/to/folder授予group1. 权限应该类似于
drwxrwx--- 2 owner group1 4096 Dec 14 02:42 folder
Run Code Online (Sandbox Code Playgroud)
此外,您希望授予 读取访问权限group2,而根本不others授予 访问权限。为此,请发出命令
setfacl -m g:group2:rx /path/to/folder
Run Code Online (Sandbox Code Playgroud)
就是这样。您可以稍后使用 来查看该文件夹的 ACL 权限getfacl,即:
getfacl /path/to/folder
Run Code Online (Sandbox Code Playgroud)
此处的更多信息:ACL:扩展文件权限。
这些命令应该有效:
sudo chown -R OWNER-USERNAME:GROUPNAME /PATH/TO/Folder
sudo chmod -R 664 /PATH/TO/Folder
Run Code Online (Sandbox Code Playgroud)
这有望为所有者和组提供读写访问权限,以及对“其他”(应包括Group2 )的只读访问权限。
要重置任何更改以便只有所有者才能访问,请运行:
sudo chown -R OWNER-USERNAME:OWNER-USERNAME /PATH/TO/Folder
sudo chmod -R 600 /PATH/TO/Folder
Run Code Online (Sandbox Code Playgroud)