Garantire che i nuovi file in una directory appartengano al gruppo


67

Voglio creare una directory condivisa quando un numero di utenti (tutti appartengono a dire mygroup) possono creare e modificare file. Vorrei che tutti i file in questa directory e sottodirectory appartenessero a mygroup

Ho cambiato i file esistenti di avere gruppo mygroup usando chgrp, ma i nuovi file vengono creati ancora appartengono al gruppo primario dell'utente. Esiste un modo per garantire che i nuovi file appartengano al gruppo senza eseguire ripetutamente chgrp.

Risposte:


108

Si desidera impostare il bit SetGID.

chmod g+s dir

Tutti i nuovi file creati nella directory avranno il gruppo impostato sul gruppo della directory.

Un post sul blog di un superutente ha spiegato i bit appiccicosi e altri bit di autorizzazione di Linux:

SetGID, tuttavia, è un gioco con la palla completamente diverso. Quando una directory ha il bit SetGID impostato e un file viene creato all'interno di quella directory, la proprietà del gruppo del file viene automaticamente modificata per essere il gruppo della directory.


1
Grazie. Il riferimento è utile descrive il comando umask che fa parte dell'immagine
justintime

4
Che ne dite di creare una sottodirectory nella directory iniziale che appartiene anche al gruppo della directory padre? È possibile?
daaxix,

La risposta di LukePH di seguito è cruciale per non essere confusi quando questo fallisce silenziosamente: usa sudo
Rabarbaro


11

Questo potrebbe far incastrare alcune persone con setgid, se il gruppo della cartella è diverso dal tuo potresti dover eseguire chmod come root ma non otterrai alcun errore che indica che devi farlo.

senza 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

con 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.