
Es gibt also chown
eines, mit dem Sie den Besitzer und die Gruppe von Dateien und/oder Verzeichnissen ändern können. Es gibt aber auch chgrp
eines, mit dem Sie nur die Gruppe ändern können. Warum wurde es chgrp
erstellt? Ist es nicht überflüssig?
Antwort1
chown
konnte die Gruppe zunächst nicht festlegen. Später fügten einige Implementierungen sie als hinzu chown user.group
, einige als, chown user:group
bis sie schließlichstandardisiert(Hervorhebung von mir):
Die 4.3 BSD-Methode zur Angabesowohl Eigentümer als auch Gruppewurde in diesen Band von POSIX.1-2008 aufgenommen, weil:
Es gibt Fälle, in denen die gewünschte Endbedingung mit den Dienstprogrammen chgrp und chown (die nur die Benutzer-ID geändert haben) nicht erreicht werden konnte. (Wenn der aktuelle Besitzer kein Mitglied der gewünschten Gruppe ist und der gewünschte Besitzer kein Mitglied der aktuellen Gruppe ist, kann die Funktion chown() fehlschlagen, es sei denn, Besitzer und Gruppe werden gleichzeitig geändert.)
Selbst wenn sie unabhängig voneinander geändert werden könnten, würde in Fällen, in denen beide geändert werden, die Leistung um 100 % beeinträchtigt, weil beide Dienstprogramme aufgerufen werden müssten.
Selbst jetzt:
chown :group
Nur die Gruppe zu ändern ist weder portierbar noch Standard.chown user:
Auch die Zuweisung der primären Gruppeuser
in der Benutzerdatenbank ist nicht Standard.
Antwort2
Zum Ändern des Benutzerbesitzers* einer Datei sind Root-Befugnisse erforderlich.
Ein normaler Benutzer kann den Gruppenbesitzer einer Datei in eine andere Gruppe ändern, deren Mitglied er/sie ist.
Vielleicht war es aus dieser Berechtigungsperspektive sinnvoll, sie getrennt zu halten, insbesondere in der Zeit vor Sudo. So chown
hätte man es beispielsweise mit einer Gruppe „Administratoren“ machen können setuid
, die es Mitgliedern der Gruppe „Administratoren“ ermöglicht, den Benutzerbesitzer von Dateien zu ändern.
* Ich verwende „user-owner“, „group-owner“ und „others“ aus Konsistenzgründen mit ugo. Die Verwechslung von „o“ mit „owner“ ist ein häufiger Fehler.