GNU/Linux >> Linux Esercitazione >  >> Linux

Spiegazione degli elenchi di controllo di accesso su Linux

Questo tutorial descrive in dettaglio gli elenchi di controllo di accesso su Linux, a cosa servono e come gestirli.

In qualità di amministratore di sistema, probabilmente stai dedicando un po' di tempo alla configurazione delle autorizzazioni per utenti e gruppi sul tuo sistema.

I permessi dei file sono già abbastanza utili per dare permessi di lettura, scrittura o esecuzione a directory o file.

E se avessimo bisogno di un modo più preciso per concedere autorizzazioni a cartelle o file?

Cosa succede se voglio concedere l'accesso a un file a un utente specifico oa un gruppo specifico, che non è l'attuale proprietario del file?

Questo è esattamente ciò che elenchi di controllo di accesso, anche abbreviato ACL , stanno risolvendo su un sistema Linux.

Nel tutorial di oggi, esamineremo molto da vicino le liste di controllo degli accessi, cosa sono e come vengono utilizzate per configurare correttamente un sistema Linux.

Pronto?

Cosa imparerai

Se segui questo tutorial fino alla fine, imparerai i seguenti argomenti:

  • Quali elenchi di controllo accessi are e come possono essere letti dal comando ls;
  • Come impostare le autorizzazioni di base su un file utilizzando setfacl comando:
  • Come leggere gli elenchi di controllo di accesso utilizzando getfacl comando;
  • Cos'è la maschera dell'elenco di controllo accessi e come dovrebbe essere letto;
  • Quali elenco di controllo accessi è predefinito sono e come possono essere utilizzati efficacemente

È un programma piuttosto lungo, quindi, senza ulteriori indugi, iniziamo con una rapida definizione di cosa sono gli elenchi di controllo degli accessi.

Nozioni di base sugli elenchi di controllo di accesso su Linux

Su Linux, ci sono due modi per impostare i permessi per utenti e gruppi:con i normali permessi sui file o con elenco di controllo di accesso.

Definizione dell'elenco di controllo accessi

Elenchi di controllo accessi vengono utilizzati sui filesystem Linux per impostare autorizzazioni personalizzate e più personalizzate su file e cartelle. Gli ACL consentono ai proprietari di file o agli utenti privilegiati di concedere diritti a utenti specifici oa gruppi specifici.

In Linux, come probabilmente saprai, i permessi sono divisi in tre categorie:uno per il proprietario del file, uno per il gruppo e uno per gli altri.

Tuttavia, in alcuni casi, potresti voler concedere l'accesso a una directory (ad esempio il permesso di esecuzione) a un utente specifico senza dover inserire questo utente nel gruppo del file.

Questo è esattamente il motivo per cui sono state inventate le liste di controllo degli accessi.

Elenco dell'elenco di controllo accessi

Su Linux, gli elenchi di controllo di accesso non sono abilitati quando crei un nuovo file o una nuova directory sul tuo host (tranne se una directory padre ha alcuni ACL predefiniti).

Per vedere se gli elenchi di controllo di accesso sono definiti per un file o una directory, esegui il comando ls e cerca un "+ carattere ” alla fine della riga di autorizzazione.

$ ls -l

Per mostrare la differenza, ecco la differenza quando si elencano i file su un'istanza minima.

Ora che hai alcune nozioni di base sugli elenchi di controllo di accesso, vediamo come puoi iniziare a creare ACL di base per i tuoi file e directory.

Creazione di elenchi di controllo accessi su Linux

Prima di iniziare con i comandi ACL, è importante che i pacchetti siano installati sull'host.

Verifica dell'installazione dei pacchetti ACL

Potrebbe non essere il caso se scegli di avere un server minimo in esecuzione.

Inizia controllando la guida relativa a setfacl eseguendo il comando seguente

$ setfacl --help

Se il tuo host non riesce a trovare il comando setfacl, assicurati di aver installato i pacchetti necessari per la gestione ACL.

$ sudo apt-get install acl -y

Nota che avrai bisogno dei privilegi sudo su Debian 10 per eseguire questo comando.

Esegui il comando setfacl e assicurati di poter vedere i comandi di aiuto questa volta.

Ora che il tuo host è configurato correttamente, vediamo come funziona il comando setfacl.

Impostazione delle liste di controllo accessi utilizzando setfacl

Con le liste di controllo degli accessi, ci sono due comandi principali che devi ricordare:setfacl e getfacl.

In questo capitolo daremo un'occhiata al setfacl comando poiché quello getfacl è abbastanza autoesplicativo.

Il comando setfacl viene utilizzato su Linux per creare, modificare e rimuovere elenchi di controllo di accesso su un file o una directory.

Il setfacl ha la seguente sintassi

$ setfacl {-m, -x}  {u, g}:<name>:[r, w, x] <file, directory>

Dove le parentesi graffe indicano una delle seguenti opzioni e le parentesi regolari indicano uno o più elementi.

  • -m :significa che vuoi modificare una o più voci ACL nel file o nella directory.
  • -x :significa che vuoi rimuovere una o più voci ACL su un file o una directory.
  • {u, g} :se vuoi modificare l'ACL per un utente o per un gruppo.
  • nome :questo è un parametro facoltativo, può essere omesso se vuoi impostare le voci ACL per ogni utente o per ogni gruppo sul tuo host.
  • [r, w, x] :per impostare i permessi di lettura, scrittura o esecuzione sul file o sulla directory.

Ad esempio, per impostare autorizzazioni di scrittura specifiche per un utente su un file, dovresti scrivere il seguente comando

$ setfacl -m u:user:w <file, directory>

Per impostare i permessi di esecuzione per tutti gli utenti sul tuo host, dovresti scrivere il seguente comando

$ setfacl -m u::x <file, directory>

Per impostare le autorizzazioni complete per un gruppo specifico sul tuo host, dovresti scrivere il setfacl in questo modo

$ setfacl -m g:group:rwx <file, directory>

Ora supponiamo che tu voglia rimuovere una voce ACL da un file.

Per rimuovere una voce specifica dell'utente da un file, dovresti specificare l'opzione x.

Nota :non puoi specificare diritti da una singola voce ACL, il che significa che non puoi rimuovere i permessi di scrittura, mantenendo attivi i permessi di lettura ACL.

$ setfacl -x u:<user> <file, directory>

Allo stesso modo, per rimuovere l'ACL relativo ai gruppi sul tuo host, dovresti scrivere il seguente comando

$ setfacl -x g:<group> <file, directory>

Ora che hai visto come creare facilmente elenchi di controllo di accesso su Linux, è tempo di vedere come puoi controllare gli elenchi di controllo di accesso esistenti su file e directory.

Elencare le liste di controllo accessi usando getfacl

Il comando getfacl viene utilizzato su Linux per stampare un elenco completo di tutti i permessi regolari e gli elenchi di controllo di accesso permessi su un file o una directory.

Il getfacl può essere utilizzato con la seguente sintassi

$ getfacl <file, directory>

Il comando getfacl è diviso in più categorie :

  • Nome file, proprietario e gruppo :in alto vengono visualizzate le informazioni sulla proprietà di utenti e gruppi;
  • Autorizzazioni utente:in primo luogo, dovresti trovare le autorizzazioni utente regolari, chiamate anche utente proprietario, seguite da eventuali voci ACL specifiche dell'utente (chiamate utenti nominati)
  • Autorizzazioni di gruppo :i gruppi proprietari sono presentati seguiti da voci ACL specifiche del gruppo, chiamate anche gruppi denominati
  • Maschera :che limita i permessi concessi alle voci ACL, la maschera verrà descritta in dettaglio nella prossima sezione;
  • Altre autorizzazioni :quelle autorizzazioni sono sempre attive e questa è l'ultima categoria esplorata quando nessun'altra autorizzazione corrisponde all'utente o al gruppo corrente.

Lavorare con la maschera delle liste di controllo accessi

Come probabilmente hai visto dall'ultimo screenshot, c'è una voce di maschera tra i gruppi con nome e le altre autorizzazioni.

Ma a cosa serve questa maschera?

La maschera ACL è diversa dalla maschera di creazione file (umask) e viene utilizzata per limitare le voci ACL esistenti su un file o una directory.

La maschera ACL viene utilizzata come set massimo di autorizzazioni ACL indipendentemente dalle autorizzazioni esistenti che superano la maschera ACL.

Come sempre, un diagramma dice cento parole.

La maschera ACL viene aggiornata ogni volta che esegui un comando setfacl, a meno che tu non specifichi di non voler aggiornare la maschera con il flag -n.

Per evitare che la maschera venga aggiornata, esegui setfacl con il seguente comando

$ setfacl -n -m u:antoine:rwx <file, directory>

Come puoi vedere in questo esempio, ho impostato l'utente "antoine" per avere i permessi completi sul file.

La maschera è impostata per limitare i permessi di lettura e scrittura.

Di conseguenza, i "permessi effettivi" impostati su questo file per questo utente sono quelli di lettura e scrittura, il permesso di esecuzione non è concesso.

Nota :se il tuo set massimo di autorizzazioni differisce dalla voce mask, ti ​​verrà presentata una riga efficace che calcola il set "reale" di voci ACL utilizzate.

Creazione di elenchi di controllo accessi predefiniti nelle directory

Come già accennato in questo articolo, è possibile creare voci ACL su directory e funzionano allo stesso modo delle liste di controllo dell'accesso ai file.

Tuttavia, c'è una piccola differenza quando si tratta di directory:devi scegliere di creare elenchi di controllo di accesso predefiniti.

Impostazioni predefinite degli elenchi di controllo di accesso vengono utilizzati per creare voci ACL su una directory che verrà ereditata da oggetti in questa directory come file o sottodirectory.

Quando si creano voci ACL predefinite:

  • I file creati in questa directory ereditano le voci ACL specificate nella directory principale
  • Le sottodirectory create in questa directory ereditano le voci ACL così come le voci ACL predefinite dalla directory principale.

Per creare voci ACL predefinite, specificare l'opzione -d quando si imposta ACL utilizzando il comando setfacl.

$ setfacl -d -m {u, g}:<name>:[r, w, x] <directory>

Ad esempio, per assegnare autorizzazioni di lettura a tutti i file creati in una directory, eseguire il comando seguente

$ setfacl -d -m u::r directory

Ora, quando un file viene creato in questa directory acl, puoi vedere che le voci ACL predefinite vengono applicate al file.

Allo stesso modo, quando una directory viene creata nella directory acl, ereditarietà voci ACL predefinite specificate nella directory principale.

Si noti che si consiglia di specificare le autorizzazioni predefinite per tutte e tre le categorie (utente, gruppo e altro).

Infatti specificando una delle tre voci si creeranno le restanti due con i permessi relativi alla maschera di creazione del file.

Eliminazione delle liste di controllo accessi predefinite nelle directory

Per eliminare gli elenchi di controllo di accesso esistenti predefiniti nelle directory, utilizzare il -k flag con il comando setfacl.

$ setfacl -k <directory>

Dato l'esempio che abbiamo specificato in precedenza, ecco come eliminare le voci predefinite

$ setfacl -k acl-directory

Tieni presente che l'eliminazione delle voci ACL dalla directory principale non elimina le voci ACL nei file o nelle directory contenute nella directory principale.

Per rimuovere le voci ACL predefinite in una directory e in tutte le sottodirectory , dovresti usare un ricorsivo opzione (-R)

$ setfacl -kR <directory>

Conclusione

In questo tutorial, hai imparato a conoscere gli elenchi di controllo di accesso su Linux, il comando getfacl e il comando setfacl.

Hai imparato di più sulla maschera degli elenchi di controllo di accesso e su come vengono utilizzati gli ACL predefiniti per creare voci ACL su file e sottodirectory contenuti nella directory principale.

Se sei curioso dell'amministrazione del sistema Linux, abbiamo molti altri tutorial sull'argomento, assicurati di leggerli!


Linux
  1. Liste di controllo accessi e unità esterne su Linux:cosa devi sapere

  2. Spiegazione approfondita del comando della cronologia in Linux

  3. Un'introduzione agli elenchi di controllo di accesso (ACL) di Linux

  4. ls Command in Linux:17 esempi utili spiegati

  5. accesso simultaneo al file linux

Spiegazione del controllo degli accessi basato sul ruolo (RBAC) di Snowflake

Il comando Tr in Linux spiegato con esempi

Spiegazione del comando sorgente su Linux

Spiegazione del reindirizzamento di input e output su Linux

Spiegazione del comando dello schermo su Linux

Spiegazione del comando Arping su Linux