Select Page

Dateisystem-ACLs unter Linux

by | Mar 21, 2013 | Linux

Neben den bei Linux-Admins allseits bekannten Permission-Bits (Read-, Write- und Execute-Berechtigungen für User, Gruppen bzw. World) gibt es noch weitere Möglichkeiten, die Berechtigungen von Dateien zu definieren. Eine davon ist die Verwendung von Access Control Lists, kurz ACLs.
Mit ACLs kann im Gegensatz zu traditionellen Unix-Berechtigungen für mehrere Benutzer und Gruppen definiert werden, wer Zugriff auf eine Datei erhalten soll. Um ACLs verwenden zu können, muss man ein Dateisystem verwenden, das diese unterstützt (z.B. ext3). Zusätzlich muss das Dateisystem mit der Option “acl” gemountet werden, wie folgendes fstab-Beispiel zeigt:

/dev/sda1     /           ext4    errors=remount-ro,acl	    0       1

Je nach verwendetem Dateisystem ist die “acl”-Option eventuell bereits standardmäßig aktiviert.
Zusätzlich müssen noch Tools installiert werden, um ACLs anzeigen und bearbeiten zu können. Bei Debian sind diese z.B. im Paket “acl” enthalten:

$ sudo aptitude install acl
The following NEW packages will be installed:
  acl
0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/70,8 kB of archives. After unpacking 264 kB will be used.
Selecting previously unselected package acl.
(Reading database ... 104211 files and directories currently installed.)
Unpacking acl (from .../acl_2.2.51-8_amd64.deb) ...
Processing triggers for man-db ...
Setting up acl (2.2.51-8) ...

Danach können wir auch schon damit anfangen, ACLs zu verwenden. Zunächst legen wir ein Verzeichnis und eine Test-Datei an, die in den folgenden Beispielen verwendet werden:

$ mkdir acl
$ touch acl/test

Mit Hilfe des Tools “getfacl” können wir uns die ACLs eines Verzeichnisses bzw. einer Datei anzeigen lassen:

$ getfacl acl
# file: acl
# owner: gunnar
# group: gunnar
user::rwx
group::rwx
other::r-x

Obwohl wir noch gar keine ACLs definiert haben, hat das Verzeichnis bereits 3 Einträge. Diese entsprechen den UNIX-Berechtigungen, die z.B. auch von “ls -l” angezeigt werden.
Mit folgenden Befehlen können wir nun die Berechtigungen so anpassen, dass der Benutzer “gunnar” lesend und schreibend auf das Verzeichnis zugreifen kann, während der Benutzer “www-data” nur-lesenden Zugriff hat:

$ chmod 700 acl
$ setfacl -m user:www-data:rx acl

Wenn wir uns das Verzeichnis danach mit ls anzeigen lassen, erkennen wir an dem “+” bei den Berechtigungs-Bits, dass für dieses Verzeichnis ACLs definiert wurde:

$ ls -l
total 52
drwxr-x---+ 2 gunnar gunnar  4096 Mär 21 12:21 acl

Die ACLs können wir uns dann mit getfacl anzeigen lassen:

$ getfacl acl
# file: acl
# owner: gunnar
# group: gunnar
user::rwx
user:www-data:r-x
group::---
mask::r-x
other::---

ACLs von Verzeichnissen werden dabei nicht standardmäßig an Unterverzeichnisse oder Dateien vererbt. Hierzu können wir uns die Berechtigungen von “acl/test” anzeigen lassen:

$ getfacl acl/test
# file: acl/test
# owner: gunnar
# group: gunnar
user::rw-
group::rw-
other::r--

Falls wir Berechtigungen vererben wollen, z.B. damit der “www-data”-Benutzer rekursiv auf alle Dateien in einem Verzeichnis zugreifen kann, müssen wir für das Verzeichnis eine sogenannte Default-ACL definieren. Hierzu gibt es beim Befehl setfacl den Parameter “-d”:

$ setfacl -d -m user:www-data:rx acl

Die Default-ACL gilt dabei ausschließlich für neu-angelegte Unterverzeichnisse und Dateien:

$ touch acl/test2
$ getfacl acl/test2
# file: acl/test2
# owner: gunnar
# group: gunnar
user::rw-
user:www-data:r-x		#effective:r--
group::---
mask::r--
other::---

Weiterführende Informationen zu Unix-ACLs gibt es in den Manpages der Befehle getfacl und setfacl bzw. in acl(5). Neben ACLs gibt es auch noch weitere Möglichkeiten, Berechtigungen zu vergeben, wie beispielsweise SELinux-Labels oder in neueren Versionen des Linux-Kernels NFSv4 ACLs (“Richacls“).

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

More posts on the topic Linux

Kickstart your Laptop with Linux

Alle paar Jahre bekomme ich einen neuen Laptop bei Netways. Vor zwei Wochen war es wieder so weit und somit eine gute Gelegenheit mal wieder die Betriebssystem-Frage zu stellen. Die alte Frage also: "Welches Linux ist das Beste?". Also für mich ganz persönlich. Nicht...

Ansible – Testing roles with Molecule

Ansible is a widely used and a powerful open-source configuration and deployment management tool. It can be used for simple repetitive daily tasks or complex application deployments, therefore Ansible is able to cover mostly any situation. If used in complex or...

NETWAYS Support Collector Roadmap

Den Support Collector konnte ich bereits in meinem letzten Blogpost vorstellen. Für alle die den Beitrag verpasst haben, hier kurz umrissen was es ist: Bei dem Tool handelt es sich um einen von uns geschriebenen Datensammler, welche alle möglichen Support relevanten...