Ce reprezintă ACL?
POSIX Access Control List (ACL - listă de control acces) este o caracteristică Linux care permite atribuirea diferitelor permisiuni pentru diferiți utilizatori sau diferite grupuri, chiar dacă aceștia nu corespund cu proprietarul inițial ori cu grupul proprietar al fișierului sau directorului respectiv. Pe scurt, cu ajutorul ACL putem adăuga permisiuni cu o granularitate mai mare, care să treacă peste binecunoscutele controale ugo/rwx.
De exemplu, Vasile a creat un fișier. El nu permite nimănui din grup să acceseze fișierul, cu excepția unui alt utilizator, să-i zicem Ion (chiar dacă sunt și alți useri care aparțin grupului Vasile).
Aceasta înseamnă că, suplimentar permisiunilor pe care le are fișierul respectiv (rwx pentru owner, group, others), alți utilizatori și grupuri pot avea accesul permis sau refuzat prin folosirea POSIX ACL.
Comanda cu care puteți afla mai multe despre ACL:
man acl
ACL este activat by default pe distribuțiile Linux moderne (începând cu kernel 2.6), așa că nu mai este obligatorie definirea în fișierul /etc/fstab. Un exemplu de definire ACL în /etc/fstab:
/dev/root / ext4 acl,errors=remount-ro 0 1
Cum aflăm dacă sistemul de fișiere folosit are ACL activat
Să presupunem că vreți să vă convingeți că distribuția voastră sau sistemul de fișiere cu care lucrați are ACL activat - locul obișnuit de configurare este pe /boot. Avem 2 posibilități:
a. cat /boot/config* | grep _ACL
La ieșire vom avea:
CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_REISERFS_FS_POSIX_ACL=y CONFIG_JFS_POSIX_ACL=y CONFIG_XFS_POSIX_ACL=y CONFIG_BTRFS_FS_POSIX_ACL=y CONFIG_F2FS_FS_POSIX_ACL=y CONFIG_FS_POSIX_ACL=y CONFIG_TMPFS_POSIX_ACL=y [...]
b. Folosim utilitarul tune2fs (de regulă, vine preinstalat pe majoritatea distribuțiilor):
# tune2fs -l /dev/sdXY | grep "Default mount options:"
Exemplu în imaginea de mai jos:
Activarea ACL pentru o partiție/sistem de fișiere folosind utilitarul tune2fs:
# tune2fs -o acl /dev/sdXY
Tipuri de ACL
Există două tipuri de ACL: access ACL și default ACL:
- access ACL se folosește pentru a atribui permisiuni unui anumit fișier sau director;
- default ACL se folosește numai pe directoare, iar dacă un fișier din interiorul acestui director nu are setat ACL, el va moșteni permisiunile default ACL atribuite directorului care îl conține.
Comenzi folosite
Există două comenzi pe care le vom folosi: una pentru a vedea setările ACL (getfacl
), cealaltă pentru pentru a modifica setările ACL ale unui fișier sau director Linux (setfacl
):
# whatis getfacl
getfacl (1) - get file access control lists# whatis setfacl
setfacl (1) - set file access control lists
ACL se va folosi de permisiunile standard cunoscute pentru user, group, others - read, write, execute (ugo/rwx) și le va folosi ca punct de plecare, apoi va aplica excepțiile particularizate peste ele.
O idee bună este să reținem, pentru viitor, valorile din tabelul de mai jos, valori care ne permit să atribuim sau să schimbăm valorile ACL folosind comanda setfacl
:
Voi explica mai mult în articolele următoare.
[…] în articolul trecut că există două tipuri de POSIX ACLs: access ACLs și default ACLs. Access ACL poate fi folosit […]