Come vengono elaborate le autorizzazioni ACL e in quale ordine si applicano a una determinata azione dell'utente?


21

CentOS 6.4

Sto cercando di capire meglio come vengono elaborate le regole ACL del filesystem e in quale ordine si applicano le regole ACL.

Ad esempio, supponiamo che gli utenti bob e joe appartengano a un gruppo chiamato vendite. Diciamo anche che ho un documento di vendita con i seguenti dettagli:

[root@Maui ~]# getfacl /home/foo/docs/foo.txt
getfacl: Removing leading '/' from absolute path names
# file: home/foo/docs/foo.txt
# owner: jane
# group: executives
user:: r--
user:bob:rw-
user:joe:rwx
group:sales:rwx
group::r--
mask::rwx
other::---

La mia domanda è: come vengono elaborate le autorizzazioni in un esempio come questo e quali privilegi di accesso hanno la precedenza?

Esiste solo una ricerca dall'alto verso il basso e qualunque regola corrisponda per prima è quella applicabile?

Oppure Linux impone l'accesso in base a qual è la regola più specifica per l'utente in questione? O forse la regola più restrittiva e applicabile ha la precedenza?

Risposte:


15

Questo è un argomento piuttosto ampio e un po 'troppo da trattare qui. Mi riferirò alle liste di controllo degli accessi POSIX sul white paper di Linux messe insieme da Andreas Grünbacher dei SuSE Labs. Fa un ottimo lavoro nel trattare l'argomento e scomporlo in modo da capire come funzionano gli ACL.

Il tuo esempio

Ora diamo un'occhiata al tuo esempio e analizzalo.

  • gruppo (vendite)
  • membri del gruppo di vendita (bob, joe)

Ora suddividiamo le autorizzazioni sul file /home/foo/docs/foo.txt. Gli ACL incapsulano anche le stesse autorizzazioni che la maggior parte delle persone dovrebbe avere familiarità con Unix, principalmente l'utente, il gruppo e altri bit. Quindi estraiamoli prima.

user:: r--
group::r--
other::---

Questi in genere si presentano così in un ls -l:

$ ls -l /home/foo/docs/foo.txt
-r--r----- 1 jane executives 24041 Sep 17 15:09 /home/foo/docs/foo.txt

Puoi vedere chi possiede il file e qual è il gruppo con queste righe ACL:

# owner: jane
# group: executives

Quindi ora entriamo nel nocciolo degli ACL:

user:bob:rw-
user:joe:rwx
group:sales:rwx

Questo sta dimostrando che l'utente bobha rw, mentre l'utente joeha rwx. C'è anche un gruppo che ha anche rwxsimili a Joe. Queste autorizzazioni sono come se la colonna utente nel nostro ls -loutput avesse 3 proprietari (jane, bob e joe) e 2 gruppi (dirigenti e vendite). Non c'è distinzione se non che sono ACL.

Infine la masklinea:

mask::rwx

In questo caso non mascheriamo nulla, è completamente aperto. Quindi se gli utenti bob e joe hanno queste linee:

user:bob:rw-
user:joe:rwx

Quindi quelli sono i loro permessi effettivi. Se la maschera fosse così:

mask::r-x

Quindi le loro autorizzazioni effettive sarebbero così:

user:bob:rw-    # effective:r--
user:joe:rwx    # effective:r-x

Questo è un potente meccanismo per limitare le autorizzazioni concesse in modo all'ingrosso.

NOTA: il proprietario del file e le altre autorizzazioni non sono interessate dalla maschera dei diritti effettiva; tutte le altre voci sono! Quindi, rispetto alla maschera, le autorizzazioni ACL sono cittadini di seconda classe rispetto alle autorizzazioni Unix tradizionali.

Riferimenti

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.