Ich mache ein Bash-Shell-Skript und möchte die Standardgruppe ändern, als die neue Dateien erstellt werden. Ich weiß, dass Sie umask
die Berechtigungen ändern. Gibt es etwas für die Gruppe?
Antworten:
Der
newgrp
Befehl wird verwendet, um die aktuelle Gruppen-ID während einer Anmeldesitzung zu ändern.
Bei neuen Verzeichnissen, die in dieser Sitzung erstellt wurden, wird die Gruppen-ID durch den Befehl festgelegt.
newgrp
(1)
Es gibt verschiedene Möglichkeiten, dies zu tun:
Sie können die Standardgruppe für alle in einem bestimmten Verzeichnis erstellten Dateien ändern, indem Sie das setgid-Flag für das Verzeichnis ( chmod g+s _dir_
) setzen. Neue Dateien im Verzeichnis werden dann mit der Gruppe des Verzeichnisses erstellt (festgelegt mit chgrp <group> <dir>
). Dies gilt für alle Programme, die Dateien im Verzeichnis erstellen.
Beachten Sie, dass dies für neue Unterverzeichnisse (ab Linux 3.10) automatisch vererbt wird. Wenn jedoch bereits Unterverzeichnisse vorhanden waren, wird diese Änderung nicht auf diese angewendet (verwenden Sie dazu das -R
Flag).
Wenn das Setgid-Flag nicht gesetzt ist, wird die Standardgruppe auf die aktuelle Gruppen-ID des Erstellungsprozesses gesetzt. Obwohl dies mit dem newgrp
Befehl festgelegt werden kann, wird eine neue Shell erstellt, die in einem Shell-Skript nur schwer zu verwenden ist. Wenn Sie einen bestimmten Befehl (oder eine Reihe von Befehlen) mit der geänderten Gruppe ausführen möchten, verwenden Sie den Befehl sg <group> <command>
.
sg
ist kein POSIX-Standardbefehl, aber unter Linux verfügbar.
chmod g+s _dir_
in einem Verzeichnis mit der Gruppe y ausgeführt zu werden, und Sie den Befehl unter Benutzer x ausführen und Benutzer x nicht Mitglied der Gruppe y ist, funktioniert dies nicht. Sie müssen es als root ausführen.