Wenn chown Gruppen ändern kann, warum wurde dann chgrp erstellt?

Wenn chown Gruppen ändern kann, warum wurde dann chgrp erstellt?

Es gibt also chowneines, mit dem Sie den Besitzer und die Gruppe von Dateien und/oder Verzeichnissen ändern können. Es gibt aber auch chgrpeines, mit dem Sie nur die Gruppe ändern können. Warum wurde es chgrperstellt? Ist es nicht überflüssig?

Antwort1

chownkonnte die Gruppe zunächst nicht festlegen. Später fügten einige Implementierungen sie als hinzu chown user.group, einige als, chown user:groupbis 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 :groupNur die Gruppe zu ändern ist weder portierbar noch Standard.
  • chown user:Auch die Zuweisung der primären Gruppe userin 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 chownhä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.

verwandte Informationen