Die Verzeichnis-Struktur eines Paketes
Nach dem ersten Erfolgserlebnis wollen wir uns gleich wieder in das neue Paket einloggen. Diesmal mit dem neuen, selbst vergebenen Passwort. Als nächstes erforschen wir die Directory-Struktur unseres Paketes, hierzu benutzen wir zunächst das UNIX-Kommando ls, welches uns das Inhaltsverzeichnis auflistet:
xyz00@hopi:~$ lscgi etc users var web
xyz00@hopi:~$ █
Anders als evtl. von einer DOS-Kommandozeile und dem DOS-Kommando dir gewohnt, ist die Ausgabe vom UNIX ls äußerst knapp. Doch wir können dem Kommando auch mehr Informationen entlocken. Mit den Optionen -la erhalten wir eine lange (l) Ausgabe aller (a) Dateien (wir könnten auch -l -a schreiben, -la ist die Kombination der beiden Optionen):
xyz00@hopi:~$ ls -latotal 36
drwx--x--x 8 xyz00 xyz00 4096 Apr 18 18:46 .
drwxr-sr-x 90 root staff 4096 Apr 17 14:52 ..
drwxr-x--- 2 root root 4096 Apr 18 02:37 .bak
-rw------- 1 xyz00 xyz00 235 Apr 18 18:46 .bash_history
drwxr-xr-x 2 xyz00 xyz00 4096 Apr 17 16:21 cgi
drwxr-xr-x 2 xyz00 xyz00 4096 Apr 18 02:37 etc
drwxr-xr-x 5 xyz00 xyz00 4096 Apr 18 18:54 users
drwxr-s--- 2 xyz00 xyz00 4096 Apr 19 00:01 var
drwxr-x--- 2 xyz00 httpd 4096 Apr 17 11:24 web
xyz0@hopi:~$ █
Alle Dateien bedeutet in dem Fall, dass auch unsichtbare Dateien aufgeführt werden. Unter UNIX sind dies Dateien, die mit einem Punkt beginnen. Ein festes Schema der Dateibezeichnung wie früher bei DOS (8 Zeichen, Punkt, 3 Zeichen) gibt es unter UNIX nicht. Die hier zu sehenden Dateien und Verzeichnisse sind im einzelnen:
. |
Das zu sehende Verzeichnis selbst. |
.. |
Das übergeordnete Verzeichnis, in dem das aktuelle Verzeichnis enthalten ist. |
.bak |
Ein Verzeichnis in dem das Hostsharing-Backup-System Daten zwischenspeichert, die zwar zum Paket gehören, aber nicht im Paket selbst gespeichert sind, z.B. Datenbanken. Die Daten in diesem Verzeichnis können nicht eingesehen geschweige denn geändert werden. Sie gehen nur insofern in den Speicherplatz des Paketes ein, wenn die Originale gerade nicht in den Speichersplatz des Paketes eingehen. |
.bash_history |
Diese Datei wird von der Shell angelegt, dem Programm welches die Kommandos entgegennimmt, um die Befehls-Historie sitzungsübergreifend zu speichern. Vorherige Kommandos können mit der Cursor-Hoch-Taste durchgeblättert, bearbeitet und erneut ausgeführt werden. |
cgi |
Dieses Verzeichnis kann CGI-Skripte enthalten, die unter der URL http://xyz00.hostsharing.net/cgi-bin/... ausgeführt werden können. Dies ist hauptsächlich für Tests gedacht, bevor man eine im Paket Domain hat. |
etc |
Dieses Verzeichnis enthält paketweite Konfigurationsdateien, z.B. zur Userverwaltung. |
users |
Unterhalb dieses Verzeichnisses befinden sich die zusätzlichen User-Accounts des Pakets, sobald diese angelegt sind. |
var |
In diesem Verzeichnis liegen Logfiles und Status-Dateien. |
web |
Dieses Verzeichnis gehört zu dem o.g. cgi-Verzeichnis und enthält Dateien, die unter der URL http://xyz00.hostsharing.net/... erscheinen sollen. Auch dieses Verzeichnis dient nur zum Testen. Hier sind weder weitere Subdomains möglich, noch hat dieses Verzeichnis irgendetwas mit den Dokument-Verzeichnissen der eigenen Domains zu tun. |
Des Weiteren sind in dem oben dargestellten Inhaltsverzeichnis vor den Dateinamen viele kryptisch anmutende Informationen. Zur Einzelerläuterung hier nochmals eine dieser Zeilen:
drwxr-xr-x 2 xyz00 xyz00 4096 Apr 17 16:21 cgi
drwxr-xr-x |
Diese Buchstabenkette bedeutet, dass es sich um ein Verzeichnis (d: engl. directory) handelt, der Eigentümer der Datei die Rechte rwx, also Lesen (r: engl. read), Schreiben (w: engl. write) und Ausführen (x: engl. execute) hat. Bei Verzeichnissen wird das Ausführen-Recht als das Recht verstanden, das Verzeichnis zu durchlaufen, also auf Dateien darin zuzugreifen. Für den Inhalt des Verzeichnisses hingegen benötigt man das Lese-Recht. Die anderen beide Dreier-Ketten sind die Rechte der Gruppe, der die Datei bzw. das Verzeichnis zugeordnet ist, sowie die Rechte aller anderen Benutzer, zu denen hier auch der Webserver gehört. |
2 |
Diese Ziffer ist in der Regel recht unbedeutend und besagt, dass auf den Eintrag zwei Verweise bestehen. In diesem Fall einmal von unserem aktuellen Verzeichnis und einmal von Verzeichnis cgi selbst, nämlich über dessen Eintrag ".". |
xyz00 |
Das erste xyz00 bezeichnet den User, dem die Datei gehört, in diesem Fall dem Paket-Administrator. Bei langen Usernamen werden diese oft abgeschnitten, was zu Verwirrungen führen kann. |
xyz00 |
Das zweite xyz00 bezeichnet die gleichnamige Gruppe. Jedem Paket ist eine UNIX-Benutzergruppe zugeordnet, um allen Usern im Paket spezielle Rechte geben zu können. |
4096 |
Bei Verzeichnissen, wie im Falle dieses cgi-Verzeichnisses, ist diese Angabe nicht sehr aussagekräftig. Sie bezeichnet einfach die Größe der Datei in Bytes. Verzeichnisse unter UNIX sind intern auch Dateien, daher hat auch ein Verzeichnis eine solche Größe. |
Apr 17 16:21 |
Dies ist das Datum und die Uhrzeit, zu der das Verzeichnis zuletzt geändert wurde, also z.B. eine neue Datei aufgenommen wurde. Initial ist es das Datum und die Uhrzeit vom Anlegen des Verzeichnisses. |
cgi |
Dies ist, zu guter Letzt, endlich der Name der Datei, bzw. in diesem Fall des Verzeichnisses. |
Dateien des Paketes
Haben wir nun die erste Ebene unseres Paketes kennengelernt, stelle ich nun ein Kommando vor, mit dem wir auch die tieferen Ebenen sehen können:
xyz00@hopi:~$ find.
./doms
./doms/deineigenerdomainname.de
./doms/deineigenerdomainname.de/cgi
./doms/deineigenerdomainname.de/etc
./doms/deineigenerdomainname.de/subs
./doms/deineigenerdomainname.de/subs/www
./doms/deineigenerdomainname.de/subs/www/index.html
./doms/deineigenerdomainname.de/var
./etc
./etc/aliases
./etc/passwd
./etc/shadow
./var
./var/web.err
./var/web.log
./var/config.err
./var/ftp.log
./var/config.err.gz
./var/web.err.gz
./var/web-xyz00.hostsharing.net-20020418-0001.log.gz
./var/ftp.log-2002-04-18.gz
./var/web-xyz00.hostsharing.net-20020419-0001.log.gz
./users
./users/doms
./users/hans
./users/linda
./web
./web/index.html
./cgi
./cgi/test.cgi
./.bak
find: ./.bak: Permission denied
./.bash_history
xyz00@hopi:~$ █
Das UNIX-Kommando find ist eigentlich ein sehr mächtiges Werkzeug zum Suchen von Dateien, hier verwenden wir es ganz ohne Parameter, um einfach vom aktuellen Verzeichnis aus alle darunter liegenden Dateien und Verzeichnisse aufzulisten.
Im Beispiel oben sind bereits einige Dateien und Verzeichnisse aufgenommen, die eigentlich erst später entstehen, wenn erste Domains eingerichtet sind. Wenn wir so eine Ausgabe machen würden, wenn bereits mehrere User und Domains mit Daten angelegt wurden, würde die Ausgabe von find selbstverständlich recht lang werden.
Oben in der Ausgabe sehen wir zuerst das Unterverzeichnis doms, welches automatisch angelegt wird, sobald die erste Domain für den Paket-Admin aufgeschaltet wird. Darunter befinden sich alle Domainnamen, deren Admin der Paket-Admin selbst ist. Werden die Domains an einen anderen User übertragen, dann wird ein identischer Teilbaum doms unter dem Heimatverzeichnis des jeweiligen Users zu finden sein.
Domains sollte man nur dann auf den Paket-Admin aufschalten lassen, wenn man seine Domain-Dokumente ausschließlich mit SSH, ggf. mit FTP über einen SSH-Tunnel, verwalten möchte. Wenn man direktes FTP benutzen möchte, empfiehlt sich aus Sicherheitsgründen, die Domains auf einen anderen User zu übertragen.
Unterhalb jeder Domain befinden sich die Verzeichnisse etc für die Konfigurationen, subs für die Subdomains (wobei bei Hostsharing auch www eine normale Subdomain ist), cgi für CGI-Skripte (aller Subdomains) sowie var für Logfiles. Die Datei, die im Beispiel bei Aufruf der URL http://www.example.com angezeigt wird, liegt also im Verzeichnis www, hier als index.html, wobei auch index.htm, index.php sowie index.shtml funktionieren.
Im Verzeichnis etc sehen wir die drei Konfigurations-Dateien passwd, welche die User-Accounts des Pakets bestimmt, aliases, mit der E-Mail-Aliases verwaltet werden können, sowie shadow, welche die verschlüsselten Passwörter der User-Accounts des Paketes enthält - letztere wird niemals von Hand bearbeitet, sondern dient vor allem als Backup, falls das Paket auf einen anderen Server verschoben wird und kann mit passenden Algorithmen von Skripten zur Überprüfung der Passworte verwendet werden.
Im Verzeichnis var sehen wir bereits eine Reihe von Logfiles:
./var/web.err |
Diese Datei enthält Fehlermeldungen vom Webserver. |
./var/web.err.gz |
Diese Datei enthält die Fehlermeldungen des Vortages vom Webserver. |
./var/config.err |
Diese Datei enthält Fehlermeldungen aus den Konfigurationsdateien. |
./var/config.err.gz |
Diese komprimierte Datei enthält die Fehlermeldungen aus den Konfigurationsdateien vom Vortag. |
./var/ftp.log |
Dieses Logfile enthält täglich die FTP-Logfiles, dies kann insbesondere für die Abrechung von untervermieteten Accounts genutzt werden. |
./var/ftp.log-2002-04-18.gz |
Dieses komprimierte Logfile enthält die FTP-Zugriffe vom Vortag. |
./var/web.log |
Dieses Logfile enthält in Realtime die über den Webserver abgerufenen Dateien. |
./var/web-xyz00.hostsharing.net-20020419-0001.log.gz |
Diese komprimierten Dateien enthält die über den Webserver abgerufenen Dateien vom Vortag, und zwar für die im Namen codierte Domain. Diese Aufteilung wird jede Nacht automatisch gemacht. Diese Dateien bleiben 6-8 Wochen erhalten und werden dann automatisch gelöscht. Es ist aber möglich, die Dateien auch woanders abzulegen, z.B. im Verzeichnis eines Domain-Admins. Dann kann man sie per ftp verwalten. Näheres dazu unter Traffic-Logs |
Mehr zu den Logfiles findest du unter Traffic-Logs. Die Logfiles können mit einem entsprechenden Programm (z.b. analog) ausgewertet werden. Eine ausführliche Anleitung findest du hier.
Im oberen Beispiel wurden drei User angelegt: xyz00-doms, xyz00-hans und xyz00-suse. Während man in einem Multi-Admin-Account die Domains verschiedenen Usern zuweisen kann, geht das bei einem Single-Admin-Account nicht. Die hier vorgestellte Lösung ist daher für einen Single-Admin-Account gedacht, bei dem Inhalte teilweise von verschiedenen Usern betreut werden.
mehr zur Verzeichnisstruktur eines Paketes

