Workshop 2006-10-02 - 2006-10-03  Finanzamt/Zollamt Graz
Linux Filesysteme - WebApplikationen
willi moser (2006-10-02)


 

Das Linux-Dateisystem

Dateisysteme (File Systems)

Dateibaum-Struktur

Versuch der Standardisierung, an den sich inzwischen viele Linux-Distributionen halten: Filesystem Hierarchy Standard. Dies ist eine unbedingt nötige Orientierungshilfe, denn ein mittleres Linux-System der aktuellen SuSE-Distribution hat schon mal leicht mehr als 170000 Dateien.

Ausgehend vom root-Verzeichnis »/« finden sich folgende Verzeichnisse:

 
Verzeichnis Beschreibung
/bin Enthält die wichtigsten Nutzer- und Adminstrator-Programme, die zur Systemwartung benötigt werden. Alle anderen Programme sollten in /usr/bin sein.
/boot Enthält alles zum Booten notwendige.
/cdrom Nicht Teil des Standards, aber häufig der Mount-Point des CDROM-Laufwerks.
/dev Enthält die Gerätedateien.
/etc Parameterdateien, die den einzelnen Rechner beschreiben und konfigurieren; sozusagen seine Individualität ausmachen.
/floppy Nicht Teil des Standards, aber häufig der Mount-Point des Disketten-Laufwerks.
/home Enthält die lokalen Nutzerverzeichnisse (Home-Directories). Gilt häufig nicht für Rechner-Cluster mit verteilten Dateisystemen.
/lib Wichtige System- und Kernel-Bibliotheken (vergleiche: /bin).
/lost+found Nicht Teil des Standards, gehört zur internen Verwaltung des Dateisystems.
/mnt Temporärer Mount-Point für Filesysteme.
/opt Zusätzliche, optionale Software, wie beispielsweise NetScape, KDE und Gnome.
/proc Nicht Teil des Standard. Virtuelles Dateisystem, in dem aus Pseudodateien Statusinformationen des Kernels gelesen werden können.
/root Home-Directory des root-Users (Systemadministrator).
/sbin Dienstprogramme für den Systemadministrator. Nicht Teil des allgemeinen Programmsuchpfads.
/tmp Temporäre Dateien. Für jedermann beschreibbar.
/usr Hier befindet sich (fast) die ganze installierte Software. Read-Only. In Prinzip in einer Kopie von mehreren Rechnern gleichzeitig nutzbar.
/var Datenbereiche für veränderliche Daten: Mail, Drucker-Spool, Accounting, Logging, ...

Der Standard sieht unter den Haupt-Verzeichnissen weitere Verzeichnis-Strukturen vor.

Lokale Besonderheiten

Im ZIV weichen wir von obiger Struktur überall da ab, wo Daten im verteilten (Netzwerk-) Dateisystem DFS gespeichert werden. Dies bezieht sich auf Nutzer-HOME-Verzeichnisse und Standard-Anwendungen, die wir nicht jedesmal lokal, sondern einmal netzweit installieren:

Verzeichnis Beschreibung
/dfs Dateien im verteilten Dateisystem DFS.
/dfs/u HOME-Directories der Nutzer.
/dfs/a Anwendungs-Software für verschiedene Unix-Systeme, auch für linux.
/dfs/p Dateien für bestimmte Projekte, etwa für Web-Seiten des Uni-Web-Servers.
/dfs/s Dateien zur Systemwartung bestimmter Unix-Systeme: AIX, linux, ...

Befehle: df und mount

Mit dem df-Befehl kann man sich die augenblicklich benutzten Datei-Systeme ansehen. So liefert df -k zum Beispiel die Ausgabe:

Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/sdb6               256667     76146    167269  31% /
/dev/sda1                23302      7261     14838  33% /boot
/dev/sda5             17354152   1408700  15063888   9% /home
/dev/sdb1             15298588   1212308  13309140   8% /usr
/dev/sdb5               256667     10302    233113   4% /var
samba1:/dfs            9000000         0   9000000   0% /dfs

Will man wissen, welchen Typ die Dateisysteme haben, so hilft mount:

/dev/sdb6   on /        type ext2   (rw)
none        on /proc    type proc   (rw)
/dev/sda1   on /boot    type ext2   (rw)
/dev/sda5   on /home    type ext2   (rw)
/dev/sdb1   on /usr     type ext2   (rw)
/dev/sdb5   on /var     type ext2   (rw)
none        on /dev/pts type devpts (rw,gid=5,mode=620)
samba1:/dfs on /dfs     type nfs    (rw,nosuid,bg,soft,addr=128.176.188.87)

Dateien

Typen


 
Typ Beschreibung
Datei Im Englischen regular, plain oder auch ordinary file genannt. Technisch eine zeichen-adressierbare Zeichenfolge. Man unterscheidet traditionell:
  • Textdateien, deren Zeilenstruktur durch das Newline-Zeichen festgelegt wird. Mit unbewaffneten Auge lesbar. 
  • Binärdateien (Programme, komprimierte Dateien, Bilder, ...), deren Inhalt erst in einem bestimmtem Kontext (Programmaufruf, Entpacker, Bildbetrachter) sichtbar wird.
Verzeichnis Im Englischen directory genannt. Verzeichnisse sind Dateien mit einem durch das System festgelegten und garantierten Inhalt, nämlich Informationen über die Dateien und Verzeichnisse, die in diesem Verzeichnis abgelegt sind. Jedes Verzeichnis hat mindestens zwei Einträge: Einmal einen Verweis auf sich selbst ».« und einmal einen Verweis auf das übergeordnete Verzeichnis »..«, womit die Baumstruktur zur Wurzel zurückverfolgt werden kann.
Spezielle
Dateien
special files sind für Otto Normaluser normalerweise ohne Bedeutung. Mit ihnen regelt das System den Zugriff auf Geräte und ermöglicht die Kommunikation von Programmen untereinander.
  • Gerätedateien in /dev.
  • named pipes: Benannte Datenkanäle zwischen Programmen.
  • sockets: Datenkanal zwischen Programmen auch über das Netzwerk.
  • symbolische Links: Verweise auf andere Dateien.

Namen

Dateinamen

Verzeichnisse

Begriffe

 
Begriff Erklärung
Arbeits-
verzeichnis
Das Verzeichnis, in dem Sie sich gerade befinden. Mit cd (change directory) können Sie das Arbeitsverzeichnis ändern und mit pwd (print working directory) anzeigen lassen, in welchem Verzeichnis Sie sich gerade befinden.
Home-
Verzeichnis
Das Verzeichnis, in dem Sie sich nach dem Anmelden befinden.
. Das Arbeitsverzeichnis
.. Das übergeordnete Verzeichnis (parent directory)
~ Das eigene Home-Verzeichnis
~user Das Home-Verzeichnis des Nutzers user
~- Nach einem Verzeichniswechsel das vorherige Arbeitsverzeichnis

Pfad

Die Verzeichnisfolge von einem Verzeichnis im Dateisystem zu einer bestimmten Datei nennt man Pfad. Man unterscheidet:


 
relative Pfadnamen Der Startpunkt der Verzeichnisfolge ist das aktuelle Verzeichnis, z. B. ../../g/grote/.profile. Syntaktisch beginnt ein relativer Pfadname ohne Schrägstrich »/«.
absolute Pfadnamen Der Startpunkt der Verzeichnisfolge ist das root-Verzeichnis, z. B. /dfs/u/g/grote/.profile

Ein Pfadname darf nicht  länger als 1023 Zeichen sein.

Typische Verzeichnisnamen

Hier eine unvollständige Liste häufig vorkommender Verzeichnisnamen:


 
bin binary. Das Verzeichnis enthält Binär-Dateien, in der Regel aufrufbare Programme.
boot to boot: To load and initialize the operating system on a machine.
dev device.  Gerätedateien
etc et cetera.
lib library. Verzeichnis von Unterprogramm-Bibliotheken
mnt mount. Mount-Point für ein Dateisystem.
opt optional. Optionale, also wahlweise installierbare Software.
sbin system binary. Verzeichnis mit Programmen für den System-Administrator.
tmp temporary. Verzeichnis für temporäre Dateien.
usr user. Software für die Nutzer.
var variable. Verzeichnisse mit veränderlichen Daten.
local Lokal installierte Software
share Im Prinzip gemeinsam in einer Kopie nutzbare Software und Information.
include Header-Dateien der Programmiersprache C.
misc miscellaneous. Verschiedenes.

Zugriffsrechte

Will man auf eine Datei zugreifen, so muss man die passenden Rechte für die Datei und den Pfad haben. Man unterscheidet drei Zugriffsrechte:
 


 
read Das Recht, den Dateiinhalt ansehen zu dürfen. Für Verzeichnisse: Sich die Liste der Dateien und ihrer Attribute anzeigen zu können. 
write Das Recht, den Dateiinhalt verändern zu dürfen. Für Verzeichnisse ist es das Recht, Dateien anlegen und löschen zu dürfen. Hat man das Schreibrecht für ein Verzeichnis, kann man eine Datei auch dann löschen, wenn man bezogen auf die Datei keinerlei Rechte hat!
execute Markiert eine Datei als ausführbar und regelt, wer das Programm ausführen darf. Bei der Programmsuche werden nur solche Dateien beachtet, die dieses Recht vergeben haben. Für Verzeichnisse: Das Recht, in einem Pfad benützt zu werden.

Linux ist ein Mehrnutzer-System. Also muss es möglich sein, den Dateizugriff auf einzelne Nutzer(gruppen) einzuschränken. Datei-Zugriffsrechte werden für drei Nutzer-Gruppen vergeben:


 
owner Der Eigentümer (owner) einer Datei hat als einziger das Recht, Zugriffsrechte zu vergeben.
group Ein Nutzer gehört einer oder mehreren Gruppen an. Der Dateizugriff wird für genau eine Benutzergruppe besonders geregelt.
other Regelt das Zugriffsrecht für alle, die Nicht-Eigentümer und Nicht-Dateigruppenmitglieder sind.

 

Umgekehrt: Die Zugriffsrechte des Einzelnen

Sie setzen sich zusammen aus:

Interna

»I-Node«

Eine Datei im Dateisystem besteht aus zwei Teilen: der Dateibeschreibung (I-Node) und den Daten selbst. Im I-Node finden sich die Informationen über:

»link«

Es fehlt der Dateiname. Der steht nicht im I-Node, sondern im Verzeichnis und zeigt auf den I-Node. Diese Zuordnung nennt man link. Zu einem I-Node (zu einer Datei) kann es mehr als einen Namen geben. Die Anzahl der Namen, sprich der links, wird im I-Node mitgezählt. Eine Datei wird erst dann wirklich gelöscht, wenn kein link mehr auf sie zeigt.

Welche Vorteile hat dieses Verfahren? Die interne Struktur eines Verzeichnisses bleibt relativ einfach und ist unabhängig von eventuellen I-Node-Erweiterungen, die vielleicht durch neue Filesysteme nötig werden. Und die Datei beschreibt "sich selbst" und ist unabhängig von der Konsistenz der Einträge im Verzeichnis. Das System wird robuster.

Was ist nötig, um eine Datei im Dateibaum zu verschieben? Nötig ist dazu nur die Veränderung der Verzeichniseinträge; die Daten selbst müssen nicht bewegt werden. Diesen Vorteil hat man leider nur, wenn man die Grenzen eines Dateisystem nicht verlässt! In einem solchen Fall heißt "Datei bewegen" wirklich: Datei kopieren und anschließend das Original löschen.

»mode bits«

Die Zugriffsrechte werden im I-Node durch eine Folge von 12 bits beschrieben, die häufig als 4-stellige Oktal-Zahlen (zu jeweils 3 bits) dargestellt werden:
 


 
Oktal-1 bit1 Set Userid Bit Früher wurden Zugriffsrechte wirklich als Oktal-Zahl angegeben. Alte Hasen tun das heute auch noch (siehe die Befehle chmod und umask). Zum Beispiel setzt

chmod 755 /home/ost

die Zugriffsrechte für das Verzeichnis »/home/ost«: Der Eigentümer hat read, write und execute, die Gruppe und alle anderen read und execute.

chmod 4711 mein-programm

setzt die Zugriffsrechte für Datei »mein-programm« so, dass der Eigentümer read, write und execute hat und jeder das Programm ausführen, aber nicht lesen darf. Zusätzlich läuft es, auch wenn andere es aufrufen, mit den Rechten des Eigentümers.

umask setzt eine dreistellige oktale Maske, deren Bits angeben, welches Zugriffsrechte anfänglich nicht vergeben werden sollen. Häufig voreingestellt ist

umask 022

wodurch das Schreibrecht für group und other ausblendet wird. 

Die drei Bits der ersten Oktal-Zahl sind für System-Administratoren und Anwendungsentwickler interessant. Eine eingehende Behandlung unterbliebt deshalb an dieser Stelle. 

bit2 Set Groupid Bit
bit3 Sticky Bit
Oktal-2 bit1 read-Recht für Eigentümer
bit2 write-Recht für Eigentümer
bit3 execute-Recht für Eigentümer
Oktal-3 bit1 read-Recht für Gruppe
bit2 write-Recht für Gruppe
bit3 execute-Recht für Gruppe
Oktal-4 bit1 read-Recht für alle
bit2 write-Recht für alle
bit3 execute-Recht für alle


Workshop 2006-10-02 - 2006-10-03  Finanzamt/Zollamt Graz
Linux Filesysteme - WebApplikationen
willi moser (2006-10-02)