Linux, perché non riesco a scrivere anche se ho i permessi di gruppo?


108

Voglio creare un file in una directory di proprietà del gruppo staff di cui sono membro. Perché non posso farlo?

bmccann@bmccann-htpc:~$ ls -l /usr/local/lib/R/
total 4
drwxrwsr-x 2 root staff 4096 2010-07-31 16:21 site-library
bmccann@bmccann-htpc:~$ id -nG bmccann
bmccann adm dialout cdrom plugdev staff lpadmin admin sambashare
bmccann@bmccann-htpc:~$ touch /usr/local/lib/R/site-library/tmp
touch: cannot touch `/usr/local/lib/R/site-library/tmp': Permission denied

1
Hai il permesso di scrittura per la directory della libreria del sito in / usr / local / lib / R?
Ted Hopp

1
Il primo comando che ho pubblicato non mostra che il gruppo ha privilegi di scrittura?
Ben McCann

3
È già presente un site-library/tmpfile / directory?
Jeremiah Willcock

Risposte:


200

Ti sei disconnesso e ricollegato dopo aver apportato le modifiche al gruppo? Vedere:
Risposta del super utente che riguarda un errore nelle autorizzazioni al tocco


1
Se apro una nuova finestra di terminale, non dovrebbe essere considerato un nuovo processo? Sono abbastanza sicuro di averlo provato e non ha funzionato costringendomi a disconnettermi.
Ben McCann

7
@ Ben: l'avvio di un nuovo processo eredita uid / gids dal genitore. È necessario un programma privilegiato (come ad esempio login, sue così via) per impostare in realtà uid / gid.
effimero

4
Se è scomodo per il logout / login di nuovo in, come sottintende quanto sopra, si può fare questo in un terminale: su your-user-name. La shell risultante avrà i permessi di gruppo aggiornati.
TJ Crowder

2
Grazie per questo! Ho passato circa 15 minuti a tirarmi i capelli cercando di capire perché non avevo i permessi di gruppo in una cartella.
Jeremy Spencer

2
È necessario riavviare per me su Ubuntu 16.04 x64 non solo disconnettersi e accedere di nuovo
Kartikey Tanna

15

Perché l'utente Linux non può modificare i file nel gruppo di cui fa parte?

Sto usando Ubuntu 12.04 e ho avuto lo stesso problema in cui un utente non può scrivere su un file a cui è consentito l'accesso di gruppo. Per esempio:

whoami                                        //I am user el
  el                                            

touch /foobar/test_file                       //make a new file

sudo chown root:www-data /foobar/test_file    //User=root  group=www-data

sudo chmod 474 /foobar/test_file              //owner and others get only read, 
                                              //group gets rwx


sudo groupadd www-data                        //create group called www-data    

groups                                        //take a look at the groups and see
 www-data                                     //www-data exists.

groups el                                     //see that el is part of www-data
  el : www-data                               

Riavvia ora il terminale per assicurarti che utenti e gruppi abbiano effetto. Accedi come el.

vi /foobar/test_file                          //try to edit the file.

Produce l'avvertimento:

Warning: W10: Warning: Changing a readonly file"

Che cosa? Ho fatto tutto bene, perché non funziona?

Risposta:

Eseguire un riavvio completo del computer. L'arresto del terminale non è sufficiente per risolvere questi problemi.

Penso che ciò che accade è che apache2 utilizza anche il gruppo www-data, quindi l'attività stava in qualche modo impedendo agli utenti e ai gruppi di essere applicati correttamente. Non solo devi disconnetterti, ma devi interrompere e riavviare tutti i servizi che utilizzano il tuo gruppo. Se un riavvio non riesce, hai problemi più grandi.


1
Cosa sono i "problemi più grandi"?
Ejaz

13

Ho avuto lo stesso problema, controlla se la cartella ha altre regole ACL o meno!

Se puoi vedere + (segno più) quando elenchi la cartella, significa che ha regole di accesso speciali. Per esempio:

[user_in_apache_group@web02 html]$ ls -l
total 16
drwxrwxr-x  16 apache apache 4096 Sep  4 13:46 ilias
drwxrwxr-x+ 15 apache apache 4096 Sep  4 13:46 ilias5

Visualizza l'autorizzazione:

[user_in_apache_group@web02 html] getfacl ilias5
# file: ilias5
# owner: apache
# group: apache
user::rwx
user:user_in_apache_group:r-x
group::rwx
mask::rwx
other::r-x

Quindi questo significa che il mio utente (user_in_apache_group) non ha il permesso di scrittura per quella cartella.

La soluzione è ciò che ha detto @techtonik, aggiungi il permesso di scrittura per l'utente:

[user_in_apache_group@web02 html]$ sudo setfacl -m u:user_in_apache_group:rwx ./ilias5

Controlla di nuovo l'autorizzazione:

[user_in_apache_group@web02 html] getfacl ilias5
...
user:user_in_apache_group:rwx
...

Spero che sia d'aiuto. ;)


8

Usa Linux ACL (elenchi di controllo degli accessi): è una versione più dettagliata del sistema di autorizzazione,

setfacl -R -m 'group:staff:rwx' -m 'd:group:staff:rwx' /usr/local/lib/R/

Questo imposta sia i diritti attivi per la directory che i diritti predefiniti per qualsiasi cosa creata all'interno.

Se ti sei appena aggiunto al staffgruppo, questo non funziona senza riconnetterti , ma puoi impostare l'autorizzazione solo per te stesso per la sessione corrente.


5

Ho avuto un problema quando un utente non poteva accedere alla /foo/bar/bazdirectory anche quando aveva i permessi perché non aveva accesso alla bardirectory.


-2

Verifica se la directory principale dispone dell'autorizzazione prima di aggiungere contenuto a quel file

sudo chmod -R 777 /yourDir/file.log
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.