Supponiamo di avere due utenti Alice e Bob e un gruppo GROUPNAME e una cartella foo
, entrambi gli utenti sono membri di GROUPNAME (utilizzando Linux ed ext3).
Se salvo come utente Alice un file sotto foo
, i permessi sono:-rw-r--r-- Alice Alice
. Tuttavia, è possibile ottenere che ogni file venga salvato in qualche sottodirectory di foo
ha i permessi -rwxrwx--- Alice GROUPNAME
(es. proprietaria Alice, gruppo GROUPNAME)?
Risposta accettata:
Puoi controllare i bit di autorizzazione assegnati con umask
e il gruppo creando la directory setgid a GROUPNAME
.
$ umask 002 # allow group write; everyone must do this
$ chgrp GROUPNAME . # set directory group to GROUPNAME
$ chmod g+s . # files created in directory will be in group GROUPNAME
Nota che devi fare il chgrp
/chmod
per ogni sottodirectory; non si propaga automaticamente (cioè, directory né esistenti né create successivamente in un setgid la directory sarà setgid , anche se quest'ultimo sarà nel gruppo GROUPNAME
).
Nota anche che umask
è un attributo di processo e si applica a tutti i file creati da quel processo e dai suoi figli (che ereditano umask
in vigore nel loro genitore su fork()
tempo). Gli utenti potrebbero aver bisogno di impostarlo in ~/.profile
e potrebbe essere necessario fare attenzione a cose non correlate alla directory che richiedono autorizzazioni diverse. i moduli possono essere utili se hai bisogno di impostazioni diverse quando fai cose diverse.
Puoi controllare le cose un po' meglio se puoi usare gli ACL POSIX; dovrebbe essere possibile specificare sia una maschera di autorizzazione che un gruppo e farli propagare in modo sensato. Tuttavia, il supporto per gli ACL POSIX è alquanto variabile.