CHMOD fest im Griff

Die Installation von CGI-Anwendungen bereitet Anfängern häufig Schwierigkeiten. Die Modifikation der fertigen Skripte und das Hochladen gelingt meist problemlos, etwas verwirrender scheint die Vergabe der Rechte für die jeweiligen Dateien.

Dieser Beitrag beschäftigt sich daher ausführlich mit der Thematik "CHMOD" (change modus). Die vorher notwendigen Schritte für eine CGI-Installation (Skript-Anpassung, Hochladen usw.) habe ich bereits in einem anderen Beitrag [1] detailliert beschrieben.

Theorie

Um es nicht zu kompliziert zu machen ein ganz grober Abriss: Der Großteil der Rechner, die als "Webserver" betrieben werden, arbeiten mit einem Unix- oder Linux-Betriebssystem. Bei diesen werden den Dateien und Verzeichnissen bestimmte Rechte zugeordnet. Das sind das Lese- (read), Schreib- (write) und Ausführrecht (execute). Diese Rechte können jeweils 3 Nutzergruppen zugeordnet werden.

Dadurch wird festgelegt, wer auf eine Datei zugreifen darf und in welchem Umfang dies möglich ist. Diesen Vorgang realisiert man mit dem Befehl "chmod". Für das Kommando wird eine Oktalzahl benötigt, die die Rechtevergabe widerspiegelt. Dazu nun eine kleine Übersicht mit den 3 Nutzern, den 3 Rechten und dem dazugehörigen Wert:

 
Besitzer
Gruppe
Andere
Lesen
4
4
4
Schreiben
2
2
2
Ausführen
1
1
1

Durch die Addition der Werte für den jeweiligen Nutzer ergibt sich dann entsprechend die Oktalzahl. Ein Beispiel: Eine Datei soll für alle lesbar und für den Besitzer "schreibbar" sein.

Besitzer: 4 (lesen) + 2 (schreiben) = 6
Gruppe: 4 (lesen) = 4
Andere: 4 (lesen) = 4

Im Beispiel ergibt die Kombination der Rechte den Wert 644. Ein zweites Exempel: Eine Datei soll für alle les- und ausführbar sein, der Besitzer erhält Schreibrechte:

Besitzer: 4 (lesen) + 2 (schreiben) + 1 (ausführen) = 7
Gruppe: 4 (lesen) + 1 (ausführen) = 5
Andere: 4 (lesen) + 1 (ausführen) = 5

Ergibt die Oktalzahl 755. In Verbindung mit der Installation von CGI-Anwendungen finden wir i.a. die CHMODs 644, 666, 755 und 777. Diesen "Werten" lassen sich erfahrungsgemäß typische Komponenten eines CGI-Programmes zuordnen:

644 Text-Dateien mit Inhalten oder Template-Dateien für das Layout
666 Dateien, in die etwas geschrieben wird, z.B. Counter-Log
755 für auszuführende Skripte (.pl, .cgi) und für die Verzeichnisse
777 für Verzeichnisse, in denen Dateien mit Schreibrechten (666) liegen

Soviel zur Theorie, weitere Ausführungen würden hier den Rahmen sprengen. Für profunde Informationen zur Thematik empfiehlt sich u.a. Linux-Literatur. [2]

Warum muss der CHMOD geändert werden?

Um Dateien via Web abrufbar zu machen, räumt man allen Nutzern das Leserecht ein. Der Datei-Besitzer erhält außerdem das Schreibrecht, damit er die Daten via Ftp Ändern oder Löschen kann. Bei einem CGI-Skript muss den Nutzern zusätzlich das Ausführrecht eingeräumt werden, damit der "Webserver" das Skript abarbeiten kann.

Vorbeugend sei erwähnt, dass für HTML-, Text-, Bilddateien usw. der CHMOD 644 und für Verzeichnisse der CHMOD 755 korrekt ist. Dies sind i.d.R. auch die Standardeinstellungen für die Rechte beim Provider und daher muss man hier nichts ändern. Das "Problem" der Rechtevergabe sollte also i.a. nur bei CGI-Installationen von Bedeutung sein.

Änderung mit einem FTP-Client

Die Änderung des CHMODs erfolgt typischer Weise mit einem Ftp-Programm. Das scheint die einfachste und gängigste Methode. Ferner kann die Rechtevergabe auch via Telnet erfolgen. Darauf gehe ich später ein.

Die Information, welche Datei mit welchem CHMOD zu versehen ist, findet man (fast) immer in den Readme-Dateien, die den CGI-Anwendungen beigelegt sind. Nach erfolgreichem Hochladen der Daten in den Webaccount und evtl. Aktualisierung der Dateiliste kann man mit der Vergabe der Rechte fortfahren.

Screenshot LeechFTP

Beim Programm "LeechFTP" [3] wird die zu bearbeitende Datei angeklickt, mittels rechter Maustaste lässt sich ein Menü aufrufen, in dem der Punkt "Set Attributes..." ("Attribute ändern...") zu finden ist. Ein Klick hierauf bringt das im Screenshot dargestellte Kästchen zum Vorschein. Hier wird der CHMOD festgelegt und mit einem Klick abgespeichert.

Ähnlich unkonventionell gestaltet sich der Vorgang mit dem Linux-Programm "gFTP" [4]. Nur das hier der Menüpunkt für die Rechtevergabe einen anderen Namen hat. Im Screenshot erkennt man wieder die typische Aufteilung in 3 Gruppen und 3 Rechtearten.

Screenshot gFTP

Letztlich erfolgt die Rechtevergabe bei den meisten Ftp-Programm immer nach dem selben Muster. Wichtig ist also, dass man den Dateien den korrekten Mode zuordnet. Sonst funktionieren korrekt modifizierte CGI-Anwendungen nicht und der Frust über scheinbar vergeudete Zeit ist groß.

Änderung via Telnet

Abschließend noch ein paar Worte zu dieser Variante. Bei vielen Webaccounts ist die Nutzung von Telnet aus Sicherheitsgründen nicht möglich. Wer auf seinen Account via Telnet bzw. mittels SSH zugreifen kann, dem bietet sich die alternative Möglichkeit, die Rechtevergabe hier vorzunehmen.

Ein "Login" sollte nicht allzu große Probleme bereiten. Nach diesem Vorgang wird die Tastatur zum besten Freund des Webmasters. Zunächst muss mit Hilfe des "cd" Kommandos (change directory) in das entsprechende Verzeichnis gewechselt werden. Dort kann mit dem "chmoden" begonnen werden.

Screenshot Terminal

Folgendes Kommando versieht die Datei "quiz.shtml" mit dem chmod 644:
chmod 644 quiz.shtml

Mehrere Dateien gleichen Typs können effizient in einem Schritt abgearbeitet werden. Im folgendem Beispiel wird allen ".pl"-Dateien der chmod 755 zugeordnet:
chmod 755 *.pl

Für weitere Details empfiehlt sich wiederum ein Blick in ein Fachbuch bzw. eine kleine Recherche bei der präferierten Suchmaschine.

Quellen & Links

[1] Unbegrenzte Möglichkeiten mit CGI: http://www.drweb.de/cgi/cgi_anwendung.shtml
[2] "Linux Power", Gehrke/Klappheck/Glinsky/Gripp, Sybex Verlag Düsseldorf, 1997
[3] LeechFTP, Jan Debis: http://stud.fh-heilbronn.de/~jdebis/leechftp/downloads.html
[4] gFTP, Brian Masney: https://www.gftp.org/