GNU/Linux >> Linux Esercitazione >  >> Linux

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

Tra le sfide dell'amministrazione di Linux nel moderno ambiente aziendale c'è l'aspettativa che possiamo e dobbiamo gestire chi ha accesso a quali informazioni. C'era una volta, le uniche persone che avevano bisogno di accedere ai filesystem Linux potevano essere classificate in modo generale:attraverso i permessi del filesystem Linux.

Revisione delle nozioni di base

Il filesystem Linux ci fornisce tre tipi di permessi. Ecco una recensione semplificata:

  • U ser (o proprietario dell'utente)
  • G gruppo (o gruppo proprietario)
  • O là (tutti gli altri)

Con queste autorizzazioni, possiamo concedere tre (in realtà cinque, ma ci arriveremo tra un minuto) tipi di accesso:

  • R vai
  • C rito
  • eX eseguire

Questi livelli di accesso sono spesso adeguati in molti casi. Supponiamo di avere una directory in cui risiedono i file del reparto contabilità. Puoi impostare queste autorizzazioni su:

drwxrwxr-x  2 accounting accounting  12 Jan  8 15:13

L'utente del servizio di contabilità (il proprietario dell'utente) può leggere e scrivere nella directory e i membri della accounting gruppo (o gruppo proprietario) può leggere e scrivere. Altri (utenti che non fanno parte del reparto contabilità) possono, tuttavia, vedere ed eseguire ciò che c'è dentro, cosa che alcuni potrebbero ritenere una cattiva idea.

[ Popolare anche: Nozioni di base sull'amministratore di sistema Linux:gestione dell'account utente ]

Quindi, potremmo modificare le autorizzazioni in questo:

drwxrwx---  2 accounting accounting  12 Jan  8 15:13 .

Nota: Puoi anche utilizzare autorizzazioni speciali per controllare impostazioni come chi possiede effettivamente i nuovi file creati in quella directory, nonché il bit persistente che controlla se i membri del gruppo possono eliminare i file degli altri. Tuttavia, questo esula dall'ambito di questa discussione.

Visualizzazione dell'ACL corrente

Cosa succede se hai uno stagista contabile (Kenny) che deve essere in grado di leggere determinati file (o anche solo i file di proprietà di Fred, il suo manager)? O forse anche le persone nel reparto vendite hanno bisogno di accedere alla accounting i file del proprietario per creare fatture per il team di Fred al fine di fatturare i clienti, ma non vuoi che il team di vendita veda gli altri rapporti generati dal team di Fred. Questa situazione può essere complicata perché, con autorizzazioni regolari, ogni file e directory può avere un solo utente e proprietario di gruppo alla volta. Questo tipo di situazione è ciò che gli elenchi di controllo di accesso (ACL) di Linux dovevano risolvere.

Gli ACL ci consentono di applicare un insieme più specifico di autorizzazioni a un file o una directory senza (necessariamente) modificare la proprietà e le autorizzazioni di base. Ci consentono di "attaccare" l'accesso ad altri utenti o gruppi.

Possiamo visualizzare l'ACL corrente usando il getfacl comando:

[root]# getfacl /accounting
getfacl: Removing leading '/' from absolute path names
# file: accounting
# owner: accounting
# group: accounting
user::rwx
group::rwx
other::---

Possiamo vedere che in questo momento non ci sono ACL in questa directory perché le uniche autorizzazioni elencate sono per l'utente, il gruppo e altro. In questo caso, c'è da aspettarselo, perché ho appena creato questa directory in lab e non ho fatto altro che assegnare la proprietà. Quindi, iniziamo aggiungendo un ACL predefinito:

Impostazione di un ACL

La sintassi per impostare un ACL è la seguente:

setfacl [option] [action/specification] file

L'"azione" sarebbe -m (modifica) o -x (rimuovere) e la specifica sarebbe l'utente o il gruppo seguito dalle autorizzazioni che vogliamo impostare. In questo caso, utilizzeremo l'opzione -d (predefinito). Quindi, per impostare l'ACL predefinito per questa directory, eseguiremo:

[root]# setfacl -d -m accounting:rwx /accounting

Dopo di che ora possiamo vedere le informazioni ACL predefinite per quella directory:

[root]# getfacl /accounting
[root]# getfacl: Removing leading '/' from absolute path names
# file: accounting
# owner: accounting
# group: accounting
user::rwx
group::rwx
other::---
default:user::rwx
default:user:accounting:rwx
default:group::rwx
default:mask::rwx
default:other::---

Cosa succede se Fred crea un file in quella directory?

[fred]$ touch test
[fred]$ ls -la
drwxrwx---+  2 accounting accounting  18 Jan  8 17:51 .
dr-xr-xr-x. 18 root  root  262 Jan  8 15:13 ..
-rw-rw----+  1 fred  accounting  0 Jan  8 17:51 test
[fred]$ getfacl test
# file: test
# owner: fred
# group: accounting
user::rw-
user:accounting:rwx  #effective:rw-
group::rwx  #effective:rw-

Cosa succede se Kenny prova a creare un file? Potresti indovinarlo perché kenny non è nella accounting gruppo, non avrà il permesso. Ma vogliamo che Kenny abbia una buona esperienza di lavoro con noi, quindi dobbiamo dargli la possibilità di vedere quali file ci sono nella accounting directory e vogliamo che sia in grado di creare nuovi file:

[root@lab1 accounting]setfacl -m kenny:rwx /accounting
[root]getfacl ./
# file: .
# owner: accounting
# group: accounting
user::rwx
user:kenny:rwx

Fin qui tutto bene. Ma cosa succede se non vogliamo che questo utente crei file nella accounting directory? Invece, vogliamo solo fargli leggere i file lì e può creare nuovi file nella sua cartella.

[ Articolo correlato: Nozioni di base sull'amministratore di sistema Linux:gestione dell'account utente con UID e GID ]

Possiamo impostare l'accesso di Kenny sulla accounting cartella come questa:

[root@lab1 accounting]# setfacl -m kenny:r-x /accounting
[root]# getfacl ./
# file: .
# owner: accounting
# group: accounting
user::rwx
User:kenny:r-x

Ora creiamo a Kenny la sua cartella, gli diamo la proprietà e quindi creiamo la accounting raggruppare il proprietario del gruppo in modo che altre persone nella accounting il gruppo può vedere cosa c'è dentro:

[root@lab1 accounting]# mkdir ./kenny
[root]# chown kenny:accounting ./kenny
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:rwx
group::rwx

Hai creato una cartella all'interno di accounting gruppo di proprietà dell'utente kenny . Ora può vedere la cartella contabilità, ma solo creare file nella sua cartella:

[root@lab1 accounting]# su kenny
[kenny]$ touch test
touch: cannot touch ‘test’: Permission denied
[kenny]$ cd ./kenny
[kenny]$ touch test
[kenny]$ ls
test

Nota che poiché la cartella è di proprietà della accounting gruppo, chiunque in quel gruppo può inserire file lì. Poiché abbiamo a che fare con uno stagista, questo fattore probabilmente va bene. Tuttavia, cosa succede se diamo a Kenny una promozione a revisore capo e vogliamo mantenere il suo lavoro segreto a Fred?

[root]# setfacl -m fred:- ./kenny
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---

E se non avessimo voluto nessuno per vedere a cosa sta lavorando Kenny?

[root]# setfacl -m g:accounting:- ./kenny

Nota: Quando vogliamo impostare un gruppo ACL, dobbiamo specificarlo inserendo g: davanti al nome del gruppo. Per gli utenti, basta modificare il g a un u , ma setfacl presumerà che stiamo parlando di un utente se non metti nulla in quel punto.

Dobbiamo ancora rimuovere le autorizzazioni di base per il proprietario del gruppo in modo che il resto del team di contabilità non possa curiosare nei rapporti di Kenny:

[root]# chmod g-rwx ./kenny
[root]# ls -al
total 0
drwxrwx-wx+  3 accounting accounting  44 Jan  9 16:38 .
dr-xr-xr-x. 18 root       root       262 Jan  8 15:13 ..
drwx------+  2 kenny      accounting  18 Jan  9 17:07 kenny
-rw-rw----+  1 root       root         0 Jan  9 16:33 test
-rw-rw----+  1 kenny      accounting   0 Jan  9 16:27 test2
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---
group::rwx  #effective:---
[root]# su jan
[jan]$ touch ./kenny/test
touch: cannot touch ‘./kenny/test’: Permission denied

Ora possiamo gestire chi altro può vedere o scrivere nella cartella di Kenny senza modificare la proprietà. Diamo al CEO (Lisa, che non è un membro del team di contabilità e non avrà accesso al resto della cartella) l'accesso alle cose di Kenny:

[root@lab1 accounting]# useradd lisa
[root]# setfacl -m u:lisa:rwx ./kenny
[root]# su lisa
[lisa]$ touch ./kenny/lisa
[lisa]$ ls ./kenny
lisa  test
[lisa]$ touch test
touch: cannot touch ‘test’: Permission denied
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---
user:lisa:rwx
group::rwx
group:accounting:---

Si noti ancora che le autorizzazioni del proprietario del gruppo rimangono aperte, ma il gruppo di contabilità (che è ancora il proprietario) non ha più accesso a quella cartella. Allora, chi lo possiede?

drwxrwx---+  2 kenny  accounting  30 Jan  9 17:16 kenny

Questa parte è difficile. È utile sapere che possiamo togliere le autorizzazioni del proprietario senza cambiare la proprietà, ma potresti voler considerare se questo è il risultato che desideri.

Conclusione

Quindi queste sono le basi. Gli ACL possono creare confusione, quindi ti incoraggio a fornire le pagine man per setfacl e getfacl una buona lettura. Ci sono molte altre cose interessanti e utili che puoi fare con questi strumenti, ma si spera che ora capirai abbastanza per iniziare.

[ Vuoi provare Red Hat Enterprise Linux? Scaricalo ora gratuitamente. ]


Linux
  1. Introduzione ai comandi Linux chgrp e newgrp

  2. Elenca i membri di un gruppo in Linux

  3. RHEL 7 – RHCSA Notes – Creare e gestire Access Control List (ACL)

  4. Come configurare ACL (Elenchi di controllo di accesso) in Linux FileSystem

  5. UNIX/Linux:nozioni di base sugli elenchi di controllo di accesso (ACL).

Controllo audio avanzato su Linux

Un'introduzione a Vivaldi Browser su Linux

Introduzione alla gestione dei container Linux

Introduzione al sistema di controllo della versione

Come consentire o negare l'accesso SSH a un particolare utente o gruppo in Linux

Spiegazione degli elenchi di controllo di accesso su Linux