Ho aggiunto un utente a un gruppo, ma le autorizzazioni di gruppo sui file non hanno ancora alcun effetto


Risposte:


28

user2 deve disconnettersi e riconnettersi. Le autorizzazioni di gruppo funzionano in questo modo:

  • Quando accedi, i tuoi processi ottengono l'appartenenza al gruppo nel tuo gruppo principale menzionato in /etc/passwd, oltre a tutti i gruppi in cui è menzionato il tuo utente /etc/group. (Più precisamente, il pw_gidcampo in getpw(your_uid), oltre a tutti i gruppi di cui l'utente è un membro esplicito . Oltre /etc/passwde /etc/group, le informazioni possono provenire da altri tipi di database utente come NIS o LDAP.) Il gruppo principale diventa l' ID gruppo effettivo del processo e gli altri gruppi diventano i suoi ID di gruppo supplementari .
  • Quando un processo esegue un'operazione che richiede l'appartenenza a un determinato gruppo, ad esempio l' accesso a un file , quel gruppo deve essere l'ID gruppo effettivo o uno degli ID gruppo supplementare del processo.

Come puoi vedere, la tua modifica all'appartenenza al gruppo dell'utente ha effetto solo quando l'utente accede. Per i processi in esecuzione, è troppo tardi. Quindi l'utente deve disconnettersi e riconnettersi. Se questo è troppo disturbo, l'utente può accedere a una sessione separata (ad esempio su una console diversa o con ssh localhost).

Sotto il cofano, un processo può sempre e solo perdere i privilegi (ID utente, ID gruppo, funzionalità). Il kernel avvia il initprocesso (il primo processo dopo l'avvio) in esecuzione come root e ogni processo alla fine discende da quel processo¹. Il loginprocesso (o sshd, o la parte del desktop manager che ti accede) è ancora in esecuzione come root. Parte del suo lavoro è eliminare i privilegi di root e passare all'utente e ai gruppi corretti.

C'è una sola eccezione: eseguire un programma setuid o setgid . Quel programma riceve autorizzazioni aggiuntive: può scegliere di agire sotto vari sottoinsiemi delle appartenenze al processo padre più l'appartenenza aggiuntiva all'utente o al gruppo che possiede l'eseguibile setxid. In particolare, un programma root setuid ha i permessi di root, quindi può fare tutto²; ecco come i programmi gradiscono sue sudopossono fare il loro lavoro.

¹ Occasionalmente ci sono processi che non derivano da init (initrd, udev) ma il principio è lo stesso: inizia come root e perdi i privilegi nel tempo.
² Blocco dei framework di sicurezza multilivello come SELinux.


1
Notare che se si utilizza una GUI desktop, semplicemente disconnettersi e accedere nuovamente a una finestra del terminale non reimposterà l'appartenenza al gruppo. Ho avuto questo problema e devo disconnettermi anche dalla mia sessione della GUI: þ
user394

3
@ user394 Disconnettersi e riconnettersi reimposta l'appartenenza al gruppo. Se si chiude semplicemente una finestra del terminale, non ci si disconnette.
Gilles 'SO- smetti di essere malvagio' il

10

Potrebbe essere necessario avere user2 disconnettersi e riconnettersi (o semplicemente provare a inserire una nuova sessione di accesso). Controllare l'output di id --groupsper mostrare gli ID numerici del gruppo per un utente.


1

sudo su $(whoami)

Essenzialmente la stessa soluzione alternativa ssh localhost, ma utilizzabile senza avere un server SSH installato.

Finché hai radice. Ma se hai appena aggiunto un nuovo gruppo e modificato le autorizzazioni, probabilmente lo fai.


Mentre questa è una risposta molto meno completa dal punto di vista informativo rispetto a quella accettata, a volte vuoi sapere come costruire un orologio, a volte vuoi solo sapere che ore sono. Questa risposta mi ha aiutato con un trucco che può funzionare fino alla prossima disconnessione e ritorno. Grazie.
Benjamin Staton,

0

C'è un caso in cui il logout dell'utente non aiuta - se si utilizza la direttiva ssh ControlMaster per l'host. Se si aggiunge il proprio account a un gruppo, si disconnette e si riconnette all'interno della stessa connessione ControlMaster, la sessione continuerà a non mostrare alcun nuovo abbonamento. Dovrai interrompere forzatamente la connessione Master con

ssh -O exit hostname

prima di accedere nuovamente.

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.