Zapewnienie, że nowe pliki w katalogu należą do grupy

67

Chcę utworzyć wspólny katalog, gdy wielu użytkowników (wszyscy należą do powiedzmy mygroup) może tworzyć i edytować pliki. Chciałbym, aby wszystkie pliki w tym katalogu i podkatalogu należały do mojej grupy

Zmieniłem istniejące pliki, aby grupa mygroup ich używała chgrp, ale wciąż tworzone nowe pliki należą do grupy podstawowej użytkownika. Czy istnieje sposób zagwarantowania, że ​​nowe pliki należą do grupy bez ciągłego uruchamiania chgrp.

justintime
źródło

Odpowiedzi:

108

Chcesz ustawić bit SetGID.

chmod g+s dir

Wszystkie nowe pliki utworzone w katalogu będą miały grupę ustawioną na grupę katalogu.

W blogu superużytkownika wyjaśniono bity lepkie i inne bity uprawnień Linuksa:

SetGID to jednak zupełnie inna gra w piłkę. Gdy katalog ma ustawiony bit SetGID i plik jest tworzony w tym katalogu, własność grupy pliku jest automatycznie modyfikowana, aby stała się grupą katalogu.

lesmana
źródło
1
Dzięki. Odniesienie jest przydatne. opisuje polecenie umask, który jest częścią obrazu
JustInTime
4
Co powiesz na utworzenie podkatalogu w katalogu początkowym, który również należy do grupy katalogu nadrzędnego? czy to możliwe?
daaxix
@ Odpowiedź Łukasza poniżej jest kluczowa, aby nie pomylić się, gdy zawiedzie to po cichu: użyj sudo
Rabarbar
11

Może to spowodować, że kilka osób utknie w setgid, jeśli grupa folderu różni się od twojej, być może będziesz musiał uruchomić chmod jako root, ale nie pojawi się żaden błąd wskazujący, że musisz to zrobić.

bez 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

z 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
Łukasz
źródło