如果 chown 可以更改组,为什么要创建 chgrp?

如果 chown 可以更改组,为什么要创建 chgrp?

因此,它chown可以让您更改文件和/或目录的所有者和组。但也有chgrp一些只会改变群体。为什么被chgrp创建?这不是多余的吗?

答案1

chown最初无法设置组。后来,一些实现将其添加为chown user.group,一些实现添加为chown user:group,直到最终标准化(强调我的):

4.3 BSD 指定方法所有者和组被包含在 POSIX.1-2008 的本卷中,因为:

在某些情况下,使用 chgrp 和 chown(仅更改用户 ID)实用程序无法实现所需的结束条件。 (如果当前所有者不是所需组的成员,并且所需所有者也不是当前组的成员,则 chown() 函数可能会失败,除非同时更改所有者和组。)

即使它们可以独立更改,在同时更改两者的情况下,由于被迫调用这两个实用程序,也会导致 100% 的性能损失。

即使现在:

  • chown :group仅更改组是不便携或标准的。
  • chown user:在用户数据库中分配主要组user也不标准。

答案2

更改文件的用户所有者* 时需要 root 权限。

普通用户可以将文件的组所有者更改为他/她所属的另一个组。

也许从这个特权的角度来看,将它们分开是有意义的,尤其是在 sudo 之前的时代。就像chown可以用一组“管理员”进行的操作一样setuid,允许“管理员”组的成员更改文件的用户所有者。

* 为了与 ugo 保持一致,我使用“用户所有者”、“组所有者”和“其他”。将“o”与“所有者”混淆是一个常见的错误。

相关内容