Le autorizzazioni di gruppo consentono, ma vengono negate le autorizzazioni


43

Ho una partizione ext4 e ho impostato il proprietario del gruppo per tutti i sottodirettori su mygroup:

# chgrp -R mygroup /mount/abc
# chmod -R g+swrx /mount/abc

Il mio utente fa parte di quel gruppo. All'interno di quella partizione è presente una cartella di proprietà dell'utente "nobody" e ora del gruppo "mygroup". Il mio utente fa parte di "mygroup". Ecco un ls -l:

myuser@host:/mount/abc/folder$ ls -l
drwxr-sr-x 2 nobody      mygroup      4096 Apr 25 12:08 ./
drwxrwsrwx 6 nobody      mygroup      4096 Apr 24 07:57 ../
-rw-r-xr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

myuser@host:/mount/abc/folder$ groups myuser
myuser : mygroup {... a list of other groups also...} 

myuser@host:/mount/abc/folder$ rm test.png 
rm: remove write-protected regular file ‘test.png’? y
rm: cannot remove ‘test.png’: Permission denied

myuser@host:/mount/abc/folder$ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied

Nota che non posso eliminare né creare un file di proprietà di un gruppo di cui fa parte il mio utente.

Immagino di non capire appieno come funzionano i gruppi. Ho pensato che se facevi parte di un gruppo, allora erediti le autorizzazioni di quel gruppo. Sto facendo qualcosa di sbagliato?

Grazie


Sembra che la triade di autorizzazioni sia proprietario-gruppo-mondo. Sopra puoi vedere drwxr-sr-x per la directory. Quindi l'autorizzazione del gruppo è rs. Sembra che chmod -R non abbia impostato in modo ricorsivo i permessi su rwx. Quando capovolgo il bit w per l'autorizzazione di gruppo della cartella, funziona.
Caos,

Risposte:


70

Hai aggiunto di recente quell'utente a quel gruppo, senza disconnettersi / in mezzo? Quindi "gruppi" mostrerà il gruppo ma l'utente non ha ancora i permessi del gruppo.

Puoi mostrare i tuoi gruppi efficaci usando

$ id

Ad esempio, se aggiungo il mio utente psal gruppo faxe quindi digito

$ id

non mostra il gruppo fax, ma

$ groups ps

spettacoli fax.

Fare sual proprio utente ti dà il nuovo gruppo di appartenenza:

$ su ps
$ id

L'output ora contiene anche fax.


1
Questo è davvero utile da sapere. Soprattutto la parte "sudo <nomeutente>".
Caos,

4
il login / disconnessione è così ovvio che ho perso il punto, molte grazie amico!
nicolallias,

1
@ peschü l'ho sudoe lo uso regolarmente. L'errore che ti ho mostrato si lamenta che il comando ubuntu(ovvero il nome utente) non è un comando riconosciuto. Non penso che il tuo suggerimento sia sintatticamente corretto - forse funziona nel tuo caso perché pscapita anche di essere un comando e un nome utente.
Beldaz,

1
@beldaz oh no! Hai ragione! sintatticamente corretto lo è su <username>. Ho modificato il post.
peschü

1
maledetto il vecchio logout / login di nuovo funziona ogni volta.
Steampunkery,

9

Il metodo che hai usato sembra essere corretto. Ho appena provato a replicarlo e ha funzionato perfettamente.

Non sono sicuro che ci sia un refuso, ma c'è un leggero problema con il comando. Non è necessario che sia menzionato "mygroup". I seguenti lavori

# chmod -R g+swrx /mount/abc

Anche, puoi rimuovere il sbit, basta farlo g+rwx. Dopo aver modificato le autorizzazioni e averlo fatto ls -l, dovrebbero essere visualizzati i privilegi pertinenti.


2
Ho rimosso l'errore di battitura con il nome gruppo. La directory ha le autorizzazioni wrx su di essa quando si esegue ls -l, ed è di proprietà di nessuno: mygroup. Anche se myuser fa parte di mygroup, myuser non è ancora in grado di creare / eliminare file. Spero che abbia un senso.
Caos,

3

Non è possibile rimuovere il file perché il gruppo mygroupnon dispone delle autorizzazioni di scrittura sul file test.pnge sulla cartella. Affinché le operazioni di scrittura funzionino sul file, le autorizzazioni del file dovrebbero apparire come:

-rw-rwxr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

Se dai un'occhiata più da vicino al formato delle autorizzazioni

duuugggooo

I primi tre segnaposto uuusono user re ead, w rite ed e x ecute. I prossimi tre segnaposto gggsono per il gruppo e oooper gli altri. Nel frammento inviato da gruppo OP manca il w permesso di rito.


2

Per aggiungere alla risposta accettata (poiché non posso ancora commentare):

Se usi software come BitVise per creare una connessione SSH al tuo server, semplicemente chiudere e riaprire un terminale non verrà considerato come accesso e disconnessione. Si farà fare le cose come ricaricare il ~/.bashrc, ma non eseguire gli aggiornamenti dei gruppi reali (se si è aggiunto il gruppo nella sessione "login"). Affinché ciò abbia effetto, è necessario disconnettersi completamente e accedere nuovamente con la chiave / credenziali SSH.


2

Le directory necessitano di x bit impostati (per la directory quel bit è visto come bit di ricerca) per aprirsi. Quindi uso tree in modo da ottenere solo il set di cartelle ed evitare l'incubo di avere tutti i file impostati come file eseguibili (l'opzione per tree è -d List directories only.):

sudo tree -faid /mount/abc | xargs -L1 -I{} sudo chmod 755  "{}"

Avvertimento!!! dovresti tenerlo in considerazione:

  • l'uso di chmod o chown ricorsivo nella /directory principale o nelle directory di sistema distruggerà il sistema operativo (in realtà qualsiasi cosa ricorsiva nella /directory o nelle directory di sistema è pericolosa)

  • questa non è una buona pratica di sicurezza per imporre tali autorizzazioni alla rinfusa


1
Grazie mille! Le parole "Directory necessitano di x bit set" hanno risolto il mio problema! Ho fatto "sudo chmod g + x <percorso dir parent>" e ha funzionato.
KinORnirvana,
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.