Zusammenfassung
In der Arbeit mit Dateien gibt es zwischen GNU/Linux und Windows® sowie den meisten anderen Betriebssystemen wesentliche Unterschiede. Dieses Kapitel wird die hauptsächlichen Merkmale aufzeigen. Weitere Informationen erhalten Sie im Kapitel Kapitel 9, GNU/Linux Dateisysteme.
Die wesentlichen Unterschiede resultieren aus der Tatsache, dass Linux ein Mehrbenutzer-System ist: jede Datei ist alleiniger Besitz eines Benutzerkennzeichens und einer Gruppe. Jedes Benutzerhonto besitzt ein persönliches Verzeichnis (genannt Home-Verzeichnis). Das Benutzerkennzeichen ist der Eigentümer des Verzeichnisses und aller darin befindlichen Dateien.
Das wäre aber ungenügend als alleiniges Zeichen des Besitzes an einer Datei. Der Eigentümer einer Datei kann ihr verschiedene Rechte zuweisen. Diese Rechte unterscheiden zwischen drei Benutzerkategorien: dem Besitzer der Datei, der Gruppe, der diese Datei gehört (und dazu zählen alle Mitglieder der Gruppe, daher auch der Name Besitzergruppe) und schließlich der Rest der Welt, die Anderen. Dazu gehören alle Benutzer, die weder der Besitzer noch Mitglieder der Besitzergruppe sind.
Es gibt drei verschiedene Rechte:
Read (r, lesen) erlaubt dem Benutzer, den Inhalt der Datei zu lesen. Für ein Verzeichnis bedeutet das, der Benutzer kann den Inhalt auflisten (also die einzelnen Dateien).
Write (w, schreiben) erlaubt das Verändern des Inhaltes der Datei. Bei einem Verzeichnis bedeutet das, der Benutzer kann Dateien in das Verzeichnis einfügen und daraus entfernen, auch wenn er nicht der Besitzer dieser Dateien ist.
eXecute (x, ausführen) erlaubt die Ausführung einer Datei (normalerweise wird dieses Recht nur bei ausführbaren Dateien gesetzt). Bei einem Verzeichnis bedeutet dieses Recht, dass ein Benutzer es betreten bzw. durchqueren (traverse) darf. Das ist nicht zu verwechseln mit dem Lese-Recht: Sie können z.B. das Recht zum Betreten/Durchqueren eines Verzeichnisses besitzen, nicht aber das Leserecht für die darin enthaltenen Dateien!
Jede beliebige Kombination von Rechten ist möglich. Sie könnten sich z.B. das alleinige Leserecht einer Datei erteilen, den Zugriff aller anderen Benutzer aber sperren. Als Besitzer der Datei können Sie natürlich auch die Besitzergruppe ändern (allerdings nur, wenn Sie auch Mitglied der neuen Gruppe sind).
Lassen Sie uns das an einem Beispiel betrachten. Im Folgenden sehen Sie die Ausgabe auf den Befehl ls -l auf der Befehlszeile:
$ ls -l total 1 -rw-r----- 1 franz users 0 Jul 8 14:11 eine_datei drwxr-xr-- 2 birgit users 1024 Jul 8 14:11 ein_verzeichnis/ $ |
Die Bedeutung des Befehls ls -l (von links nach rechts):
Die ersten zehn Zeichen zeigen den Dateityp und die mit ihr verbundenen Rechte. Das erste Zeichen ist der Dateityp: bei einer normalen Datei ist es ein Minuszeichen (-). Ein Verzeichnis wird durch ein d angezeigt. Es gibt noch weitere Dateitypen, die wir später behandeln. Die nun folgenden neun Zeichen zeigen die für diese Datei vergebenen Rechte an. Sie gliedern sich in 3 Gruppen zu je drei Rechten. Die erste Dreiergruppe bezeichnet die Rechte des Dateibesitzers, die zweite Dreiergruppe die Rechte der Besitzergruppe und die letzte Dreiergruppe zeigt die Rechte aller anderen Benutzer. Ein Minuszeichen (-) bedeutet, dass das entsprechende Recht nicht vergeben wurde.
Es folgt die Anzahl der Verweise auf eine Datei. Später werden wir sehen, dass die eindeutige Identifikation einer Datei nicht durch ihren Namen, sondern durch eine Nummer (die Inode Nummer) erfolgt, sodass es möglich ist, dass eine Datei unter mehreren Namen angesprochen werden kann. Für ein Verzeichnis hat die Anzahl der Verweise eine spezielle Bedeutung, auf welche ebenfalls später eingegangen wird.
Die nächsten Informationen sind das Benutzerkennzeichen, das Besizer der Datei ist und der Besitzergruppe.
Schlussendlich wird die Grösse der Datei(in Bytes) und ihre letzte Veränderungszeit angezeigt. Der Name der Datei oder des Verzeichnisses wird am Ende der Zeile dargestellt.
Schauen wir uns mal die Zugriffsrechte der Dateien an, die jede besitzt. Zuerst streichen wir den ersten Buchstaben, der für den Typ steht, und bekommen so für eine_Dateidie folgenden Berechtigungen: rw-r-----. Hier nun eine Auflistung von Zugriffsrechten.
Die ersten drei Buchstaben (rw-) sind die Rechte des Benutzerkennzeichen des Besitzers, welcher in diesem Zusammenhang franz ist. Folglich hat franz das Recht, die Datei zu lesen (r), ihren Inhalt zu editieren (w) aber keine Rechte um sie auszuführen (-).
Die nächsten drei Zeichen (r--) sind für alle Benutzer außer franz gedacht, die aber in die gleiche Benutzergruppe (users) wie franz gehören. Sie werden die Datei lesen (r), aber nicht ändern oder ausführen können (--).
Die letzten drei Zeichen (---) sind für alle Benutzer bestimmt, die weder franz noch Mitglied der Benutzergruppe users sind. Diese Benutzer haben überhaupt keinen Zugriff auf die Datei.
Für das Verzeichnis ein_Verzeichnis, sind die Rechte rwxr-xr--, also:
birgit, Der Eigentümer kann den Inhalt auflisten (r), Dateien hinzufügen oder aus dem Verzeichnis entfernen (w) und es betreten/durchqueren (x).
Jedes Mitglied der Gruppe users, außer birgit kann Dateien des Verzeichnisses auflisten (r), aber weder Dateien entfernen oder hinzufügen (-) noch das Verzeichnis betreten/durchqueren (x).
Alle anderen Benutzer werden nur den Inhalt des Verzeichnisses auflisten können (r). Da sie keine wx Rechte haben, ist ihnen das Beschreiben und Betreten/Durchqueren des Verzeichnisses nicht möglich.
Es gibt allerdings eine einzige Ausnahme von diesen Regeln: root. root kann die Attribute (Rechte, Besitzer und Besitzergruppe) aller Dateien und Verzeichnisse ändern - selbst wenn er nicht der Eigentümer ist - und sich so die Besitzerschaft einer Datei sichern. Er kann Dateien lesen, auf die er keinen Zugriff hat, in Verzeichnisse wechseln, auf die er normalerweise keinen Zugriff hätte, und so weiter. Und wenn er einige Rechte ändern möchte, ist dies ebenfalls möglich. root hat die komplette Kontrolle über das System, was sehr viel Vertrauen in die Person mit dem root Passwort voraussetzt.
Schließlich sollte man sich noch den Unterschied in den Dateinamen zwischen UNIX® und Windows® ansehen. Da ist man unter UNIX® viel flexibler und nicht so eingeengt:
Ein Dateiname kann alle möglichen Zeichen enthalten, einschließlich der nicht druckbaren, ausgenommen das ASCII-Zeichens 0 (Ende eines Strings) und /, das ein Verzeichnis-Seperator ist. Überdies unterscheidet UNIX® Groß- und Kleinschreibung: Die Dateien readme und Readme sind verschieden, da r und R zwei unterschiedliche Zeichen in UNIX®-basierenden Betriebssystemen sind.
Wie Sie bemerkt haben, muss ein Dateiname keine Erweiterung erhalten, es sei denn, Sie wünschen dies so. Dateierweiterungen bieten unter GNU/Linux, wie in der Mehrheit existierender Betriebssysteme, keinerlei Rückschluss auf deren Inhalt. Sogenannte „Dateierweiterungen“ sind allerdings eine nützliche Einrichtung. Der Punkt (.) ist unter UNIX® ein Zeichen wie jedes Andere. Unter UNIX® hat er nur am Beginn von Dateinamen eine spezielle Bedeutung: Dateien, deren Name mit einem Punkt beginnt, sind „versteckte Dateien“[1]. Das gleiche gilt für Verzeichnisse, deren Name mit . beginnt.
[1] Standardmäßig werden versteckte Dateien nicht im Dateimanager angezeigt, es sei denn, Sie ändern diese Einstellung. Zur Auflistung von versteckten Dateien in einem Terminal müssen Sie beii dem Kommando ls die option -aeingeben. Generell beinhalten diese Dateien Konfigurationseinstellungen. Schauen Sie sich als Beispiele in Ihrem home/-Verzeichnis einmal die Verzeichnisse .mozilla oder .openoffice an.