it-swarm.it

Come applicare le modifiche dei gruppi di utenti appena aggiunti senza la necessità di riavviare?

Supponiamo che io abbia effettuato l'accesso con l'utente takpar:

[email protected]:/$

Come root, ho aggiunto takpar come membro del gruppo webdev usando:

# usermod -a -G webdev takpar

Ma sembra che non sia stato applicato, perché ad esempio non riesco a entrare in una directory webdev che ha i permessi di lettura per il gruppo:

400169 drwxr-x--- 3 webdev webdev 4.0K 2011-08-15 22:34 public_html

[email protected]:/home/webdev/$ cd public_html/
bash: cd: public_html/: Permission denied

Ma dopo un riavvio ho accesso come mi aspetto. Dato che questo tipo di cambio di gruppo è nella mia routine, c'è un modo per applicare le modifiche senza bisogno di riavviare?

Risposta Sembra che non ci sia modo di far conoscere la nuova sessione al nuovo gruppo, ad esempio il file manager non funzionerà con le nuove modifiche. Ma un nuovo accesso farà il lavoro. Il comando su è appropriato anche per i comandi temporanei nella sessione corrente.

41
Alexar

Soluzione locale: utilizzare su yourself per accedere nuovamente. Nella nuova sessione verrai considerato come un membro del gruppo.


Le pagine man per newgrp e sg potrebbero anche essere interessanti per modificare il tuo ID di gruppo corrente (e accedere a un nuovo gruppo):

  • Per utilizzare l'id di gruppo (e i privilegi) di webdev nell'attuale Shell, utilizzare:

     newgrp webdev
    
  • Per avviare un comando con un ID gruppo (e mantenere i privilegi correnti nella Shell) usare:

     sg webdev -c "command"
    

    (sg è come su ma per i gruppi e dovrebbe funzionare senza la password del gruppo se sei elencato come membro del gruppo nei dati di sistema)

59

Il riavvio del sistema è eccessivo, persino il logout e l'accesso non sono necessari se si utilizza gpasswd.

Puoi aggiungere takpar al gruppo webdev usando:

$ gpasswd -a takpar webdev

Puoi controllare l'appartenenza al gruppo usando getent group {name} comando:

$ getent group webdev
webdev:x:1008:webdev,takpar

che dovrebbe essere uguale a cat /etc/group | grep webdev. Per completezza ecco id output da takpar Sessione shell:

$ id takpar
uid=1007(takpar) gid=1007(takpar) groups=1007(takpar),1008(webdev)
3
Tombart
id webdev

sembra essere sbagliato qui - vuoi sapere del tuo id, takpar, non webdev.

Se si confrontano gli output di id e id takpar, noterai che il primo non mostra ancora il cambiamento, mentre il secondo lo mostra. Perché? Questo perché id mostra i gruppi del processo corrente. Se si esegue il logout e si accede nuovamente, o si apre anche solo una nuova finestra del terminale, si dovrebbe già vedere la modifica senza riavviare.

1
glglgl