Il comando setFacl in Linux

Il comando setFacl in Linux
“Questo tutorial spiega come utilizzare il comando setFacl per definire le autorizzazioni ACL (Elenco di controllo degli accessi).

Gli elenchi di controllo degli accessi (ACL) ci consentono di gestire le autorizzazioni con opzioni aggiuntive rispetto a quelle offerte dalle autorizzazioni POSIX (autorizzazioni comuni che gestiamo con il chmod comando).

Leggendo questo tutorial, imparerai il più importante setfacl opzioni correlate.

Questo documento è ottimizzato per entrambi gli utenti che cercano velocemente setfacl Istruzioni da implementare e per gli utenti che non hanno familiarità con ACL, che possono trovare tutti i contenuti teorici necessari necessari per capirlo dopo la sezione pratica. Ho anche aggiunto una tabella che riassume il setfacl Opzioni di comando descritte di seguito.

Tutti gli esempi inclusi in questo articolo contengono schermate, rendendo facile per ogni utente Linux capirli."

Le opzioni di comando setfacl

Prima di iniziare con il setfacl comando, controlliamo le autorizzazioni correnti del file denominato . Per verificare le autorizzazioni ACL correnti, eseguire il getfacl comando usando la seguente sintassi:

getfacl

Nel mio caso, eseguo il comando mostrato nello screenshot seguente.

GetFacl File1

Come puoi vedere nello screenshot sopra, il file ha autorizzazioni POSIX standard per il proprietario chiamato Linuxhint (lettura e scrittura), per il Linuxhint gruppo (lettura) e per altri (lettura). L'utente e il gruppo sono Linuxhint.

Queste sono le autorizzazioni che applichiamo usando il chmod comando, che ci consente di definire le autorizzazioni per il proprietario, il gruppo e altri.

Ora diciamo che vogliamo aggiungere autorizzazioni personalizzate per un altro utente specifico utilizzando le autorizzazioni estese ACL.

Nell'esempio seguente, concederò le autorizzazioni di lettura, scrittura e esecuzione sullo stesso file all'utente Linuxhint2. Quindi corro getfacl Ancora una volta per controllare le modifiche.

setfacl -m u: linuxhint2: file rwx1

Dove:

  • setfacl: Invoca il programma per gestire le autorizzazioni.
  • -M: Questo flag viene utilizzato per modificare le autorizzazioni.
  • U: Linuxhint2: RWX: Specifica l'utente Linuxhint2 (U: Linuxhint2) e gli concede le autorizzazioni di lettura, scrittura e esecuzione (: RWX).
  • File1: Il file di destinazione a cui vengono modificate/applicate le autorizzazioni.

NOTA: Come puoi vedere nello screenshot precedente, oltre alle autorizzazioni regolari, possiamo vedere un nuovo utente (Linuxhint2) con le autorizzazioni personalizzate sono state aggiunte e una nuova linea chiamata A maschera; Questo verrà spiegato in seguito di seguito.

Ma ora, supponiamo che vogliamo concedere le autorizzazioni a un gruppo diverso anziché a un utente diverso. La sintassi è quasi la stessa, ad eccezione del u: opzione, che deve essere sostituita con G: come ho mostrato nella figura seguente, dove il gruppo Linuxhint3 è concesso le autorizzazioni di lettura e scrittura. Poi corro getfacl Per verificare le modifiche.

setfacl -m g: linuxhint3: file rw1

Come puoi vedere, un nuovo gruppo (Linuxhint3) è stato aggiunto con le autorizzazioni di lettura e scrittura.

Ora spieghiamo il maschera Linea che è apparsa dopo aver richiesto le autorizzazioni ACL estese.

IL maschera consente le autorizzazioni di sovrascrittura per utenti, gruppi o altri, ad eccezione del proprietario. Se la maschera è R, Utenti, gruppi e altri (tutti tranne il proprietario) con precedenti autorizzazioni di scrittura o esecuzione efficaci li perderanno. Il limite di maschera influisce su tutti gli utenti ad eccezione del proprietario. È una funzione sovrascrivere le autorizzazioni esistenti, limitarle o aumentarle.

Per modificare la maschera, non è necessario specificare utenti o gruppi; Basta specificare la maschera seguita da autorizzazioni utilizzando M: Come mostrato nell'esempio seguente.

setfacl -m m: r file1

Come puoi vedere, dopo aver impostato una maschera con un limite di lettura, il Linuxhint2 utente, che in precedenza aveva autorizzazioni di lettura, scrittura e esecuzione e il gruppo Linuxhint3, Chi ha avuto le autorizzazioni di lettura e scrittura, ora hanno solo una lettura di un permesso efficace. Il limite di lettura della maschera ha sovrascritto le loro autorizzazioni precedenti. Solo le autorizzazioni del proprietario rimangono intatti.

Ma se la maschera è impostata per leggere le autorizzazioni e si concede un utente, un gruppo o altri più delle autorizzazioni di lettura, la maschera verrà automaticamente modificata, aumentando il limite in base alle autorizzazioni di recente concessione. Per impostazione predefinita, il limite di maschera non può essere inferiore a una autorizzazione concessa esistente a diversa dal proprietario (vedremo come impedirlo in seguito di seguito).

Ciò significa se la maschera è impostata su R (Lettura) e concedo a un utente ulteriori autorizzazioni di scrittura ed esecuzione (RWX), la maschera diventerà RWX.

Innanzitutto, vediamo il nostro scenario attuale, dove si trova la maschera R- (Solo il permesso di lettura).

Ora, vediamo cosa succede se aggiungo autorizzazioni di esecuzione e scrittura per l'utente Linuxhint2, Chi ha attualmente solo autorizzazioni di lettura efficaci (come tutti tranne il proprietario).

setfacl -m u: linuxhint2: file rwx1

Come puoi vedere, non solo il Linuxhint2 Le autorizzazioni dell'utente sono state aggiornate, ma anche la maschera. Questo perché, per impostazione predefinita, la maschera rappresenta un limite e se il limite viene superato da un nuovo ordine, aumenta.

È possibile avere autorizzazioni di maschera specifiche e concedere autorizzazioni aggiuntive a un utente, un gruppo o altri specifici senza modificare la maschera implementando il flag -n.

IL -N La bandiera indica ad ACL di mantenere invariata la maschera, anche se alcune autorizzazioni la superano.

Vediamo il nuovo scenario, dove è impostata la maschera R-

Nell'esempio seguente, l'utente Linuxhint2 è dato autorizzazioni di scrittura ed esecuzione, ma il -N La bandiera è implementata per impedire la modifica della maschera.

Come puoi vedere di seguito, il Linuxhint2 All'utente è stato assegnato i diritti di scrittura ed esecuzione, ma la maschera rimane invariata come indicato dal -N bandiera.

setfacl -n -m u: linuxhint2: wx file1

IL -D Il flag viene utilizzato per definire le autorizzazioni predefinite per il contenuto di una directory. Questo flag non influisce sulle autorizzazioni della directory ma solo il contenuto, inclusi file e sottodirectory.

Questo flag può essere utile, ad esempio, per creare autorizzazioni predefinite per un utente o un gruppo specifici rispetto al contenuto della directory. Quando vengono creati nuovi file all'interno di quella directory, gli utenti o i gruppi definiti ottengono le autorizzazioni definite predefinite.

Nell'attuale scenario, c'è una directory con le seguenti autorizzazioni.

Nell'esempio seguente, Altro (Tutti gli utenti che non sono proprietari o gruppi) verranno forniti come autorizzazioni di lettura predefinite per il contenuto della directory chiamata "directory."

setfacl -d -m o: r directory

Come puoi vedere nello screenshot sopra, rimangono le autorizzazioni predefinite per l'utente e il gruppo, mentre le autorizzazioni predefinite a Altro sono stati cambiati solo in lettura. Ora, se vengono creati nuovi file e sottodirectory in "directory,"Altri verranno dati le autorizzazioni di lettura per impostazione predefinita.

IL -R La flag consente di applicare le regole ACL in modo ricorsivo. Quando -R è implementato, le autorizzazioni definite influenzeranno la directory specificata e tutti i suoi file e sottodirectory. Questo flag è presente in molti comandi Linux per attività ricorsive.

Il seguente comando dà Altro Leggere e scrivere autorizzazioni per Directory1 ricorsivamente.

setfacl -r -m o: RW Directory1

ACL consente di ripristinare le autorizzazioni di backup.

Nella seguente immagine, il comando getfacl viene utilizzato per effettuare un backup ricorsivo del “directory"A un file chiamato"Aclpermissions.TXT."

directory getfacl -r> aclpermissions.TXT

Per ripristinare il backup, usa il -ristabilire opzione seguita da =

Nel mio caso:

SetFacl - -Restore = AclPermissions.TXT

È inoltre possibile utilizzare il comando setfacl per copiare le autorizzazioni da un file a un altro.

Lo scenario corrente per l'inventario dei file è il seguente:

Nel seguente esempio, copio le autorizzazioni da File1 a un file chiamato "inventario."

GetFacl File1 | setFacl-set-file =-inventario

Cos'è un ACL (elenco di controllo degli accessi)

Un ACL è un sistema di autorizzazioni native di Windows per gestire l'accesso a risorse come file, directory, partizioni, ecc. Questo sistema si basa su oggetti a cui le autorizzazioni sono definite per utenti, gruppi e altri, inclusi individualmente, come mostrato sopra.

Le autorizzazioni sono allegate al file definito, alla directory o al file system che definiscono l'accesso per il proprietario, gli utenti, i gruppi o altri.

Differenza tra il permesso ACL e Posix

Mentre con le autorizzazioni POSIX, gli utenti possono gestire le autorizzazioni per il proprietario, il gruppo e altri, ACL consente la gestione delle autorizzazioni personalizzate per tutti, inclusi utenti e gruppi.

Inoltre, ACL implementa nuovi tipi di autorizzazioni, come le autorizzazioni predefinite spiegate in questo tutorial.

Questo porta flessibilità che non possiamo goderci con le autorizzazioni positive regolari. Eppure, come puoi vedere, entrambi lavorano in combinazione e la loro combinazione porta una forte struttura per autorizzazioni.

Il comando setFacl viene utilizzato per impostare le autorizzazioni ACL su file, directory e filesystems.
Questo viene utilizzato per specificare file, directory, utenti, gruppi o altri con le autorizzazioni desiderate quando si servono a rompere i limiti di Posix. Il proprietario della risorsa e i processi con Cap_Fowner hanno il diritto di modificare le autorizzazioni ACLS.

La tabella seguente riassume alcune opzioni ACL

OPZIONI FUNZIONE
-M Modifica ACL
-X Rimuovi tutto ACLRemove ACL
-B Rimuovere tutto l'ACL
-K Rimuovere le autorizzazioni predefinite
-R Applica ACL in modo ricorsivo
-L Segue i collegamenti simbolici
-P Non segue i collegamenti simbolici
M: Definire la maschera
-restaura = Ripristina ACL da un file di backup creato con getfacl -R
-test Non applica modifiche ma visualizza il risultato
-N Non influire sulla maschera

Puoi trovare molte più informazioni su ACL e il comando setFacl su https: // linux.morire.Net/Man/5/ACL e https: // Linux.morire.net/man/1/setfacl.

Conclusione

Come puoi vedere, ACL consente agli utenti di personalizzare le autorizzazioni rispetto ai limiti del sistema di autorizzazioni POSIX. Questo è estremamente utile quando le risorse devono essere condivise con tipi di accesso specifici. Come puoi vedere, ACL è facile da comprendere e implementare e può essere appreso da qualsiasi utente Linux indipendentemente dal loro livello di conoscenza. L'ACL è un'eccezione storica in cui Linux ha importato una funzione da Windows. Puoi ottenere ulteriori informazioni su ACL sulla pagina Man.

Grazie per aver letto questo tutorial spiegando come utilizzare il comando setFacl in Linux. Continua a seguire il nostro blog per più contenuti Linux professionali.