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:
[[email protected] ~]# 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?
C'è solo una ricerca dall'alto verso il basso e qualunque regola corrisponda per prima è quella che si applica?
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?
Risposta accettata:
Questo è un argomento piuttosto ampio e un po' troppo da trattare qui. Ti rimando al whitepaper POSIX Access Control Lists su Linux messo 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 scomponiamolo.
- gruppo (vendite)
- membri del gruppo di vendita (bob, joe)
Ora analizziamo i permessi sul file /home/foo/docs/foo.txt
. Gli ACL incapsulano anche le stesse autorizzazioni con cui la maggior parte delle persone dovrebbe avere familiarità su Unix, principalmente i bit Utente, Gruppo e Altro. Quindi estraiamo prima quelli.
user:: r--
group::r--
other::---
Questi in genere apparirebbero 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 mostra quell'utente bob
ha rw
, mentre l'utente joe
ha rwx
. C'è anche un gruppo che ha anche rwx
simile a Joe. Queste autorizzazioni sono come se la colonna utente nel nostro ls -l
l'output aveva 3 proprietari (jane, bob e joe) e 2 gruppi (dirigenti e vendite). Non c'è distinzione se non sono ACL.
Infine la mask
riga:
mask::rwx
In questo caso non stiamo mascherando nulla, è spalancato. Quindi, se gli utenti bob e joe hanno queste righe:
user:bob:rw-
user:joe:rwx
Allora quelli sono i loro permessi effettivi. Se la maschera fosse così:
mask::r-x
Quindi i loro permessi effettivi 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.
Correlati:Debian – Come arricciare il contenuto completo della pagina web?NOTA: Il proprietario del file e altri permessi non sono interessati dall'effettiva maschera dei diritti; tutte le altre voci sono! Quindi rispetto alla maschera, i permessi ACL sono cittadini di seconda classe rispetto ai tradizionali permessi Unix.
Riferimenti
- getfacl(1) – Pagina man di Linux
- Elenchi di controllo accessi POSIX su whitepaper Linux