Verzeichnisstruktur

Linux Dateisystem

Bevor die Dateirechte behandelt werden, soll hier ein kleiner Überblick über das Dateisystem gegeben werden. Das Verständnis des Dateisystems ist wichtig, da es die Ordner und Dateien strukturiert und gerade mit denen soll ja nun gearbeitet werden. Im Kapitel Verzeichnisstruktur erweitern wird die Verzeichnisstruktur nochmal genauer betrachtet.

Der oberste Ebene, der Beginn der Verzeichnisstruktur, ist / (auch Root- oder Wurzelverzeichnis genannt). Es ist sehr grob mit dem Verzeichnis C: unter Windows zu vergleichen. Im Terminal kann man mit

cd /

zu diesem Verzeichnis navigieren. Der Befehl cd steht für change directory (wechsle Verzeichnis). Alternativ kann man auch im Dateibrowser in der Seitenleiste Dateisystem wählen. Die Ordner und Dateien in Wurzelverzeichnis kann man sich auf der Konsole mit

dir

anzeigen lassen (Abkürzung für directory, Verzeichnis).

Unterhalb des Wurzelverzeichnis findet man Unterordner (s. Abb. rechts). Jeder dieser Ordner hat eine eigene Funktion, d. h. er beinhaltet Dateien und weitere Ordner, die einen bestimmten Zweck erfüllen. Ein Überblick gibt der Artikel Verzeichnisstruktur.

Übung

Übung

Übung

  1. Im Ordner /bin (für binaries, Binärdateien) liegen die wichtigsten Systemprogramm. Hier findet man z. B. die Datei dir. Diese wird ausgeführt wenn der Befehl dir in der Konsole eingegeben wird. Im Ordner /usr/bin liegen weitere Anwendung, wie z. B. die Datei firefox. Öffne und untersuche den Ordner. Versuche hier Dateien direkt zu öffnen.
  2. Im Ordner /var/log liegen die sog. [wikipedia:Logdatei:Logdateien]. In diesen protokollieren das System und einige Programme Meldung, z. B. zu Fehlern. Öffne einige dieser Dateien und untersuche sie.

Dateirechte

Zugriffsrechte einer Datei

Unter Linux hat jede Datei neben dem Dateinamen und dem Dateityp noch drei weitere Eigenschaften. Sie hat einen Besitzer und gehört einer Gruppe. zusätzlich kennt jede Datei noch die Zugriffsrechte, sie weiß also, wer sie öffnen, verändern, löschen oder ausführen darf. Die Dateirechte unter Linux zeichnen sich durch eine sehr einfache Struktur aus, dennoch kann man damit sehr komplexe Probleme lösen. Nicht zuletzt sind sie einer der wichtigsten Gründe dafür, dass Linux kaum anfällig für Viren und andere Schadsoftware ist.

Erstes Beispiel

Öffnet man im Homeverzeichnis mit der rechten Maustaste das Kontextmenü einer Datei, klickt dann auf Eigenschaften und wählt den Reiter Zugriffsrechte aus, kann man die drei Eigenschaften sehen (s. rechts). In der Situation der Abbildung rechts ist der Benutzer douglasadams. Er hat das Recht, die Datei zu öffnen (lesen) und zu verändern (schreiben, und damit auch das Recht sie zu löschen). Dieser Benutzer ist in einer Gruppe, die ebenfalls douglasadams heißt. Alle Benutzer dieser Gruppe dürfen die Datei nur lesen. Alle anderen Benutzer dürfen die Datei ebenfalls nur lesen.

Über die zugehörigen Auswahlboxen kann man diese Dateirechte nun verändern.

Außerdem kann man noch angeben, dass die Datei als Programm ausgeführt werden soll. Dies ist ein wichtiger Sicherheitsaspekt. Unter Windows gibt es diese Einstellung nicht, deswegen ist es für unbedarfte Benutzer recht einfach Programme, die man z.B. aus dem Internet herunterlädt, sofort zu starten. Das ist zwar komfortabel, doch ein gewichtiger Grund dafür, warum Windows so virenanfällig ist, den auch Schadsoftware kann direkt ausgeführt werden.

Übung

Übung

Übung

  1. Erzeuge eine Datei im Homeverzeichnis. Lege einen zweiten Benutzer an. Logge dich mit dem neuen Benutzernamen ein. Öffne den Dateibrowser und navigiere in das Homeverzeichnis des ersten Benutzers. Versuche die eben angelegte Datei zu öffnen und zu löschen.
  2. Lege eine Datei im Homeverzeichnis an. Stelle die Zugriffsrechte so ein, dass nur der Benutzer die Datei öffnen kann. Logge dich dann mit einem anderen Benutzernamen ein und versuche die Datei zu öffnen.
  3. Prüfe, welche Zugriffsrechte es für Ordner gibt.
  4. Navigiere im Dateibrowser in den Ordner /etc. Wähle irgendeine Datei aus und überprüfe die Zugriffsrechte.
  5. Im letzten Kapitel wurden schon die Ordner /bin/ und /usr/bin/ untersucht, in denen die Programmdateien liegen. Prüfe die Zugriffsrechte dieser Dateien.
  6. Prüfe die Rechte der Dateien /etc/passwd, in der die Benutzer verwaltet werden.

Rechte mit ''chmod'' auf der Konsole ändern

Auf der Konsole kann man mit chmod (engl. für change mode) die Dateirechte ändern. Um zu sehen, wie die Dateirechte angegeben werden, kann man sich zunächst von einer bestehenden Datei die Rechte anzeigen lassen. Um sich die Zugriffsrechte des Homeverzeichnis des Benutzer douglasadams anzeigen zu lassen, gibt man auf der Konsole

ls -l -d -h /home/douglasadams

ein. Es wird also der Befehl ls (von engl. list) mit den Optionen -l -d -h verwendet. Man erhält die Ausgabe

drwxr-x--- 1 douglasadams douglasadams 2G 2012-03-26 21:52 home/douglasadams/

Die Bedeutung der einzelnen Bestandteile zeigt die folgende Tabelle:

d rwx r-x --- douglasadams douglasadams 2G 2012-03-26 21:52
Es ist ein Verzeichnis Benutzer Gruppe alle Anderen Benutzer Gruppe Größe letzte Änderung
Zugriffsrechte

Die Rechte werden also in Gruppen von drei Buchstaben angegeben. Dabei steht w für Schreibrechte (write), r für Leserechte (read) und x für Ausführungsrechte (execute). Sind die Rechte nicht vergeben, wird dieses durch einen Bindestrich (-) dargestellt.

Beispiel: Soll eine Datei für den Benutzer (u, user) und die Gruppe (g, group) schreib- und lesbar sein, aber nur für den Benutzer ausführbar und für alle Anderen (o, others) nur lesbar, so kann man mit

chmod u=rwx,g=rw-,o=r-- test.jar

diese Rechte vergeben. Es gibt auch die Möglichkeit, nur einzelne Zugriffsrechte zu verändern und nicht alle Zugriffsrechte neu zu setzen. Dieses wird hier in Beispielen erklärt.

Übung

Übung

Übung

  1. Lege eine Datei im Homeverzeichnis an. Setze die Zugriffsrechte dann so, dass nur der Benutzer die Datei verändern kann, alle anderen sie aber lesen können.
  2. Welche Bedeutung haben die Optionen -l -h -D des ls-Befehls?
  3. Wie unterscheidet sich die Ausgabe von ls für ein Verzeichnis von der Ausgabe für eine Datei?

Oktaler Modus

Die Zugriffsrechte können auch mit Hilfe von Zahlen angegeben werden, dies ist in den meisten Fällen sehr viel komfortabler und schneller. Dabei wird jedem Recht eine Zahl zugeordnet.

Recht Buchstabe Zahl
Lesen r 4
Schreiben w 2
Ausführen x 1

Man muss nun für den Benutzer, die Gruppe und die Anderen die zum Zugriffsrecht gehörige Zahl heraussuchen. Diese Zahlen addiert man dann auf. Für das Beispiel von oben sieht dies so aus:

  • rwx: 4+2+1 = 7
  • rw-: 4+2+0 = 6
  • r--: 4+0+0 = 4

In diesem Fall kann man dann mit

chmod 764 test.jar 

die Zugriffsrechte setzen.

Übung

Übung

Übung

  1. Schreibe die Zugriffrechte r-xr-xr– in oktaler Schreibweise.
  2. Schreibe die Zugriffsrechte 640 mit Hilfe der Buchstaben.
  3. Lege ein Verzeichnis an und erzeuge darin mehrere Dateien. Mit
     chmod --help

    kann man die Hilfe für den Befehl ''chmod'' anzeigen lassen. Finde über die Hilfe heraus, wie man die Zugriffsrechte für alle Dateien in dem Verzeichnis ändern kann.

Benutzer und Gruppen ändern

Übung

Übung

Übung

Mit dem Befehl chown (von engl. change owner) kann man die Benutzer und Gruppen einer Datei oder eines Verzeichnisses ändern. Lese die Beispiele im Wikiartikel zu ''chown'' durch und probiere sie an eigenen Beispielen aus.

Verzeichnisstruktur erweitern

Im Abschnitt Verzeichnisstruktur wurde schon die Struktur der Verzeichnisse behandelt. Nun soll die Verzeichnisstruktur erweitert werden. Zum Einen kann man neue Ordner erzeugen, und so die Verzeichnisstruktur erweitern. Wesentlich interessanter ist aber, dass man unter Linux andere Dateisystem in die Verzeichnisstruktur einbinden kann.

Beispiel: Ein USB-Stick ist so eine „anderes Dateisystem“. Unter Windows wird ein erkannter USB-Stick als neues Laufwerk angezeigt. Unter Linux ist das Wurzelverzeichnis immer der einzige Beginn der Verzeichnisstruktur. Es ist also nicht möglich, ein Ordner (oder Laufwerk) für den USB-Stick zu erzeugen, dass auf der gleichen Ebene wie das Wurzelverzeichnis (/) liegt. Vielmehr wird das Dateisystem des USB-Sticks in das bestehende Dateisystem gemountet (engl. für anbauen, aufstecken, einbinden). Ein USB-Stick wird normalerweise automatisch gemountet. Steckt man ihn ein, so findet man danach im Ordner /media/ einen Ordner mit dem Namen des USB-Sticks.

Das Dateisystem des USB-Sticks wurde also in das bestehende Dateisystem „eingebaut“. Für den Benutzer macht es also keinen Unterschied, ob sich hinter diesem Ordner ein USB-Stick oder eine Partition auf der Festplatte befindet, oder ob es ein „normaler“ Ordner ist, den man dort angelegt hat.

Gerätedateien

Um mit angeschlossenen Geräten (genauer Schnittstellen) zu kommunizieren, verwendet Linux Gerätedateien (wurde nicht schon mal erwähnt, dass unter Linux alles eine Datei ist?). Diese Dateien befinden sich im Ordner /dev. Es handelt sich um Binärdateien, die schon während der Installation angelegt werden. Diese Dateien sorgen dafür, dass ein Programm direkt über diese Dateien mit dem Kernel kommunizieren kann. Der Kernel kann daraufhin die Hardware ansprechen. Diese Dateien werden wie normale Dateien verwendet: Um mit der entsprechenden Hardware zu kommunizieren, muss man etwas in die entsprechende Datei schreiben.

Einen Überblick darüber, welche Gerätedateien es gibt, findet man hier.

Der Befehl ''mount''

Beispiel

Das Mounten eines USB-Sticks funktioniert normalerweise automatisch. Nun soll gezeigt werden, wie man einen USB-Stick manuell mounten oder unmounten kann. Ist der USB-Stick eingehängt, kann man sich über den Befehl (Option -l für list)

mount -l

alle eingehängten Dateisystem anzeigen lassen. In der Ausgabe findet man z. B. die Zeile

/dev/sdb1 on /media/380D-B8CF type vfat rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush)

Der USB-Stick ist über die Gerätedatei /dev/sdb1 ansprechbar. Einer Wechselfestplatte, also auch einem USB-Stick, wird normalerweise die Gerätedatei /dev/sdb zugeordnet. Das sich in der Regel eine Partition auf dem USB-Stick befindet, kann man diese Partition über die Gerätedatei /dev/sdb1 ansprechen.

Nun kann man über den Befehl

sudo umount /dev/sdb1

den USB-Stick aushängen.

Im nächsten Schritt soll der USB-Stick wieder eingehängt werden. Er soll danach im Ordner /mnt zu finden sein. Dazu gibt man auf der Konsole ebenfalls den Befehl mount, gefolgt von der Gerätedatei und dem Einhängepunkt an:

sudo mount /dev/sdb1 /mnt

Danach kann man über den Ordner /mnt auf den USB-Stick zugreifen.

Ein weiteres Beispiel

Mit dem Programm gparted kann man Partitionen erstellen. Erzeugt man damit auf einem USB-Stick zwei Partitionierung:Partitionen (dadurch werden alle Daten auf dem USB-Stick gelöscht!), so muss man jede Partition einzeln mounten. Die Partitionen sind dann in der Regel über die Gerätedateien /dev/sdb1 und /dev/sdb2 ansprechbar. Im folgenden Beispiel werden mit dem Befehl mkdir zunächst zwei Verzeichnisse im Ordner /mnt erzeugt. Danach werden dorthin die beiden Partitionen gemountet.

sudo mkdir /mnt/part1
sudo mkdir /mnt/part2
sudo mount /dev/sdb1 /mnt/part1
sudo mount /dev/sdb2 /mnt/part2

Netzwerkfreigaben und NFS

Neben dem Aspekt „Alles ist eine Datei“ ist der Aspekt „Alles ist eine Client-Server-Anwendung“ ebenfalls grundlegend für die Linux-Philosophie. Viele Programme sind so konstruiert, dass sie über Netzwerkverbindungen kommunizieren, auch wenn sie auf demselben Rechner laufen. So können alle Programm auch wahlweise über das Netzwerk genutzt werden. Dieser Aspekt wird nun deutlich, wenn man auf Netzwerkfreigaben zugreifen will.

Das Protokoll, d. h. die Regeln mit denen Dateien über das Netzwerk ausgetauscht werden können, heißt NFS. Um Netzwerkfreigaben über NFS nutzen zu können, muss ggf. die im Artikel NFS beschriebenen Pakete installiert werden. Der Server ist in diesem Fall der Computer, der etwas freigibt. Der Client ist der Computer, der auf die Freigabe zugreift. Das, was der Server freigibt, wird in der Datei /etc/exports eingetragen. Das Vorgehen wird hier erklärt.

Der Client kann nun diese Freigabe wieder mit dem Befehl mount in seine Verzeichnisstruktur einbinden. Dies ist im Abschnitt NFS/Auf Freigaben zugreifen beschrieben.

Um die IP-Adresse eines Rechners herauszufinden, gibt man auf der Konsole

ifconfig

(von engl. interface configurator) ein. Die IP-Adresse findet man unter dem Abschnitt inet Adresse.

Ob ein Computer auch unter seinem Computernamen im Netzwerk zu finden ist, kann man herausfinden, indem man eine Anfrage mittels

ping COMPUTERNAME 

von einem Computer an ihn richtet. Ist der Aufruf erfolgreich, kann man anstatt der IP-Adresse auch den Computernamen verwenden. Ansonsten muss man ggf. die

Übung

Übung

Übung

  1. Installiere die beiden NFS#Installation:benötigten Pakete, um das NFS-Protokoll zu nutzen. Gib dann auf einem Rechner einen Ordner frei. Bindet eine Freigabe von einem anderen Rechner ein. Alternativ, kann man auch auf einem Rechner eine Freigabe einrichten und von demselben Rechner darauf zugreifen.
  2. Lies den Abschnitt NFS#Auf-Freigaben-zugreifen durch und den Artikel zur Datei fstab:/etc/fstab. Verändere dann die Freigabe so, dass man zwar noch darauf zugreifen kann, sie aber nicht mehr verändern kann.

Diskussion

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
180 +5 = ?
 
 
grundlagen/dateirechte_dateisystem_und_verzeichnisstruktur.txt · Zuletzt geändert: 2012/11/27 19:38 von admin