File System Access Control Lists (ACL POSIX nei sistemi GNU/Linux)
In questo articolo vedremo come sia possibile integrare nel nostro GNU/Linux il sistema di gestione delle ACL POSIX. Cio' rendera' possibile gestire in maniera' avanzata il controllo sull' accesso ai dati. Ecco un esempio che vi aiutera' a comprendere di cosa stiamo parlando:
Se avessimo tre utenti di sistema appartenenti allo stesso gruppo come potremmo fare leggere un file solamente ai primi due negando l'accesso al terzo? Appartenendo allo stesso gruppo sarebbe vano ogni tentativo con chmod o chown. Ecco allora che con un'acl possiamo possiamo risolvere questo problema!
Dobbiamo installare il pacchetto 'acl'. Questo e' il comando da eseguire con la distribuzione Debian o Ubuntu
apt-get install acl
Questo invece con Fedora o CentOS
yum install acl
Adesso dobbiamo rimontare il filesystem con l'opzione acl
mount / -o remount,acl
Editiamo /etc/fstab per far si che al prossimo avvio il sistema abiliti automaticamente le acl sul filesystem
/dev/sda1 / ext3 defaults,acl 0 1
I binari che utilizzeremo per verificare/impostare le acl sono 'setfacl' e 'getfacl'. Riprendiamo l'esempio di prima e supponiamo di dover concedere la lettura di /home/utente1/file all' utente2. Essendo i tre utenti appartenenti allo stesso gruppo, per evitare che utente3 legga il file dovremo impostare su esso i permessi a 600
Eseguiamo ora "getfacl /home/utente1/file" ed analizziamo il suo output
getfacl: Removing leading '/' from absolute path names
# file: home/utente1/file
# owner: utente1
# group: users
user::rw-
group::---
other::---
Se utente2 provasse a leggere il file otterrebbe il classico messaggio di errore di "Permesso Negato"
Adesso eseguiamo
setfacl -m u:utente2:r /home/utente1/file
Nuovamente getfacl
getfacl: Removing leading '/' from absolute path names
# file: home/utente1/file
# owner: utente1
# group: users
user::rw-
user:utente2:r--
group::---
mask::r--
other::---
Come avrete notato c'e' una riga in piu'
user:utente2:r--
Che sta a significare che utente2 puo' leggere il file.
Allo stesso modo possiamo negare l'accesso ad un determinato file. Ad esempio
setfacl -m u:www-data:--- /usr/bin/perl