Wie spezifiziere ich eine Gruppe mit chmod?

34

Ich wurde gebeten, Group-Wrx-Berechtigungen zu einem Verzeichnis im Basisordner eines anderen Benutzers hinzuzufügen.

Ich glaube, was ich tun sollte, ist chmod 771 -R directorynameim übergeordneten Verzeichnis ausgeführt. Was ich nirgends in den Röhren finden kann, ist, wie ich angeben kann, welcher Gruppe ich diese Berechtigungen erteilen möchte. Ich bin persönlich in einer Reihe von Gruppen und in einem Haufen, den ich nicht als Root kenne.

Falls es darauf ankommt, führt das System Redhat 5.4 aus.

joe_young
quelle

Antworten:

37

Der chmod()Systemaufruf und damit das chmodProgramm wirken sich nicht auf die Gruppe einer Datei oder eines Verzeichnisses aus (oder auf einen anderen Dateityp: Blockspecial, Character Special, Socket, ... Symlink ist ein Sonderfall). Die Gruppe, der die Berechtigung erteilt wird, ist also die Gruppe, zu der die Datei oder das Verzeichnis gehört.

Um Gruppenberechtigungen hinzuzufügen rwx, sollten Sie Folgendes verwenden:

chmod -R g+rwx DirectoryName

Dies fügt jedoch die Berechtigungen zu jeder Datei sowie zu jedem Verzeichnis hinzu, und nicht alle Dateien sollten ausführbar sein. Persönlich wäre ich sehr unglücklich, wenn jemand eine Gruppenschreibberechtigung für alle (oder einige) meiner Verzeichnisse erteilen würde, aber das ist eine andere Geschichte.

Verwenden Sie findstattdessen Folgendes, um nur Verzeichnisse zu beeinflussen :

find DirectoryName -type d -exec chmod g+rwx {} +

(Die +Notation ist POSIX 2008; nicht alle Unix-Systeme unterstützen dies, obwohl Linux dies tut.)

Jonathan Leffler
quelle
1
Wenn Sie + X (Großbuchstaben X) verwenden, fügen Sie nur dann die Berechtigung zum Ausführen (oder 'Suchen') hinzu, wenn die Datei ein Verzeichnis ist oder für einen Benutzer bereits die Berechtigung zum Ausführen hatte. linux.die.net/man/1/chmod
Dave
@ Dave: chmod +Xwird anscheinend auch unter BSD (Mac OS X) unterstützt. Eine sorgfältige Prüfung von POSIX chmodzeigt, dass +Xes sich um ein POSIX-Merkmal handelt: Das Perm-Symbol X soll den Ausführungs- / Suchteil der Dateimodusbits darstellen, wenn die Datei ein Verzeichnis ist oder wenn die aktuellen (nicht modifizierten) Dateimodusbits mindestens eines von mindestens einem aufweisen die Ausführungsbits (S_IXUSR, S_IXGRP oder S_IXOTH) werden gesetzt. Es wird ignoriert, wenn die Datei kein Verzeichnis ist und keines der Ausführungsbits in den aktuellen Dateimodusbits gesetzt ist. Beachten Sie die Begründung unten.
Jonathan Leffler
12

Jede Datei in einem ext- Dateisystem hat:

  1. Ein Eigentümer Benutzer
  2. Eine Eigentümergruppe
  3. Berechtigungen für diesen Benutzer, diese Gruppe und alle anderen.

Wenn Sie rwx-Gruppenberechtigungen für eine Datei festlegen, kann sie nur von der Eigentümergruppe dieser Datei gelesen, geschrieben und ausgeführt werden. Sie können jedoch Benutzer und Eigentümer ändern mit:

chown username file1 file2 ...
chown -R username somedir
chgrp groupname file1 file2 ....
chgrp -R groupname somedir
chown username:groupname file1 file2 ...

Es gibt verschiedene Implementierungen für erweiterte Dateisystemberechtigungen, z. B. Zugriffssteuerungslisten (ACLs) unter Mac OS X, aber da ich kein Linux-Experte bin, sollten Sie dies wahrscheinlich bei Server Fault erfragen .

Marian Theisen
quelle
"Wenn Sie also rwx-Gruppenberechtigungen für eine Datei festlegen, kann diese Datei nur von der Eigentümergruppe gelesen, geschrieben und ausgeführt werden." Eigentümerbenutzerregeln haben Vorrang, wenn Sie weder der Eigentümerbenutzer noch die Eigentümergruppe sind, gelten die Regeln für andere.