2009-08-24 5 views

risposta

8

newgrp (1)

+0

Sono un membro del gruppo, quindi perché mi sta chiedendo una password? Non mi piace la mia password! – Michael

+0

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

+0

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

156

Ci sono un paio di modi per farlo:

  1. È 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 utilizzando chgrp <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).

  2. 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 comando sg <group> <command>.

    sg non è un comando POSIX standard ma è disponibile su Linux.

+5

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