因此,它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”与“所有者”混淆是一个常见的错误。