O'Reilly Online-Katalog
oreilly.deO'Reilly Network
KontaktBestellinfosOnline-Bücher

Pfeil Suche
Pfeil Bücher A-Z
Pfeil Neuerscheinungen
Pfeil Bücher bestellen
Pfeil Special Offer
 Programmbereiche
Pfeil
 Bioinformatik
 C/C++
 Design & Grafik
 Java
 Linux/Unix
 Mac
 .Net
 Open Source
 Oracle
 Perl
 PHP & MySQL
 Python
 Sicherheit
 System- &
 Netzwerkadministration
 Web
 Windows
 XML
Special Offer
 Buchreihen
Pfeil
 In a Nutshell
 Taschenbibliothek
 Missing Manuals
 Hacks
 Kochbücher
 CD Bookshelves
 Pragmatic>
 Bookshelf
Pfeil Katalog bestellen
Pfeil Newsletter
Pfeil Veranstaltungen
Pfeil UserGroups
Pfeil Archiv
Pfeil AGB




Netzwerksicherheits Hacks

Preston Gralla
September 2004
ISBN: 3-89721-384-2

Beispielhack:

Hack #4 Erstellen Sie flexible Berechtigungshierarchien mit  POSIX-ACLs

Setzen Sie eine ACL ein, wenn Unix-basierte Berechtigungen nicht ausreichen.

Meistens ist das herkömmliche Dateiberechtigungssystem von Unix genau das Richtige. Allerdings kann dieses System in einer im hohen Maße auf Zusammenarbeit beruhenden Umgebung mit mehreren Leuten, die Zugriff auf Dateien benötigen, unhandlich werden. Zugriffskontrolllisten (Access Control Lists), auch als ACLs bekannt (wird so ausgesprochen, dass es sich auf »hackles« reimt), sind ein Feature, das für Linux-Betriebssysteme zwar relativ neu ist, für FreeBSD und Solaris allerdings schon seit einiger Zeit zur Verfügung steht. Obwohl ACLs an sich einem System keine »weitere Sicherheit« hinzufügen, reduzieren sie doch die Komplexität bei der Verwaltung von Berechtigungen. ACLs bieten neue Möglichkeiten, um Datei- und Verzeichnisberechtigungen anzuwenden, ohne sich in die Erstellung unnötiger Gruppen zu flüchten.

ACLs werden als erweiterte Attribute innerhalb der Metadaten des Dateisystems gespeichert. Wie der Name schon sagt, können Sie damit Listen definieren, die basierend auf von Ihnen vorgegebenen Kriterien den Zugriff auf eine bestimmte Datei entweder gewähren oder verbieten. Jedoch geben ACLs das herkömmliche Berechtigungssystem nicht komplett auf. ACLs können sowohl für Benutzer als auch für Gruppen angegeben werden und werden immer noch in die Bereiche Lese-, Schreib- und Ausführungszugriff aufgeteilt. Zusätzlich könnte eine Kontrollliste für jeden Benutzer oder jede Gruppe festgelegt werden, die nicht mit irgendeiner der Benutzer- und Gruppen-ACLs übereinstimmt, genauso wie die Bits des »Andere«-Modus einer Datei. Zugriffskontrolllisten besitzen auch etwas, das ACL-Maske genannt wird, die als Berechtigungsmaske für alle ACLs agiert, die speziell einen Benutzer oder eine Gruppe aufführen. Dies ist einer umask ähnlich, aber nicht genau das Gleiche. Wenn Sie zum Beispiel die ACL-Maske auf r-- setzen, werden alle ACLs, die zu einem bestimmten Benutzer oder einer bestimmten Gruppe gehören und bei den Berechtigungen freizügiger sind (zum Beispiel rw-), tatsächlich zu r--. Verzeichnisse könnten auch eine Standard-ACL enthalten, die die anfänglichen ACLs von Dateien und Unterverzeichnissen festlegt, die innerhalb dieser Verzeichnisse erzeugt werden.

Verwenden Sie den Befehl setfacl, um ACLs zu bearbeiten und zu entfernen. Um eine ACL zu bearbeiten, wird die Option -m verwendet, gefolgt von einer ACL-Festlegung und einem Dateinamen oder einer Liste von Dateinamen. Sie können eine ACL löschen, indem Sie die Option -x verwenden und eine ACL oder eine Liste von ACLs festlegen.

Es gibt drei allgemeine Formen einer ACL: eine für Benutzer, eine andere für Gruppen und eine für andere. Lassen Sie uns hier einen Blick auf sie werfen:

# Benutzer-ACL
u:[Benutzer]:<Modus>
# Gruppen-ACL
g:[Gruppe]:<Modus>
# ACL fuer andere
o:<Modus>

Beachten Sie, dass in den Benutzer- und Gruppen-ACLs die tatsächlichen Benutzer- und Gruppennamen, auf die die ACL angewendet wird, optional sind. Wenn diese weggelassen werden, bedeutet dies, dass diese ACL auf die Basis-ACL angewendet wird, die von den Modus-Bits der Datei abgeleitet wird. Daraus folgt, dass bei einer Bearbeitung auch die Modus-Bits bearbeitet werden und umgekehrt.

Sehen Sie sich das selbst an, indem Sie eine Datei erzeugen und dann deren Basis-ACL bearbeiten:

$ touch myfile

$ ls -l myfile

-rw-rw-r--    1 andrew   andrew          0 Oct 13 15:57 myfile
 
$ setfacl -m u::---,g::---,o:--- myfile
 
$ ls -l myfile
 
----------    1 andrew   andrew          0 Oct 13 15:57 myfile
 

In diesem Beispiel können Sie auch sehen, dass mehrere ACLs aufgeführt werden können, indem man sie durch Kommas trennt.

Sie können auch ACLs für eine beliebige Anzahl von Gruppen oder Benutzern angeben:

$ touch foo
 
$ setfacl -m u:jlope:rwx,g:wine:rwx ,o:--- foo
 
$ getfacl foo
 
# file: foo
 
# owner: andrew
 
# group: andrew
 
user::rw-
 
user:jlope:rwx
 
group::---
 
group:wine:rwx
 
mask::rwx
 
other::---
 

Wenn Sie jetzt die Maske auf r-- geändert hätten, würden die ACLs für jlope und wine tatsächlich auch zu r-- werden:

$ setfacl -m m:r-- foo
 
$ getfacl foo
 
# file: foo
 
# owner: andrew
 
# group: andrew
 
user::rw-
 
user:jlope:rwx                  #tatsächlich:r--
 
group::---
 
group:wine:rwx                  #tatsächlich:r--
 
mask::r--
 
other::---
 

Wie schon früher erwähnt, können Verzeichnisse Standard-ACLs besitzen, die automatisch auf Dateien angewandt werden, die innerhalb des Verzeichnisses erstellt werden. Standard-ACLs werden gesetzt, indem der ACL, die Sie setzen möchten, ein d: vorangestellt wird:

$ mkdir mydir
 
$ setfacl -m d:u:jlope:rwx mydir
 
$ getfacl mydir
 
# file: mydir
 
# owner: andrew
 
# group: andrew
 
user::rwx
 
group::---
 
other::---
 
default:user::rwx
 
default:user:jlope:rwx
 
default:group::---
 
default:mask::rwx
 
default:other::---
 

 
$ touch mydir/bar
 
$ getfacl mydir/bar
 
# file: mydir/bar
 
# owner: andrew
 
# group: andrew
 
user::rw-
 
user:jlope:rwx                  #tatsächlich:rw-
 
group::---
 
mask::rw-
 
other::---
 

Wie Sie vielleicht aus den vorangegangenen Beispielen mitbekommen haben, können Sie ACLs mit dem Befehl getfacl auflisten. Dieser Befehl ist ziemlich unkompliziert und besitzt nur wenige Optionen. Die nützlichste ist die Option -R, die es Ihnen ermöglicht, ACLs rekursiv aufzulisten, und ziemlich genau wie ls -R arbeitet.


Zurück zu Netzwerksicherheits Hacks

O'Reilly Home | O'Reilly Partnerbuchhandlungen | Bestellinformationen
Kontakt | Über O'Reilly | Datenschutz


© 2004, O'Reilly Verlag GmbH & Co.KG
webmaster@oreilly.de