Sicherstellen, dass neue Dateien in einem Verzeichnis zur Gruppe gehören

Ich möchte ein freigegebenes Verzeichnis erstellen, wenn eine Anzahl von Benutzern (z. B. mygroup) Dateien erstellen und bearbeiten kann. Ich möchte, dass alle Dateien in diesem Verzeichnis und Unterverzeichnis zu mygroup

Ich habe vorhandene Dateien geändert, um die Gruppe mygroup mit chgrp, aber neue Dateien, die noch erstellt werden, gehören zur primären Gruppe des Benutzers. Gibt es eine Möglichkeit, sicherzustellen, dass neue Dateien zur Gruppe gehören, ohne dass chgrp wiederholt ausgeführt wird?

Author: justintime, 2011-05-01

3 answers

Sie möchten das SetGID-Bit festlegen.

chmod g+s dir

Bei allen neuen Dateien, die im Verzeichnis erstellt wurden, ist die Gruppe auf die Gruppe des Verzeichnisses festgelegt.

Ein Superuser-Blogbeitrag erklärte die Sticky-Bits und andere Linux-Berechtigungsbits:

SetGID ist jedoch ein ganz anderes Ballspiel. Wenn in einem Verzeichnis das SetGID-Bit festgelegt ist und eine Datei in diesem Verzeichnis erstellt wird, wird der Gruppenbesitz der Datei automatisch als Gruppe der Verzeichnis.

 118
Author: lesmana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-11-08 18:09:36

Setzen Sie die setgid Berechtigungsflag auf den Ordnern.

chmod g+s dirname
 13
Author: Daniel Beck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-05-01 21:12:55

Dies könnte ein paar Leute mit setgid stecken, wenn die Gruppe des Ordners von Ihrem eigenen unterscheidet, müssen Sie chmod als root ausführen, aber Sie werden keinen Fehler erhalten, der darauf hinweist, dass Sie dies tun müssen.

Ohne sudo -

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir

$ chmod g+s dir                                     # no errors

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir   # but nothing changed

$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar  9 10:51 nosudo        # and the group is set wrong

Mit sudo

$ sudo chmod g+s dir

$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar  9 10:44 dir   # the setgid bit is now on

$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke      0 Mar  9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar  9 10:51 withsudo # and the group is set right
 12
Author: LukePH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-06-17 03:40:33