我想我更了解文件权限在linux中是如何工作的.但是,我真的不明白为什么他们分成三个级别而不是两个级别.
我想回答以下问题:
>这是故意的设计还是补丁?那就是 – 所有者/团体的权限是与一些理由一起设计和创建的,还是他们一个接一个地来回答需求?
>是否存在用户/组/其他方案有用但组/其他方案不够用的情况?
对第一个问题的答案应引用教科书或官方讨论区.
我考虑过的用例是:
>私有文件 – 通过为每个用户创建一个组非常容易获得,这通常在许多系统中完成.
>只允许所有者(例如系统服务)写入文件,只允许某个组读取,并拒绝所有其他访问 – 此示例的问题是,一旦要求组具有写访问权限, user / group / other失败了.两者的答案都是使用ACL,并且没有理由,恕我直言,存在所有者权限.
编辑纠正“但团体/所有者计划方案不足以”……“组/其他……”.
解决方法:
历史
最初,Unix只拥有拥有用户和其他用户的权限:没有组.请参阅Unix版本1的文档,特别是chmod(1).因此,向后兼容性(如果没有其他内容)需要拥有用户的权限.
小组来了.允许在文件权限中涉及多个组的ACL要晚得多.
表现力量
拥有三个文件权限允许比只有两个权限更细粒度的权限,成本非常低(比ACL低很多).例如,文件可以具有模式rw-r —–:只能由拥有用户写入,可由组读取.
另一个用例是setuid可执行文件,只能由一个组执行.例如,具有模式rwsr-x —由root:admin拥有的程序仅允许admin组中的用户以root身份运行该程序.
“这种方案无法表达的权限”是一个反对它的可怕论据.适用的标准是,是否有足够的常见可表达案例证明成本合理?在这种情况下,成本是最小的,特别是考虑到用户/组/其他三联画的其他原因.
简单
每个用户拥有一个组具有较小但不是无关紧要的管理开销.私有文件的极端常见情况不依赖于此.创建私有文件(例如电子邮件传递程序)的应用程序知道它需要做的就是给文件模式600.它不需要遍历组数据库来寻找仅包含用户的组 – 和如果没有这样的团体或不止一个怎么办?
来自另一个方向,假设您看到一个文件,并且您想要审核其权限(即检查它们应该是什么).如果您只需要跟踪组定义,那么“只有用户可以访问,很好,接下来”这样会更容易. (这种复杂性是大量使用ACL或功能等高级功能的系统的祸根.)
正交
每个进程都作为特定用户和特定组执行文件系统访问(现代统一的更复杂规则,支持补充组).用户用于很多事情,包括测试root(uid 0)和信号传递权限(基于用户).在进程权限中区分用户和组以及区分文件系统权限中的用户和组之间存在自然对称性.
标签:linux,permissions
来源: https://codeday.me/bug/20190808/1624609.html