Если chown может менять группы, зачем была создана chgrp?

Если chown может менять группы, зачем была создана chgrp?

Итак, есть 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" с "владельцем".

Связанный контент