claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 01/2005   »   Ausgabe bestellen

Grundlagen der Linux-Dateisysteme

Dateien und Rechte

von Carsten Schnober


Wer sich an alte Windows-Versionen gewöhnt hat, dem ist das Konzept der Zugriffsrechte auf Dateien meist fremd. Bei Unix-artigen Systemen wie Linux gibt es dies schon sehr lange. Dabei kommen Benutzernamen, User-IDs und ein abgestuftes Rechtesystem zum Einsatz.

"Ich habe Linux von einer CD gestartet und es ignoriert die Dateirechte auf meiner Festplatte!" Was dann überhaupt das Rechtesystem nützt, lautet logischerweise die folgende Frage. Im laufenden System bleiben Verzeichnisse und Dateien mit entsprechenden Rechten für andere Benutzer unerreichbar, das gilt aber nicht für andere Betriebssysteme, die den gleichen Rechner starten.

Dateirechte ändern Sie mit dem Datei-Manager Konqueror komfortabel (Abbildung 1), wer die Kommandozeile vorzieht, verwendet dazu den Befehl chmod [1].

Abb. 1: Konqueror ändert Zugriffsrechte grafisch.

Für jede Datei gibt es einen Besitzer und eine Gruppe. Die Rechte teilen Linux-Dateisysteme danach in drei Bereiche auf: Was darf der Besitzer mit einer Datei anstellen, was Mitglieder der Gruppe und was der Rest? Für jede dieser Einheiten lassen sich die Rechte zum Lesen, Verändern und zum Ausführen separat festlegen. Für Verzeichnisse gilt dieselbe Struktur. Sind sie ausführbar, bedeutet das, Benutzer dürfen hineinwechseln und sich den Inhalt anzeigen lassen.

Wechseln Sie im Datei-Manager Konqueror die Ansicht über den Menüpunkt Ansicht / Anzeigemodus / Detaillierte Verzeichnis-Ansicht zeigt die Spalte Berechtigungen die Eigenschaften aller Dateien und Verzeichnisse. Die Anzeige gliedert sich in neun Zeichen, entweder Striche oder Buchstaben, z. B. rwxr-xr-x.

Die ersten drei Zeichen stehen für die Rechte des Benutzers, die nächsten drei für die der Gruppe und die letzten drei für den Rest. r bedeutet lesbar (von englisch "read": lesen), w ermöglicht das Verändern oder Schreiben (englisch "write": schreiben) und ein x erlaubt das Ausführen (englisch "execute", ausführen). Ein Strich heißt, dass die betreffende Berechtigung an dieser Stelle nicht gewährt wird. Dieselbe Information liefert der Kommandozeilenbefehl ls -l (Abbildung 2). Hier steht lediglich am Anfang des Rechteblocks ein weiteres Zeichen, bei Dateien meist ein Strich, bei Verzeichnissen stets ein d für "directory" (englisch für Verzeichnis).

Abb. 2: Der Befehl "ls -l" gibt die Zugriffsrechte aus.

Zahlenspiele

All diese Werte rechnet das Dateisystem intern in Zahlen um, jeden Dreierblock einzeln. Um die numerischen Berechtigungen zu errechnen, addieren Sie festgelegte Werte: Das Leserecht hat den Wert vier, das Schreibrecht zwei und Ausführen zählt eins. Bei einer Datei mit Schreib- und Leserecht ergibt das beispielsweise 4 + 2 = 6. Errechnen Sie die Blöcke für Besitzer, Gruppe und den Rest einzeln und reihen Sie sie hintereinander, z. B. hat eine Datei die numerische Berechtigung 640: Der Besitzer darf schreiben und lesen (4 + 2 = 6), die Gruppe darf die Datei lesen (4) und der Rest hat überhaupt keinen Zugriff (0).

Die Rechte, die den Besitzer einer Datei betreffen, orientieren sich nur indirekt am Benutzernamen. Denn Linux rechnet intern sowohl die Gruppen- als auch die Benutzernamen in Zahlen um. Und danach richten sich auch die Dateirechte. Jedoch weichen die so genannten User-IDs und Gruppen-IDs je nach System voneinander ab, auch bei identischen Namen. Der Kommandozeilenbefehl ls -n (Abbildung 3) verrät an Stelle der Benutzer- und Gruppennamen die zugehörigen numerischen IDs. Die Datei /etc/passwd verbindet die Benutzernamen mit ihren IDs, die Gruppen-IDs stehen in /etc/group.

Abb. 3: User- und Group-ID erfahren Sie mit dem Befehl "ls -n"

Zwar lassen sich die IDs manuell verändern, aber in der Voreinstellung führen zwei Faktoren zu Unterschieden: Einerseits beginnen Distributionen bei willkürlich definierten Zahlen mit der Nummernvergabe, z. B. erhält der erste Benutzer bei manchen Systemen die ID 500, bei anderen die 1000. Legen Sie dann einen weiteren Benutzer an, erhält er beispielsweise die Benutzer-ID 501. Einzig der Benutzer root hat stets die User-ID 0.

Konsequenzen

Das laufende Betriebssystem, als Beispiel ein Suse Linux, verknüpft die Benutzernamen mit den User-IDs. Das Dateisystem speichert die Benutzerrechte auf der Festplatte abhängig von der User-ID. Nun hat beispielsweise der Benutzer joe die ID 500. Legt er eine Datei an, gehört Sie ihm, dem Benutzer mit der User-ID 500. Verbietet er anderen Benutzern das Lesen dieser Datei, hat ein Benutzer fritz mit der User-ID 501 keinen Zugriff. Beim nächsten Start ordnet das Betriebssystem wieder dem Benutzer joe die ID 500 zu und auf seine Dateien hat fritz weiterhin keine Einsicht.

Von einem anderen Datenträger lässt sich statt dem Suse Linux auch ein anderes System booten; beispielsweise eine Knoppix-CD [2] oder ein auf einer anderen Festplatte installiertes Mandrake Linux. Beim Anlegen von Benutzern verteilt es eigene User-IDs. Legt der Administrator zuerst den Benutzer fritz an, gibt Mandrake ihm die User-ID 500, dann folgt der Benutzer joe mit der Nummer 501. Im laufenden System bemerken die Benutzer keinen Unterschied, neue Dateien von joe gehören der User-ID 501 und er hat darauf die Exklusivrechte.

Interessant wird es, wenn Sie im nun gebooteten Mandrake-System die Festplatte einhängen, auf der sich Suse Linux befindet. Dort hatten die genannten Benutzer umgekehrte User-IDs: joe war Nummer 500, fritz die 501. In unserem Beispiel-Mandrake erhält fritz beim Login aber die User-ID 500. Alle Dateien der User-ID 500 gehören also ihm. Das gilt auch für die eingehängte Suse-Festplatte: Dort gehören nun alle Dateien zu fritz, die zuvor Eigentum von joe waren. Ebenso verhält es sich umgekehrt.

Blindes Vertrauen

Für das Thema Sicherheit spielt das eine wichtige Rolle. Auch auf einem Heimrechner mit nur wenigen Benutzern, möchten Sie möglicherweise gewährleisten, dass niemand durch Tricks dieser Art Zugriff auf die Dateien anderer User erhält. Denn wer von einer Knoppix-CD bootet, erhält automatisch Root-Rechte und hat damit uneingeschränkten Zugriff auf alle lokalen Datenträger. Er kann sowohl private Daten auf der Festplatte einsehen als auch beliebige Konfigurationsdateien manipulieren.

Als erste Schutzmaßnahme dient das BIOS. Das Basic Input/Output System ermöglicht die grundlegende Kommunikation zwischen der Hardware und dem Betriebssystem. Es bestimmt auch, von welchen Datenträgern der Rechner bevorzugt versucht, ein Betriebssytem zu laden. Um zu vermeiden, dass jemand an Stelle des auf der Festplatte installierten Systems von einer CD bootet und damit Root-Rechte erhält, unterbinden Sie diese Möglichkeit in der BIOS-Einstellung. Damit niemand diese Einstellung rückgängig macht, setzen Sie ein Passwort, das den Zugang zum BIOS-Menü verhindert. Wie Sie diese Einstellungen vornehmen, unterscheidet sich von Rechner zu Rechner und steht im Handbuch Ihres Motherboards.

Erhöhter Schutzbedarf

Den Start eines Betriebssystems von CD zu unterbinden, hält einen Benutzer vor Ihrem Rechner zwar auf, wirklich sicher sind Ihre Daten immer noch nicht. Wer physischen Zugriff auf Ihre Festplatte hat, wird -- den entsprechenden Ehrgeiz vorausgesetzt -- trotzdem einen Weg in Ihre Privatsphäre finden. Denn auch wenn Sie alle unerwünschten Direktzugänge auf Ihren Rechner versperrt haben, ließe sich Ihre Festplatte immer noch ausbauen und von einem anderen PC aus lesen.

Gegen diese Art des organisierten Datenklaus helfen die Zugriffsrechte des Dateisystems nicht, die einzig wirksame Waffe dagegen heißt Verschlüsselung. Für einzelne Dateien eignet sich hierzu das Programm GnuPG [3]. Wird die Festplatte gestohlen, hilft dies jedoch nur wenig, wenn Sie Ihren privaten Schlüssel nicht auf dem gleichen Datenträger aufbewahren.

Als effektivere Alternative lassen sich die ganze Festplatte oder eizelne Partitionen verschlüsseln. Suse und Mandrake Linux bieten diese Möglichkeit inzwischen in ihren grafischen Konfigurationswerkzeugen Yast2 (Abbildung 4) beziehungsweise DiskDrake (Abbildung 5).

Abb. 4: Verschlüsselte Partitionen bot Suse Linux als erstes im grafischen Konfigurationswerkzeug.

Abb 5: Unter Mandrake fällt Verschlüsselung in den Bereich des Expertenmodus.

Systemübergreifend

Die beschriebene Art der Vergabe ist schon älter als Linux, sie wird unter jedem Unix-artigen System verwendet. Die verschiedenen Dateisysteme wie ext3 oder ReiserFS unterscheiden sich in diesem Punkt nicht.

Seit einigen Versionen verwendet auch Windows mit NTFS ein Dateisystem, das Zugriffsrechte kennt. Diese funktionieren jedoch grundlegend anders und lassen sich deshalb unter Linux nicht verwerten. Ältere Windows-Versionen verwendeten FAT16 oder FAT32, diese Dateisysteme kennen weder Besitzer noch eine Rechtevergabe. Heute finden sie weiterhin Verwendung beispielsweise auf USB-Speicher-Sticks, da beinahe jedes Betriebssystem FAT-Dateisysteme lesen und beschreiben kann.

Hängen Sie unter Linux einen FAT-Datenträger ein, erwartet das System trotzdem Zugriffsrechte, die Treiber lösen das Problem, indem Sie diese simulieren. Per Mount-Optionen lassen sich Besitzer sowie die Rechte für andere Benutzer frei definieren. In der Standardeinstellung machen die Distributionen üblicherweise den Benutzer zum Besitzer aller Dateien, der den Mount-Vorgang durchgeführt hat.

Systeme anpassen

Die verschiedenen User-IDs für gleiche Benutzernamen werden zum Problem, wenn Sie auf einem Rechner mehrere Linux-Distributionen abwechselnd verwenden. Dann möchten Sie gewöhnlich unter jedem System unter dem gleichen Namen anmelden und dieselben Zugriffsrechte auf Ihre persönlichen Dateien erhalten. Dazu betrachten Sie die Datei /etc/passwd genauer (Abbildung 6).

Abb. 6: Die Datei "/etc/passwd" enthält alle Benutzernamen und die zugehörigen User-IDs

Jede Zeile in dieser Datei enthält einen Benutzernamen. Nach dem ersten Doppelpunkt folgt ein x. Es steht für das Passwort, das verschlüsselt in einer anderen Datei steht. Die nächste Spalte enthält die User-ID des Benutzers. Mit root-Rechten ausgestattet ändern Sie diese Zahl in einem Texteditor und beim nächsten Login erhält der betroffene Benutzer die neue User-ID. Solche Änderungen verlangen jedoch höchste Vorsicht, denn bei einem Fehler hat ein Benutzer möglicherweise keinen Zugriff mehr auf sein Home-Verzeichnis. Das betrifft sowohl die persönlichen Einstellungen als auch alle anderen Dateien. Nehmen Sie in /etc/passwd also nur unbedingt nötige Änderungen vor und fertigen Sie zuvor eine Sicherheitskopie an!

Relative Sicherheit

Bei der Vergabe von Zugriffsrechten auf persönliche Dateien darf das Bewusstsein über ihre Wirksamkeit nicht fehlen. Wer vor anderen Benutzern des gleichen Rechners seine Privatsphäre wahren möchte, dem reichen sie; solange niemand von einem anderen Datenträger ein anderes System startet. Der Benutzer root hat stets auf alle Dateien Zugriff, sein Passwort sollte mit gebührender Vorsicht weitergegeben werden.

Vertrauliche Dokumente zu verschlüsseln mag vielen paranoid erscheinen; die Festplatte aus- und in einen anderen Rechner einzubauen setzt durchaus kriminelle Energie voraus. Doch schon tragbare Computer geben bei einem ohnehin ärgerlichen Diebstahl oder Verlust die Gelegenheit, dies zum Datenklau auszuweiten.

Auf einem Rechner, der sicher zu Hause steht, genügt die sorgsame Vergabe von Zugriffsrechte gewöhnlich, um Dokumente anderen unzugänglich zu machen.

Infos

[1] Dateirechte ändern: Elisabeth Bauer, "Alles, was recht ist", EasyLinux 09/2003, S. 71 ff., http://www.easylinux.de/Artikel/ausgabe/2003/09/071-guru-chmod/
[2] Knoppix: Heike Jurzik, "Life is live!", EasyLinux 08/2004, S. 24 ff., http://www.easylinux.de/Artikel/ausgabe/2004/08/024-knoppix/
[3] GnuPG: Andrea Müller, "Digitales Schlüsselbrett", EasyLinux 09/2004, S. 21ff., http://www.easylinux.de/Artikel/ausgabe/2003/09/021-gpg-kgpg/index.html

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2020 COMPUTEC MEDIA GmbH | Last modified: 2007-04-05 11:10

[Linux-Magazin] [LinuxUser] [Linux-Community]