为什么这会起作用?

为什么这会起作用?

757 允许所有者读取、写入、执行 + 所有者组读取、执行 + 其他人读取、写入、执行。

有没有办法专门允许 user01 只读?请排除绑定安装的解决方案,因为此目录包含大量小文件。绑定安装会在几天内导致 0% 可用 inode 错误。

谢谢。

答案1

您正在寻找访问控制列表(ACL),它提供比传统用户/组/其他权限更精细的访问控制。

需要使用aclmount 选项(重新)挂载文件系统以启用 ACL。要在 /data 卷上启用 ACL:

mount -o remount,acl /data

和/或编辑/etc/fstab以使更改持久。

然后setfacl命令允许你更改 ACL 和getfacl将会检索它们。

例如,授予用户 bob 读取权限:

setfacl -m u:bob:r Data
getfacl Data

# file: Data/ 
# owner: herman 
# group: staff 
user::rwx 
user:bob:r-- 

GNU扩展输出+中的第 11 个权限列直观地表明 ACL 存在:ls -l

drwx------+   39 herman  staff     1326 Nov 23 09:58 Data
          ^
          |_ + to indicate ACL's (or . to indicate SELinux context) 

例如检查本手册获得比手册页更用户友好的解释。

答案2

实现此目的的“正确”方法是 ACL,这意味着遵循HBruijn 提供的答案

但是,这并不意味着无法使用传统的 Unix 文件权限来解决这个问题。如果不使用 ACL,也可以通过以下方式实现相同的目标:

  • 使该文件归某个组所有read-only-users
  • 将具有只读访问权限的用户放入read-only-users组中。
  • 将文件的权限设置为757

为什么这会起作用?

Unix 文件权限评估不会以最宽松的权限为准,而是根据文件类别进行评估。这意味着特定文件类别中的用户具有不同的权限集:

  • 所有者文件类别 - 如果所有者执行某个操作,则根据所有者权限模式位(位掩码中的第一位数字)评估他/她的操作。

  • 团体文件类别 - 如果用户不是文件所有者,但是是文件组的成员,则控制该操作的有效权限是组权限模式位(位掩码中的第二位数字)。

  • 其他文件类别 - 如果用户既不是文件所有者,也不是文件组的成员,则适用其他权限模式位(位掩码中的第三位数字)。

在本例中,我们为文件指定一个不同的组,并向该组添加只读用户。评估权限时,该组的成员将被限制在组权限位掩码内,该位掩码明确禁止写入文件。这实现了既定目标。

警告 - 文件所有者

出于显而易见的原因,您无法使用此技术锁定文件所有者。即使所有者是 的成员,分配给所有者的权限也始终优先于组权限read-only-users。无论如何,即使您确实限制了所有者,在标准 Unix 系统上,他们始终能够调用chmod(1)为自己授予权限,而不管他们当前的位掩码是什么。

相关内容