Start Rechteverwaltung Dateirechte
Dateirechte E-Mail
Geschrieben von: tpm   

Dateirechte sind der Dreh- und Angelpunkt im Bezug auf Sicherheitsaspekte bei einem Betriebssystem. Und obwohl diese unter Linux recht einfach gehalten werden, lassen sich damit alle wichtigen Einstellungsvarianten vornehmen. Dieser Beitrag soll das System dahinter und die Umsetzung erläutern.

 

Zur Einführung in das Konzept der Dateirechte wird erstmal eine Übungsdatei angelegt. Dazu wird in den persönlichen Ordner gewechselt, eine Datei angelegt und danschließend ihre Rechte aufgelistet.

 

input
cd ~ && touch testfile && ls -la testfile

 

output
-rw-r--r--  1 root root 0 2006-06-03 15:28 testfile

 

Die tabellarische Aufschlüsselung der ersten 10 Stellen:

Position 1 2 3 4 5 6 7 8 9 10
Bedeutung Typ Besitzer Gruppe Andere
Rechte - r w - r - - r - -

 

  • Die erste Stelle gibt Auskunft über den Typ: - (Minus) einfache Datei, directory, block device, character device, etc.
  • Das r steht für read und bedeutet, dass die Datei oder der Ordner gelesen weden darf.
  • Das w steht für write und bedeutet, dass die Datei oder Ordner geändert und gelöscht werden darf.
  • Das x steht für execute und bezieht sich auf ausführbare Programme, die damit gestartet werden dürfen. Bei Verzeichnissen wird damit erlaubt selbige zu betreten.

Im obigen Fall lässt sich die Aufschlüsselung für die Datei testfile so interpretieren:

  • Besitzer (user) darf lesen und schreiben, bzw. löschen
  • Gruppe (group) darf lesen (bezieht sich nur auf die Hauptgruppe des Besitzers)
  • Andere  (other) dürfen lesen

Die Rechteeigenschaften werden mit dem Befehl chmod verwaltet. Dabei stehem diesem Befehl zwei Methoden zur Verfügung. Die erste Methode ist die absolute Rechtevergabe. Dabei wird jedem der drei Attribute ein Zahlenwert (oktales Zahlensystem) zugeordnet.

  • r = 4
  • w = 2
  • x = 1

Im obigen Beispiel könnte man deshalb die Darstellung also auch so interpretieren:

 

example
-[42-][4--][4--]  1 root root 0 2006-06-03 15:28 testfile

 

Das bedeutet, der ersten 3er Gruppe (user) wären die Werte 4 und 2 zuzuordnen, der zweiten 3er Gruppe (group) der Wert 4 und der dritten 3er Gruppe (other) ebenfalls der Wert 4. Nun werden aber bei der absoluten Rechtevergabe nicht die Einzelwerte eingesetzt, sondern immer die Summe der Einzelwerte pro 3er Gruppe! Da zum besseren Verständnis nun die Rechteeigenschaften so geändert werden sollen, dass auch group und other Schreibrechte bekommen sollen, muss bei group und other zur 4 (lesen) die 2 (schreiben) hinzuaddiert werden.

 

input
chmod 666 testfile

 

Nun wird die Änderung überprüft:

 

input
ls -la testfile

 

output
-rw-rw-rw-  1 root root 0 2006-06-03 15:30 testfile

 

oder wieder interpretiert

example
-[44-][44-][44-]  1 root root 0 2006-06-03 15:28 testfile

 

Wichtig bei der absoluten Rechtevergabe ist, dass bestehende Rechte bei hinzukommenden berücksichtigt werden müssen. Eine Eingabe von beispielsweise chmod 622 testfile hätte zwar die Schreibrechte hinzugefügt, die Leserechte aber entzogen! Deshalb nennt man diese Art der Rechtevergabe auch absolute Rechtevergabe.

Die zweite Möglichkeit wäre die relative Rechtevergabe, bei der das zu ändernde Attribut in der jeweiligen 3er Gruppe direkt angesprochen wird. Mit + wird ein Recht hinzugefügt, mit - entzogen.

Als Beispiel werden jetzt die Änderungen die oben durchgeführt wurden wieder rückgängig gemacht, indem group und other das Schreibrecht wieder entzogen wird:

 

input
chmod g-w,o-w testfile

 

Damit wären die Rechteeigenschaften wieder im Ursprungszustand. Zu achten ist hier auf die Kommatrennung ohne Leerzeichen bei den Attributänderungen, wenn mehrere Änderungen durchgeführt werden sollen!

 

Unter Linux bestehen noch besondere Möglichkeiten der Rechtevergabe. Zum einen das User-Bit und das Group-Bit. Ist das User-Bit oder das Group-Bit gesetzt, dann wird eine ausführbare Binäratei mit den Rechten des Eigentümers, bzw. der Gruppe des Eigentümers ausgeführt. Dies kann dann Notwendig sein, wenn die Ausführung der Binärdatei weitere Prozesse oder Resourcen bedient, für die der ausführende Benutzer normalerweise nicht genügend Rechte besitzen würde.

  • User-Bit = 4
  • Group-Bit = 2

Bei deren Anwendung wird das jeweilige Bit den allgemeinen Rechten voransgestellt. Nehmen wir nun an, testfile sei eine ausführbare Binärdatei und die momentanen Rechte wären wie folgt gesetzt.

 

example
-rwxr-xr-x 1 root root 0 2006-06-03 15:31 testfile

 

Nun möchte Benutzer XY dieses Programm starten. Die Rechte zum Ausführen hat er (x). Nun bedient das Programm allerdings weitere Prozesse oder Systemresourcen, auf die Benutzer XY keinen Zugriff hat. Dann muss das User-Bit gesetzt werden, damit Benutzer XY das Programm fehlerfrei ausführen kann.

 

input
chmod 4755 testfile

 

Die Rechte haben sich nun wie folgt geändert:

 

example
-rwsr-xr-x 1 root root 0 2006-06-03 15:32 testfile

 

Jetzt kann der Benutzer das Programm fehlerfrei ausführen, da es nun mit den Rechten des Besitzers root ausgeführt wird. Möchte man das Group-Bit setzen, ist analog zu verfahren, nur mit dem Wert 2. In der Bedeutung unterscheidet es sich dahingehend, dass das Programm dann mit den Rechten der Gruppe ausgeführt wird.

An dieser Stelle sein aber angemerkt, dass mit diesen beiden Bits äußerst sorgsam umgegangen werden muss, da man durch eine nicht weit genug durchdachte Anwendung extreme Sicherheitslücken verursachen kann. Des Weiteren ist deren Anwendung in aller Regel auch nicht notwendig.

Das dritte Bit ist das Sticky-Bit und hat den Wert 1. Damit ist es möglich ein Verzeichnis für alle zur Verfügung zu
stellen und trotzdem darf nur jeder seine eigenen Dateien ändern. Als Beispiel ein für alle zugängliches Verzeichnis.

 

example
drwxrwxrwx  1 root root 0 2006-06-03 15:33 test

 

Das Setzen des Sticky-Bits erfolgt wie auch das Setzen der anderen beiden Bits.

 

input
chmod 1777 test

 

Die Rechteauflistung hat sich nun wie folgt geändert.

 

example
drwxrwxrwt 1 root root 0 2006-06-03 15:34 test

 

Nun kann immernoch jeder in das Verzeichnis und dort Daten anlegen, aber jeder darf nur die von ihm selbst angelegten ändern.

 

Abschließend zu diesem Unterkapitel ist noch die Funktionen von umask zu erwähnen. Damit lassen sich die Default-Rechte von neuen Dateien und Ordnern festlegen. Im Prozess seiner Erstellung wird ein Ordner erstmal mit den Rechten 777 gebildet. Im weiteren Verlauf des Erstellungsprozesses wird dann der umask Wert abgefragt. Dieser hat in der Regel den Wert 0022. Das Besondere an der Anwendung ist, dass nun die entsprechenden Wertigkeiten vom ursprünglichen Wert 777 abgezogen werden! Daraus folgt, dass der Ordner letzendlich mit den Rechten 755 angelegt wird.

Als praktisches Beispiel führt die Ausführung des Befehls umask im home-Verzeichnis zu der Ausgabe 0022. Daraufhin wird mit mkdir test_1 der Ordner test_1 erstellt. Die Rechte sind wie folgt gesetzt:

 

example
drwxr-xr-x 2 pace pace 4096 2006-06-03 17:43 test_1

 

Nun wird der Befehl umask 0007 angewandt und ein weiteres Verzeichnis mit dem Namen test_2 erstellt. Während die Rechte von test_1 unberührt blieben, sehen die Rechte von test_2 so aus:

 

example
drwxr-x--- 2 pace pace 4096 2006-06-03 17:43 test_2

 

Die Standardmaske ist in der Datei /etc/profile festgelegt und sollte ohne besonderen Grund auch nicht geändert werden. Dateien werden mit den Rechten 666 erstellt, auf welche dann die gleiche umask Maske gelegt wird. Damit haben Dateien nach dem Anlegen die Default-Rechte 644.

 

Weitere Informationen:

  • Die Informationen zu den Rechten einer Datei (einfache Datei, Ordner oder Gerätedatei), sowie viele weitere Informationen (Letzter Zugriff, Größe, etc.) werden in der Inode-Liste auf der Festplatte gespeichert.
  • Ab dem Kernel 2.6 bietet Linux auch die Möglichkeit ACLs (Access Control Lists) einzusetzen, mit denen die Rechtevergabe noch expliziter, aber auch komplizierter erfolgt.
Zuletzt aktualisiert am Donnerstag, den 08. Oktober 2009 um 12:42 Uhr