Standardgruppe für Benutzer beim Erstellen neuer Dateien festlegen?

36

Ich stelle oft fest, dass Dateien, die ich über SSH erstellt habe, im Besitz von jm:jmbeispielsweise sind.

Damit Apache darauf zugreifen kann, muss ich das zum Beispiel tun chown jm:www-data.

Ich bin sicher, ich kann angeben, dass beim Erstellen von Dateien, anstatt die Gruppe unter meinem Namen zu verwenden, eine andere angegeben werden soll.

Oder gibt es eine bessere Möglichkeit, Benutzer / Gruppen zu verwalten?

JM bei der Arbeit
quelle

Antworten:

73

Wenn Sie möchten, dass alle neuen Dateien in einem bestimmten Verzeichnis einer bestimmten Gruppe gehören, wenden Sie einfach das setgidBit darauf an:

chgrp www-data /some/dir
chmod g+s /some/dir

Wenn Sie über eine vorhandene Verzeichnisstruktur verfügen, auf die Sie dieses Verhalten anwenden möchten, können Sie Folgendes ausführen find:

find /some/dir -type d -exec chgrp www-data {} +
find /some/dir -type d -exec chmod g+s {} +

(Wenn die Verzeichnisse bereits der entsprechenden Gruppe gehören, können Sie den ersten Befehl in diesen beiden Beispielen weglassen.)

James Henstridge
quelle
1
Gute Antwort! Könnten Sie bitte klarstellen, was die Symbole ... {} +bedeuten?
Alexander Lomia
3
Sie sind Argumente für den findBefehl, die in der Manpage behandelt werden. Beim ersten Aufruf wird der Befehl ausgeführt chgrp www-data, wobei eine Reihe von Ergebnissen als Argumente angehängt werden (anstatt den Befehl für jedes Ergebnis einmal aufzurufen, wie Sie es möchten {} \;).
James Henstridge
6
Warum nicht benutzen chmod g+s /some/dir -R? Gerade getestet und es scheint zu funktionieren.
Cragmonkey
13
@Cragmonkey: Das setzt auch das Setgid-Bit für reguläre Dateien. Wenn einer von ihnen ausführbar ist, kann ein anderer Benutzer auf dem System die Berechtigungen der Gruppe erlangen, der die Datei gehört.
James Henstridge