GNU/Linux >> Linux Esercitazione >  >> Linux

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

Ho cambiato i permessi di un file (chmod g+w testfile ) ed eseguendo ls -l testfile dà:

-rwxrwxr-x 1 user1 user1 0 2011-01-24 20:36 testfile

Ho quindi aggiunto un utente a quel gruppo ("/etc/group ” ha user1:x:1000:user2 riga), ma non riesco a modificare quel file come utente2. Perché è così?

Risposta accettata:

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

  • Quando accedi, i tuoi processi ottengono l'appartenenza a un gruppo nel tuo gruppo principale menzionato in /etc/passwd , più tutti i gruppi in cui il tuo utente è menzionato in /etc/group . (Più precisamente, il pw_gid campo in getpw(your_uid) , più tutti i gruppi di cui l'utente è un membro esplicito. Oltre /etc/passwd e /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 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 supplementari del processo.

Come puoi vedere, la tua modifica all'appartenenza al gruppo dell'utente ha effetto solo quando l'utente effettua l'accesso. Per i processi in esecuzione, è troppo tardi. Quindi l'utente deve disconnettersi e riconnettersi. Se è troppo difficile, 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 privilegi (ID utente, ID gruppo, capacità). Il kernel avvia init processo (il primo processo dopo l'avvio) in esecuzione come root e ogni processo è in definitiva discendente da quel processo¹. Il login process (o sshd , o la parte del desktop manager che effettua l'accesso) è ancora in esecuzione come root. Parte del suo lavoro consiste nell'abbandonare i privilegi di root e passare all'utente e ai gruppi appropriati.

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

Correlati:come disattivare la funzionalità "incolla il pulsante centrale del mouse" in tutti i programmi?

¹ A volte 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 di framework di sicurezza multilivello come SELinux.


Linux
  1. Come aggiungere un utente a un gruppo in Linux

  2. Ottenere nuovi file per ereditare le autorizzazioni di gruppo su Linux?

  3. Precedenza dell'utente e del proprietario del gruppo nelle autorizzazioni dei file?

  4. Dare autorizzazioni di gruppo ai file di altri utenti?

  5. Linux:un singolo utente può avere più file Crontab?

Come aggiungere un utente al gruppo in Linux

Con quale utente devono essere eseguiti apache e PHP? Quali autorizzazioni devono avere i file /var/www?

Come concedere l'accesso utente non root ai file del dispositivo

Come recuperare l'archiviazione di file eliminati ma ancora utilizzati su Linux?

Come funzionano i permessi sui file per l'utente root?

Quali autorizzazioni devono avere i file/le cartelle del mio sito Web su un server Web Linux?