Sto facendo uno script di shell bash e voglio cambiare il gruppo predefinito in cui vengono creati i nuovi file. So che usi umask
per cambiare i permessi. C'è qualcosa per il gruppo?Bash Scripting - Come impostare il gruppo con cui verranno creati i nuovi file?
risposta
newgrp
(1)
Ci sono un paio di modi per farlo:
È possibile modificare il gruppo di default per tutti i file creati in una particolare directory impostando il flag setgid sul directory (
chmod g+s _dir_
). I nuovi file nella directory verranno quindi creati con il gruppo della directory (impostato utilizzandochgrp <group> <dir>
). Questo vale per qualsiasi programma che crea file nella directory.notare che questa è automagicamente ereditato per nuove sottodirectory (come di Linux 3.10), tuttavia, se le sottodirectory erano già presenti, questo cambiamento non verrà loro applicata (utilizzare il flag
-R
per questo).Se il flag setgid non è impostato, il gruppo predefinito verrà impostato sull'idoto di gruppo corrente del processo di creazione. Sebbene questo possa essere impostato usando il comando
newgrp
, questo crea una nuova shell che è difficile da usare all'interno di uno script di shell . Se si desidera eseguire un particolare comando (o set di comandi) con il gruppo modificato, utilizzare il comandosg <group> <command>
.sg
non è un comando POSIX standard ma è disponibile su Linux.
Solo una piccola nota. Se si tenta di eseguire 'chmod g + s _dir_' su una directory che ha il gruppo y, e si sta eseguendo il comando sotto utente x, e l'utente x non è membro del gruppo y non funzionerà. Dovrai eseguirlo come root. – LEDfan
Sono un membro del gruppo, quindi perché mi sta chiedendo una password? Non mi piace la mia password! – Michael
inoltre, se eseguo "newgrp" come root (ad esempio eseguendo uno script con newgrp in esso usando sudo), mi scaricano in una shell di root. –
Michael
Questo non è ciò per cui newgrp dovrebbe essere usato. Cosa succede se dimentichi di usare newgrp al di fuori dello script? In che modo lo script gestirà la nuova shell creata da newgrp. @ La risposta di mark40 è migliore. – noel