
Итак, есть chown
, который позволяет вам изменить владельца и группу файлов и/или каталогов. Но есть также , chgrp
который меняет только группу. Зачем был chgrp
создан? Разве это не избыточно?
решение1
chown
изначально не мог задать группу. Позже некоторые реализации добавили его как chown user.group
, некоторые как chown user:group
пока он в конечном итоге не сталстандартизированный(выделено мной):
Метод указания BSD 4.3как владелец, так и группабыл включен в этот том POSIX.1-2008 по следующим причинам:
Бывают случаи, когда желаемое конечное условие не может быть достигнуто с помощью утилит chgrp и chown (которые только изменяют идентификатор пользователя). (Если текущий владелец не является членом желаемой группы, а желаемый владелец не является членом текущей группы, функция chown() может завершиться ошибкой, если только владелец и группа не будут изменены одновременно.)
Даже если бы их можно было изменить независимо, в случаях, когда изменяются оба, происходит 100%-ное падение производительности, вызванное необходимостью вызова обеих утилит.
Даже сейчас:
chown :group
изменение только группы не является переносимым или стандартным.chown user:
Назначение основной группыuser
в базе данных пользователей также не является стандартным.
решение2
Для изменения пользователя-владельца* файла требуются права root.
Обычный пользователь может изменить группу-владельца файла на другую группу, членом которой он/она является.
Может быть, с этой точки зрения привилегий имело смысл держать их отдельно, особенно в эпоху до sudo. Как chown
можно было сделать setuid
с группой 'admin', позволяя членам группы 'admin' менять пользователя-владельца файлов.
* Я использую "пользователь-владелец" и "группа-владелец" и "другие" для согласованности с ugo. Распространенной ошибкой является путаница "o" с "владельцем".