Linux-Mandrake: Installationshandbuch; Benutzerhandbuch | ||
---|---|---|
Zurück | Kapitel 9. Grundlegende Unix Konzepte | Vor |
Auch beim Umgang mit Dateien unterscheidet sich Linux stark von Windows. Wir werden in diesem Abschnitt lediglich auf die unmittelbar auffälligen Unterschiede einhgehen.
Unix hat ein ausgeklügeltes System von Dateirechten. Das heißt u.a., dass jeder Benutzer nicht nur sein eigenes Verzeichnis (das Heim-Verzeichnis) sondern auch seine Dateien besitzt (im wahrsten Sinn des Wortes).
Zusätzlich sind für jede Datei Berechtigungen definiert, die nur der Besitzer der Datei ändern kann. Diese Berechtigungen unterscheiden drei Kategorien von Benutzern: den Besitzer der Datei, die Mitglieder der Gruppe, der diese Datei zugeordnet ist und die Anderen. Darunter fallen alle Benutzer, die weder Besitzer, noch Mitglied der Besitzergruppe sind.
Es gibt drei Arten von Berechtigungen:
Leseberechtigung (r für engl. Read, ,,lesen``): Erlaubt das Lesen einer Datei. Bei einem Verzeichnis erlaubt sie die Auflistung des Inhalts, sofern auch die Berechtigung zum Ausführen gesetzt ist;
Schreibberechtigung (w für engl. Write, ,,schreiben``): Erlaubt die Änderung des Datei-Inhalts. Innerhalb eines Verzeichnisses erlaubt sie die Veränderung oder Löschung von Dateien, selbst wenn der Ausführende nicht der Besitzer der Datei ist;
Berechtigung zum Ausführen (x für engl. eXecute, ,,ausführen``): Diese erlaubt das Ausführen einer Datei (und sollte daher auch nur bei ausführbaren Dateien gesetzt werden). Bei Verzeichnissen erlaubt sie das Betreten, bzw. die ,,Durchquerung der selben`` (also Zugriff auf das Verzeichnis und dessen Unterverzeichnisse).
Jede Kombination dieser Berechtigungen ist möglich. Sie können sich beispielsweise das alleinige Leserecht einer Datei erteilen und sie allen anderen Benutzern verweigern. Sie können sogar das Gegenteil tun (zugegebenermaßen, nicht gerade logisch, aber möglich :-)) Als Besitzer der Datei können Sie auch deren Besitzergruppe ändern (allerdings nur wenn Sie auch Mitglied der neuen Gruppe sind) oder gar die Besitzerrechte einem anderen geben. Wenn Sie dies tun, verlieren Sie allerdings sie Eigentums-Rechte daran...
Nehmen Sie eine Datei und ein Verzeichnis als Beispiel. Hier sehen Sie die Ausführung des Befehls ls -l auf einer Kommandozeile:
[franz@linuxbox] ~ $ ls -l total 1 -rw-r----- 1 franz users 0 Jul 8 14:11 eine_datei drwxr-xr-- 2 gustav users 1024 Jul 8 14:11 ein_verzeichnis/ [franz@linuxbox] ~ $ |
Die Ausgabefelder haben folgende Bedeutung (von links nach rechts):
Die ersten zehn Zeichen stehen für den Dateityp und die ihr zugewiesenen Berechtigungen. Das erste Zeichen steht für den Dateityp: ,,-`` für eine reguläre Datei oder ,,d`` für ein Verzeichnis. Es gibt noch andere Dateitypen, die in der Referenz erläutert werden. Die neun folgenden Zeichen repräsentieren die Berechtigungen: die ersten drei Zeichen stehen für die Rechte des Dateibesitzers, die nächsten drei für die Rechte der Besitzergruppe und die letzten drei für die aller Anderen. Ein ,,-`` steht für ein nicht gesetztes Recht. Doch dazu gleich mehr.
Dann folgt die Anzahl der Verknüpfungen für diese Datei. Wie in der Referenz gezeigt, werden auch Dateien nicht anhand eines Namens sondern einer Nummer (der Inode-Nummer) identifiziert. Dadurch wird es unter Unix möglich, ein und die selbe Datei unter verschiedenen Namen ansprechbar zu machen. Für Verzeichnisse hat die Anzahl der Verknüpfungen eine besondere Bedeutung, die in der Referenz erläutert wird.
Es folgt der Name des Dateibesitzers (genauer gesagt dessen Benutzerkennzeichen) und der Name der Besitzergruppe.
Letztendlich folgen die Dateigröße (in Bytes) und der Zeitpunkt der letzten Modifikation.
Werfen Sie nun einen genaueren Blick auf die Berechtigungen in unserem Beispiel: denken Sie sich das erste Zeichen für den Dateityp weg und Sie erhalten die Rechte ,,rw-r-----``. Das heißt:
Die ersten drei (,,rw-``) sind die Rechte des Besitzers, in diesem Fall franz. Der Benutzer franz hat also das Recht die Datei zu lesen (,,r``), ihren Inhalt zu ändern (,,w``) aber nicht, sie auszuführen.
Die nächsten drei (,,r--``) betreffen alle Benutzer, außer franz, die Mitglieder der Gruppe users sind. Mitglieder dieser Gruppe dürfen die Datei lesen (,,r``), aber nicht deren Inhalt verändern oder sie ausführen.
Die letzten drei Zeichen (,,---``) stehen für den Rest der Welt, also alle außer franz und die Mitglieder der Gruppe users. Solche Benutzer haben gar keine Rechte an der Datei.
Für das Verzeichnis lauten die Rechte (hier ohne das führende ,,d``) ,,rwxr-xr--``, also:
gustav, als der Besitzer des Verzeichnisses, darf die enthaltenen Dateien auflisten (,,r``) und dem Verzeichnis Dateien hinzufügen oder Dateien daraus löschen (,,w``). Zudem kann er hineinwechseln oder es durchqueren (,,x``).
Die Mitglieder der Gruppe users, bis auf gustav, dürfen den Inhalt des Verzeichnisses auflisten (,,r``), aber keine Dateien hinzufügen oder entfernen. Sie dürfen auch in das Verzeichnis wechseln, bzw. es durchqueren (,,x``).
Jeder andere Benutzer hat keinerlei Rechte an diesem Verzeichnis. Wie gezeigt, erlaubt die Leseberechtigung allein noch keinem Benutzer, den Inhalt eines Verzeichnisses aufzulisten, es fehlt die Berechtigung zum Ausführen (,,r--``).
Eine Ausnahme gibt es jedoch: Der Systemadministrator mit dem privilegierten Benutzerkennzeichen root kann die Attribute aller Dateien (und Verzeichnisse) verändern, selbst wenn er nicht deren Besitzer ist. Er kann sich also als einziger selbst die Besitzrechte über eine existierende Datei zuschreiben. Er darf Dateien lesen, für die er keine Leseberechtigung hat, alle Verzeichnisse durchqueren usw. Selbst wenn er nicht die nötigen Berechtigungen haben sollte, kann er sie sich ganz einfach verschaffen.
Ein weiterer Unterschied zu Windows besteht in den Möglichkeiten zur Vergabe von Dateinamen:
Sie dürfen jedes Zeichen enthalten (außer dem Nullzeichen und einem ,,/``), sogar nicht-druckbare. Achten Sie jedoch auf die Groß- und Kleinschreibung: die Dateien liesmich und Liesmich sind verschieden, da zwischen ,,l`` und ,,L`` unterschieden wird.
Wie Sie bereits bemerkt haben, erhält der Dateiname keine Erweiterung, es sei denn, sie hängen eine an. Dateiendungen unter Linux dienen nicht zur Identifizierung von Datei-Inhalten, wie das bei anderen Betriebssystemen der Fall sein mag.