Tips en Trucs 2013

Uitgebreide bestandsrechten

Soms moet je een gebruiker of een groep toegang geven tot sommige bestanden. Soms zorgt het aanpassen van de groep/user eigenschap van een bestand ervoor dat de gebruiker teveel mogelijkheden krijgt.

Dit zijn situaties waarbij je ACL (Access Control Lists) kunt gebruiken. ACL zorgt voor bestands- en maprechten die je veel fijner kunt instellen.

Het gebruik van ACL is complexer dan de klassieke bestandsrechten en komt in het begin soms verwarrend over. Als je ACL niet correct gebruikt, geef je gebruikers soms rechten die je niet van plan was toe te kennen.

Om te beginnen moet het pakket acl geïnstalleerd zijn (standaard geïnstalleerd in openSUSE 12.3).

Daarna moet het bestandsysteem aangekoppeld worden zodat het ACL kan gebruiken. Het gebruik van ACL kan je activeren door de aankoppel eigenschappen in het mount configuratiebestand /etc/fstab aan te passen (bijvoorbeeld met de opdracht sudo joe /etc/fstab of grafisch kdesu kwrite /etc/fstab.). Let bij het gebruik van de editor joe op voor het automatisch aanmaken van nieuwe regels. Voeg in de kolom met de opties van de betreffende partitie de optie acl toe.

/dev/sda1 /usr/home/Documents  ext4       defaults,acl          1 2

OpenSUSE 12.3 gebruikt voor de systeempartitie / standaard ACL. Zo zorgt openSUSE 12.3 voor een veiliger systeem. De facultatief aangekoppelde partities zoals /usr/home/Documents in het voorbeeld, worden in openSUSE 12.3 met de standaard opties zonder ACL aangekoppeld. Na het toevoegen van de acl optie (zie voorbeeld), moet je de partitie opnieuw aankoppelen (alleen mogelijk indien deze niet in gebruik is) (opdracht: sudo mount -o remount /usr/home/Documents/) of de computer voor de zekerheid laten herstarten.

Met de opdracht getfacl kan je de rechten van het bestand opvragen.

dany@linux-s7xo:~> getfacl /usr/home/Documents
getfacl: Removing leading '/' from absolute path names
# file: usr/home/Documents
# owner: root
# group: root
# flags: --t
user::rwx
group::rwx
other::rwx

Het voorbeeld toont de standaard rechten van de map /usr/home/Documents.

Met de opdracht setfacl geef je bestanden en mappen uitgebreide ACL rechten.

setfacl -m u:peter:rwx /usr/home/Documents/test

Het voorbeeld geeft gebruiker peter alle rechten op de map /usr/home/Documents/test, de basisrechten van de map blijven daarbij intact. De optie -m zorgt voor het aanpassen (modify) van de rechten, de gebruiker (user) peter krijgt daarbij lees-, schrijf- en uitvoer (rwx) rechten (optie u:peter:rwx), de laatste optie is de bestands- of mapnaam waaraan je de ACL rechten wilt toekennen.

De ls -als opdracht van een map of bestand met ACL rechten toont in de kolom met rechten een extra +-teken:

dany@linux-s7xo:~> ls -als /usr/home/Documents/test
totaal 8
4 drwxrwxr-x+  2 dany users 4096 24 apr 15:57 .
4 drwxrwxrwt  13 root root  4096 24 apr 15:57 ..

Bij het weergeven van de ACL rechten zien we:

dany@linux-s7xo:~> getfacl /usr/home/Documents/test
getfacl: Removing leading '/' from absolute path names
# file: usr/home/Documents/test
# owner: dany
# group: users
user::rwx
user:peter:rwx
group::r-x
mask::rwx
other::r-x

De gebruiker peter kan nu bestanden en mappen aanmaken in de map usr/home/Documents/test. Als de root gebruikers iets aanmaakt, is dit echter niet toegankelijk. Daarvoor passen we het standaard gedrag optie d: aan:

setfacl -m d:u:peter:rwx /usr/home/Documents/test

Dit zorgt voor de volgende ACL rechten:

dany@linux-s7xo:~> getfacl /usr/home/Documents/test/
getfacl: Removing leading '/' from absolute path names
# file: usr/home/Documents/test/
# owner: dany
# group: users
user::rwx
user:peter:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:peter:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

Let op de default regels. Een door de root gebruiker aangemaakt bestand krijgt dan de volgende rechten:

dany@linux-s7xo:~> getfacl /usr/home/Documents/test/rootbestand.txt
getfacl: Removing leading '/' from absolute path names
# file: usr/home/Documents/test/rootbestand.txt
# owner: root
# group: root
user::rw-
user:peter:rwx                  #effective:rw-
group::r-x                      #effective:r--
mask::rw-
other::r--

Let op de effectieve rechten voor gebruiker peter.

Met de opdrachten

setfacl -x peter /usr/home/Documents/test
setfacl -x d:peter /usr/home/Documents/test

worden de ACL rechten voor de gebruiker peter en het standaard gedrag terug verwijderd (-x optie).

Dit is een eenvoudig voorbeeld. De mogelijkheden zijn echter enorm. Deze enorme mogelijkheden zorgen echter ook al snel voor complexe regels waar je het bos door de bomen niet meer ziet. En dan sluipt er al snel een fout in het rechtenbeheer, met alle gevolgen van dien. Denk dus eerst goed over een strategie en pas deze dan consequent toe. Bestudeer voor je eraan begint de ACL documentatie.

Uitgebreide ACL rechten worden onder andere gebruikt bij bestandssystemen die gedeeld worden (zoals op SFTP servers).