Tips en Trucs 2011

Toegangsrechten met ACL (Access Control Lists)

Iedereen maakt vroeg of laat kennis met de standaard Linux toegangsrechten op bestanden en mappen. Deze toegangsrechten bepalen wie toegang krijgt tot een bestand of map en wat ze ermee kunnen doen. Dit maakt van Linux een veilig systeem. Maar wist je dat met behulp van Access Control Lists je de toegang tot bestanden en mappen nog verder kunt instellen? Access Control Lists laten toe verschillende niveau's van toegangsrechten op bestanden en mappen in te stellen. Een voorbeeld: de gebruiker pinda maakt een bestand aan, maar wil niet dat gebruikers buiten hemzelf en de gebruiker sntcursist toegang heeft tot het bestand (zelfs niet de gebruikers die tot dezelfde groep behoren). Met ACL is dit mogelijk.

Deze tip toont hoe je ACL installeert en gebruikt om de toegangsrechten van bestanden te verfijnen.

Installeren

In de meeste moderne Linux distributies is het pakket acl standaard geïnstalleerd (openSUSE 11.4). Indien het pakket acl niet standaard geïnstalleerd is, is het eenvoudig via de standaard softwarebron te installeren.

ACL activeren

Voor je opdrachten voor ACL gebruikt, moet je de partities koppelen zodat ACL beschikbaar is. Ook het koppelen met ACL mogelijkheden is in moderne distributies (openSUSE 11.4) reeds standaard. Dit kun je controleren door het bestand /etc/fstab te openen (zie voorbeeld openSUSE 11.4):

/dev/disk/by-id/ata-ST9500420AS_5VJ3LCNZ-part5 swap                 swap       defaults              0 0
/dev/disk/by-id/ata-ST9500420AS_5VJ3LCNZ-part6 /                    ext4       acl,user_xattr        1 1
/dev/disk/by-id/ata-ST9500420AS_5VJ3LCNZ-part7 /usr/home/Documents  ext4       defaults              1 2
/dev/disk/by-id/ata-ST9500420AS_5VJ3LCNZ-part3 /var/backup          ext4       defaults              1 2
/dev/disk/by-id/ata-ST9500420AS_5VJ3LCNZ-part2 /windows/C           ntfs-3g    users,gid=users,fmask=133,dmask=022,locale=nl_NL.UTF-8 0 0
proc                 /proc                proc       defaults              0 0
sysfs                /sys                 sysfs      noauto                0 0
debugfs              /sys/kernel/debug    debugfs    noauto                0 0
usbfs                /proc/bus/usb        usbfs      noauto                0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0

Merk op dat in het voorbeeld de partitie /dev/disk/by-id/ata-ST9500420AS_5VJ3LCNZ-part6 (tweede regel) met ACL toegangsrechten gekoppeld wordt. De partitie /dev/disk/by-id/ata-ST9500420AS_5VJ3LCNZ-part7 (derde regel) niet. Dit kun je aanpassen door deze regel aan te passen en de optie acl toe te voegen. De regel wordt dan:

/dev/disk/by-id/ata-ST9500420AS_5VJ3LCNZ-part7 /usr/home/Documents  ext4       acl              1 2

Na het aanpassen van /etc/fstab, sla je de aanpassingen op en voer je de opdracht
sudo mount -o remount,acl /usr/home/Documents
uit of herstart je de computer.

ACL gebruiken

ACL gebruikt twee opdrachten: Met de eerste opdracht kun je de ACL toegangsrechten van een bestand instellen, met de tweede opdracht kun je de ACL toegangsrechten van een bestand raadplegen.

Laten we als voorbeeld ervoor zorgen dat het bestand test door twee gebruikers (pinda en sntcursist) kan aangepast worden. Niemand anders (ook niet degene die tot de groep van de gebruiker pinda behoren) mag het bestand test kunnen aanpassen. Gebruik als gebruiker pinda de opdracht setfacl -m u:sntcursist:rw- test

Daarna voer je de volgende opdracht uit:
pinda@l092pc03:~> getfacl test
# file: test
# owner: pinda
# group: users
user::rw-
user:sntcursist:rw-
group::r--
mask::rw-
other::r--

Zoals je kunt zien, kunnen zowel de gebruiker pinda als sntcursist het bestand test lezen en schrijven.

Je kunt controleren of een bestand ACL toegangsrechten gebruikt met behulp van de opdracht ls.
pinda@l092pc03:~> ls -l test
-rw-rw-r--+ 1 pinda users 0  8 jul 16:22 test
Het extra +-teken geeft aan dat er ACL toegangsrechten gebruikt worden.

Eindwoord

Deze tip is slechts een begin om uw Linux bestanden nog beter te beveiligen. ACL heeft heel wat mogelijkheden. Meer informatie kun je vinden op Linux Extended Attributes and ACLs.