Quali relazioni legano la maschera ACL e l'autorizzazione di gruppo standard su un file?


17

All'inizio creo un file e ne controllo le autorizzazioni standard e le voci ACL:

$ touch file; ls -l file; getfacl file
-rw-r--r-- 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
other::r--

Quindi ho impostato la maschera ACL sul file e ho verificato nuovamente le autorizzazioni standard e le voci ACL:

$ setfacl -m mask:rwx file
$ ls -l file; getfacl file
-rw-rwxr--+ 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
mask::rwx
other::r--

Si noti che insieme all'autorizzazione di gruppo standard maschera ACL anche sul file è cambiato.

  1. Quale connessione esiste tra la maschera ACL e l'autorizzazione di gruppo standard?
  2. Qual è la ragione per cui si associano i permessi della maschera ACL e del gruppo di file? Quale logica sta dietro?

Le distribuzioni in questione sono Debian Linux 7.6 e CentOS 7


MODIFICARE

A questo punto volevo solo condividere alcune delle mie scoperte che mi sono venute mentre cercavo le relazioni tra i permessi del gruppo di file standard e la maschera ACL. Ecco le osservazioni empiriche che ho trovato:

  1. La maschera ACL può essere cambiata:

    1. impostandolo direttamente con setfacl -m m:<perms>comando;
    2. modificando le autorizzazioni del gruppo di file con il chmodcomando (se la maschera ACL è già presente; potrebbe non essere presente perché è facoltativa se sul file non sono presenti autorizzazioni ACL utente o di gruppo denominate);
    3. aggiungendo la voce ACL utente o di gruppo (la maschera verrà ricalcolata automaticamente).
  2. La maschera imporrà i diritti di accesso massimo (se sono presenti voci ACL con autorizzazioni che superano le autorizzazioni maschera ACL) solo se la maschera viene impostata direttamente da setfacl o dalla modifica dell'autorizzazione del gruppo di file con chmod (non calcolata automaticamente). Qualsiasi modifica alle voci ACL attiverà il ricalcolo automatico della maschera ACL e disattiverà efficacemente la "modalità di applicazione".

  3. Esistono un paio di effetti collaterali che incidono implicitamente sulle autorizzazioni del gruppo di file standard quando si utilizzano gli ACL:

    1. La voce ACL dell'utente o del gruppo denominata applicata a un file può modificare la maschera ACL (aumentarne le autorizzazioni) e quindi le autorizzazioni effettive del gruppo di file. Ad esempio, se tu, come proprietario del file, hai impostato le autorizzazioni "rw-r - r-- jim studenti" e concedi anche l'autorizzazione rw all'utente "jack", concedi implicitamente anche le autorizzazioni rw a chiunque dal gruppo "studenti".
    2. La maschera ACL più rigorosa (meno autorizzazioni) può rimuovere in modo permanente le autorizzazioni standard corrispondenti per i gruppi di file. Ad esempio, se si dispone di un file con autorizzazioni di gruppo file rw standard e si applica una maschera ACL di sola lettura al file, le autorizzazioni di gruppo diminuiranno in sola lettura. Quindi, se si rimuovono tutte le voci ACL estese (con setfacl -bcomando), le autorizzazioni di gruppo rimarranno di sola lettura. Questo vale solo per una maschera ACL più rigorosa, una maschera ACL più morbida (più autorizzazioni) non modifica permanentemente l'autorizzazione del gruppo di file originale dopo la sua rimozione.

Penso che potresti prendere la seguente pagina di riferimento, www-uxsup.csx.cam.ac.uk/pub/doc/suse/sles9/adminguide-sles9/…
kundy,

Risposte:


11

Non ha senso se le autorizzazioni del file unix non sono d'accordo con la voce acl e viceversa. Di conseguenza, la pagina del manuale ( acl(5)) dice quello che chiedi:

CORRISPONDENZA TRA ISCRIZIONI ACL E BIT PER L'AMMISSIONE DEI FILE

Le autorizzazioni definite dagli ACL sono un superset delle autorizzazioni specificate dai bit di autorizzazione del file.

Esiste una corrispondenza tra il proprietario del file, il gruppo e altre autorizzazioni e voci ACL specifiche: le autorizzazioni del proprietario corrispondono alle autorizzazioni della voce ACL_USER_OBJ. Se l'ACL ha una voce ACL_MASK, le autorizzazioni del gruppo corrispondono alle autorizzazioni della voce ACL_MASK. Altrimenti, se l'ACL non ha una voce ACL_MASK, le autorizzazioni del gruppo corrispondono alle autorizzazioni della voce ACL_GROUP_OBJ. Le altre autorizzazioni corrispondono alle autorizzazioni della voce ACL_OTHER_OBJ.

Il proprietario del file, il gruppo e altre autorizzazioni corrispondono sempre alle autorizzazioni della voce ACL corrispondente. La modifica dei bit di autorizzazione del file comporta la modifica delle voci ACL associate e la modifica di queste voci ACL comporta la modifica dei bit di autorizzazione del file.

Addendum in risposta alla discussione:

Qual è la ragione per cui si associano i permessi della maschera ACL e del gruppo di file? Quale logica sta dietro?

Una buona spiegazione è qui . In sostanza la maschera è un

[...] limite superiore delle autorizzazioni concesse da qualsiasi voce nella classe di gruppo.

Questa proprietà con limite superiore garantisce che le applicazioni POSIX.1 che non sono a conoscenza degli ACL non inizieranno improvvisamente e inaspettatamente a concedere autorizzazioni aggiuntive una volta che gli ACL sono supportati.

In ACL minimi, le autorizzazioni della classe di gruppo sono identiche alle autorizzazioni del gruppo proprietario. Nelle ACL estese, la classe di gruppo può contenere voci per utenti o gruppi aggiuntivi. Ciò comporta un problema: alcune di queste voci aggiuntive potrebbero contenere autorizzazioni che non sono contenute nella voce del gruppo proprietario, quindi le autorizzazioni per la voce del gruppo proprietario potrebbero differire dalle autorizzazioni della classe del gruppo.

Questo problema è risolto dalla virtù della voce maschera. Con ACL minimi, le autorizzazioni della classe di gruppo si associano alle autorizzazioni di immissione del gruppo proprietario. Con ACL estesi, le autorizzazioni della classe di gruppo si associano alle autorizzazioni della voce maschera, mentre la voce del gruppo proprietario definisce ancora le autorizzazioni del gruppo proprietario. La mappatura delle autorizzazioni della classe di gruppo non è più costante.


Quello che stai dicendo si applica al seguente output getfacl: user :: rw- group :: r-- altro :: r-- . Queste 3 righe cambieranno se si utilizza il chmodcomando per modificare le autorizzazioni standard e viceversa quando si esegue, ad esempio getfacl -m u:someuser:rwx, l'autorizzazione del file standard per il proprietario del file cambierà e la modifica si rifletterà ls -lnell'output. È tutto vero, ma non vedo come risponda alla mia domanda
golem,

guarda la mia modifica per la storia completa
contromodalità

1
La tua risposta modificata afferma che esiste un accoppiamento tra le autorizzazioni del gruppo di file e la maschera ACL in base alla progettazione. La domanda su quale sia la ragione per accoppiare i permessi della maschera ACL e del gruppo di file è ancora attiva. Quale logica stia dietro non è chiara per me.
Golem,

1
Potrebbe esserci senso. Dipende dalla definizione e dall'implementazione. Per definizione, il file Linux ACL, così come è ora implementato, è un superset delle autorizzazioni standard per i file, che sono incluse. Quindi non possono "contraddire". Ecco un caso d'uso. Se assegno i permessi rwx a un "testuser" per il file con -rw-r--r-- 1 user userpermessi iniziali , quel nome utente ACL verrà accettato e anche la maschera ACL (insieme ai permessi del gruppo di file) verrà modificata in rwx. --- [vedi il prossimo commento come continuazione]
golem

1
Ora le autorizzazioni rwx di "testuser" sono in contraddizione con le nuove -rw-rwxr-- 1 user userautorizzazioni del file o no? Come si determina la contraddizione? Confrontando le autorizzazioni ACL del testuser con l'autorizzazione standard del gruppo di file? Quale logica ti ha portato a confrontare le autorizzazioni di gruppo con le autorizzazioni utente? Non sono entità diverse? Non è controintuitivo? Probabilmente è ovvio per te, ma sto ancora lottando per afferrarlo.
Golem,

3

Ho finalmente capito cosa sta succedendo esattamente quando ho visto questo link Gestione degli ACL

In particolare, le maschere prendono il posto e funzionano per sostituire NAMED USER e tutte le autorizzazioni del GRUPPO. Ciò significa che se:

  1. regola la maschera, cambi le autorizzazioni massime del gruppo,
  2. se si modifica una delle autorizzazioni di gruppo con una maschera presente, la maschera accetta le autorizzazioni di gruppo massime di tutte le autorizzazioni di gruppo
  3. le autorizzazioni di lettura, scrittura ed esecuzione del gruppo sono determinate in base alla maschera, se presente

inserisci qui la descrizione dell'immagine

Speriamo che questo aiuti.


C'è una bella spiegazione della maschera nella pagina che hai indicato (citazione dalla sezione 27.3.3. Una directory con accesso ACL ): maschera definisce le autorizzazioni di accesso massime effettive per tutte le voci nella classe del gruppo. Ciò include l'utente con nome, il gruppo con nome e il gruppo proprietario. .
patryk.beza,

-1

Quale logica sta dietro?

La logica è completamente rotta e quindi gli ACL POSIX sono assurdità pure e inutili.

Se miravano a preservare la compatibilità con le app che non hanno nozioni di ACL eccetto il modello "ugo" di UNIX primitivo standard , in realtà hanno fallito all'inizio perché ora ogni app che cancella le autorizzazioni del gruppo sta effettivamente ritirando l'accesso aggiunto dagli ACL.

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.