Workshop 2006-10-02 - 2006-10-03
Finanzamt/Zollamt Graz
Linux Filesysteme - WebApplikationen
willi moser (2006-10-02)
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.
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, ...
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)
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
Dateienspecial 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.
Dateinamen
/ " ' * ; - & ? ( ) [ ] ~ ! $ { } > < # @
nennt man asking for trouble, da diese Zeichen in der Shell eine reservierte Bedeutung haben und damit zu Problemen beim Kommandieren von Linux-Befehlen führen.
Begriff Erklärung Arbeits-
verzeichnisDas 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-
VerzeichnisDas 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
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.
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.
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.
Sie setzen sich zusammen aus:
Eine Datei im Dateisystem besteht aus zwei Teilen: der Dateibeschreibung (I-Node) und den Daten selbst. Im I-Node finden sich die Informationen über:
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.
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)