Um die grundlegenden Eigenschaften von Unix-Dateisystemen darzustellen ist es am einfachsten, sie mit einem bekannten Dateisystem zu vergleichen. Dabei bietet sich das FAT-System von DOS an, weil es viele Ähnlichkeiten zu Unix aufweist und allgemein bekannt ist.

Im DOS-Dateisystem hat jede Datei ein paar Attribute, die in ihrem Verzeichniseintrag auf der Platte abgespeichert sind. Diese Attribute sind:

  • Dateinamen (8 Byte)
  • Erweiterung (3 Byte)
  • Größe (4 Byte)
  • Datum/Zeit des letzten schreibenden Zugriffs (4 Byte)
  • Attributbyte (Archiv, Verzeichnis, System, Versteckt, ReadOnly) (1 Byte)
  • Nummer des ersten verwendeten Clusters

Im Gegensatz dazu haben Unix-Dateien eine wesentlich größere Menge von Attributen, die wichtigsten sind:

  • Dateinamen (265 Byte)
  • Größe (4 Byte)
  • Datum des letzten schreibenden Zugriffs (4 Byte)
  • Datum des letzten Zugriffs (auch lesend) (4 Byte)
  • Datum der letzten Statusänderung (4 Byte)
  • Eigentümer UID (2 Byte)
  • GruppenID (2 Byte)
  • Anzahl der Dateinamen (Hardlinks) (2 Byte)
  • Zugriffsmodus und Dateityp (2 Byte)
  • Inode-Nummer
  • Mehrere Verweise auf die Datenblöcke

Dateinamen

Die ersten wesentlichen Unterschiede sind schon im Dateinamen erkennbar. Die maximale Länge eines Unix-Dateinamens ist auf 256 Zeichen beschränkt. Ein wesentlicher Unterschied zu DOS/Windows Dateinamen ist die Tatsache, dass unter Unix streng zwischen Groß- und Kleinschreibung unterschieden wird. Das heißt die Dateinamen

Datei1.txt
datei1.txt
DATEI1.TXT

bezeichnen drei unterschiedliche Dateien.
Theoretisch darf ein Unix-Dateiname jedes beliebige Zeichen enthalten, auch Leerzeichen usw. – aber man macht sich das Leben unnötig schwer mit solchen Dateinamen. Wir werden später im Umgang mit der Shell sehen, wie solche Namen trotzdem verwendet werden können. Für den Anfang ist man auf der sicheren Seite, wenn nur Buchstaben, Zahlen, Punkt, Unterstrich und Bindestrich verwendet werden.

Der Punkt hat keinerlei Sonderbedeutung in Unix-Dateinamen, es können also beliebig viele davon im Namen enthalten sein, die Aufteilung in Name und Erweiterung, wie unter DOS gibt es hier nicht. Das heißt aber auch, dass Unix sich nicht an dieser Erweiterung orientiert, um herauszufinden, um was für einen Dateityp es sich handelt.

Eine Sonderbedeutung des Punktes gibt es, wenn ein Dateinamen mit einem Punkt beginnt, so zeigt das normale ls Kommando die Datei nicht an, sie ist also sozusagen versteckt.

Zugriffsdatum

Im Gegensatz zu DOS kennt Unix nicht nur ein Datum pro Datei, sondern drei. Das erste bezeichnet, entsprechend dem DOS-Datum, den letzten schreibenden Zugriff, also das Datum aus dem ersichtlich wird, wann die Datei das letzte Mal verändert wurde. Dieses Datum wird mtime (Modification-Time) genannt.

Das zweite Datum bezeichnet den letzten Zugriff überhaupt, also auch lesende Zugriffe werden hier bemerkt. Dieses Datum wird atime (Access-Time) genannt.

Das dritte Datum registriert schließlich die letzte Statusänderung, also z.B. Wechsel der Zugriffsrechte, des Eigentümers, der Gruppe usw. Dieses Datum heißt ctime (Change-Time) Natürlich kann dieses Datum nur funktionieren, wenn der Datenträger nicht als ReadOnly gemountet ist. Auf CD-Roms etwa kann es logischerweise nicht funktionieren.

Eigentümer

Jede Datei gehört einem User. In der Regel sind die Eigentümer die User, die eine Datei angelegt haben. Die Systemdateien gehören meist dem Systemverwalter oder bestimmten Verwaltungsusern. Im Dateisystem ist nicht der Username sondern die numerische UserID gespeichert.

Gruppenzugehörigkeit

Jede Datei gehört genau einer Gruppe an. Diese Gruppenzugehörigkeit kann beliebig variiert werden. Es ist nicht zwangsweise nötig, dass der Eigentümer einer Datei auch Mitglied der Gruppe sein muß, auch wenn es in der Praxis meist der Fall ist. Die Gruppenzugehörigkeit spielt eine große Rolle bei der Frage der Zugriffsrechte auf eine Datei.

Anzahl der Dateinamen

Unter Unix können Dateien mehrere Dateinamen haben, sogenannte Hard-Links. Die Anzahl ist hier angegeben. Hard-Links werden später bei den Unix-Dateiarten genauer erklärt.

Zugriffsmodus und Dateiart

Jede Datei hat einen sogenannten Zugriffsmodus, der beschreibt, um was für eine Art Datei es sich handelt, wer was damit anstellen darf. Dazu wird die 16 Bit-Zahl, die diese Zusammenhänge darstellt, in fünf Werte (einmal 4 Bit für den Dateityp, viermal 3 Bit für die Rechte) aufgeteilt.

Die wichtigsten Werte davon werden durch das ls -l Kommando dargestellt. Dabei werden folgende Abkürzungen benutzt:

DateiartRechte des
Eigentümers
Rechte eines
Gruppenmitglieds
Rechte aller
Anderen
  Normale Datei
d  Verzeichnis
l  Symb. Link
b  Blockorient. Gerät
c  Zeichenorient. Gerät
s  Socket
p  Named Pipe
r | w | xr | w | xr | w | x
4 | 2 | 14 | 2 | 14 | 2 | 1
0 – 70 – 70 – 7

Die Werte der einzelnen Rechte für Eigentümer, Gruppenmitglied und Rest werden jeweils addiert, so dass dadurch Oktalziffern (0-7) entstehen. Die Bedeutung der einzelnen Buchstaben bzw. Ziffern ist einfach:

r oder 4Leserecht
w oder 2Schreibrecht
x oder 1Ausführungsrecht
Rechte Dateien

Leserecht bedeutet, dass ein User, der dieses Recht hat, den Inhalt der Datei zu lesen. Schreibrecht heißt, der User darf den Inhalt der Datei verändern bzw. die Datei löschen. Das Ausführungsrecht bezieht sich nur auf Programme, der User, der das Ausführungsrecht auf ein Programm hat, darf das Programm laden und ausführen. Das Ausführungsrecht hat bei Verzeichnissen eine spezielle Bedeutung, nämlich das Recht, in das Verzeichnis zu wechseln.

Nehmen wir also einmal an, die Datei Testdatei.txt hat den folgenden Modusstring, ausgegeben vom ls -l Kommando:

-rw-r—- 1 hans user … Testdatei.txt

Aufgeteilt müßten wir den String folgendermaßen darstellen:

DateiartUserGroupRest
rw-r–

Daraus geht hervor, dass es sich um eine reguläre Datei handelt (erster Bindestrich). Der Eigentümer der Datei (hans) hat als Rechte rw-, er darf also lesen und schreiben. Mitglieder der Gruppe user dürfen nur lesen (r–) und der Rest der Welt hat keine Rechte auf diese Datei (—).

Numerisch ausgedrückt könnten wir die Rechte folgendermaßen darstellen:

rw- = 4+2+0 = 6
r– = 4+0+0 = 4
— = 0+0+0 = 0

Der numerische Wert des gesamten Zugriffsmodus in Oktalziffern ist also 640.

Für Programme gibt es noch eine vierte Angabe, die sich auch mit den Oktalziffern 1,2 und 4 bzw. aus einer Kombination aus diesen Ziffern ergibt. Diese vierte Angabe wird VOR den drei üblichen Angaben gemacht, streng genommen hätte also die Datei aus dem letzten Beispiel die numerische Darstellung 0640. Diese weitere Angabe wird später, beim Usersystem genauer beschrieben.

Schreibe einen Kommentar