it-swarm.com.de

Bash Scripting - Wie wird die Gruppe festgelegt, mit der neue Dateien erstellt werden?

Ich mache ein Bash-Shell-Skript und möchte die Standardgruppe ändern, als die neue Dateien erstellt werden. Ich weiß, dass Sie umask verwenden, um die Berechtigungen zu ändern. Gibt es etwas für die Gruppe?

67
Rory

Mit dem Befehl newgrp wird die aktuelle Gruppen-ID während einer Anmeldesitzung geändert.

Bei neuen Verzeichnissen, die in dieser Sitzung erstellt wurden, wird die Gruppen-ID durch den Befehl festgelegt.

newgrp (1)

12
moonshadow

Hierfür gibt es verschiedene Möglichkeiten:

  1. Sie können die Standardgruppe für alle in einem bestimmten Verzeichnis erstellten Dateien ändern, indem Sie das Flag setgid im Verzeichnis setzen (chmod g+s _dir_). Neue Dateien im Verzeichnis werden dann mit der Gruppe des Verzeichnisses erstellt (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 das Symbol -R Flagge dafür).

  2. Wenn das Flag setgid nicht gesetzt ist, wird die Standardgruppe auf die aktuelle Gruppen-ID des Erstellungsprozesses gesetzt. Dies kann zwar mit dem Befehl newgrp festgelegt werden, es wird jedoch 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, steht jedoch unter Linux zur Verfügung.

166
mark4o