我有一些特定的Linux目录757权限。 我如何授予只读访问到user1?

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

有没有什么方法可以只读给user01? 请使用绑定挂载排除解决scheme,因为此目录包含大量的小文件。 绑定安装会在几天内导致0%的inode错误。

谢谢。

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

文件系统需要使用acl挂载选项(重新)挂载以启用ACL。 要在/ data卷上​​启用ACL,请执行以下操作:

 mount -o remount,acl /data 

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

然后, setfacl命令允许您更改ACL, getfacl将检索它们。

例如,给用户bob的读取权限:

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

ACL的可视化指示是GNU ls -l扩展输出的第11个权限列中的+

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

请查看本手册的实例,以获得比man 手册更多的用户友好解释。

实现这个的“正确”方式是ACL,这意味着遵循HBruijn提供的答案 。

但是,这并不是说使用传统的Unix文件权限来解决这个问题是不可能的。 在不使用ACL的情况下,可以实现相同的目标,如下所示:

  • 使文件由一个read-only-users
  • 将应该具有只读访问权限read-only-users放入read-only-users组。
  • 将文件的权限设置为757

为什么这个工作?

Unix文件的权限不被评估,所以最宽容的胜利,但根据文件的类。 这意味着特定文件类中的用户具有不同的权限集:

  • 所有者文件类 – 如果所有者执行操作,则针对所有者权限模式位(位掩码中的第一位)评估其操作。

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

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

在这种情况下,我们给文件一个独特的组,我们添加只读用户。 当评估权限时,该组的成员被限制为组权限位掩码,该位掩码明确禁止写入文件。 这达到了既定目标。

警告 – 文件所有者

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