Viele, die mit Windows arbeiten, haben Probleme im Umgang mit einem Web-Server, der unter Unix läuft. Vor allem die Zugriffsrechte unter Unix scheinen auf den ersten Blick recht kompliziert.
Wir wollen Ihnen im Folgenden das System der Zugriffsrechte unter Unix und das Ändern derselben mit Hilfe des Befehls 'chmod' einmal näherbringen.
Das Betriebssystem Unix mit seinem schnell wachsenden Abkömmling Linux ist multiuser-fähig. Das bedeutet, dass mehrere Benutzer gleichzeitig Anwendungen ausführen dürfen.
Aus Gründen der Sicherheit muss das System daher natürlich auch Möglichkeiten bieten, Dateien vor dem Zugriff dazu nicht berechtigter zu schützen. Dies wird durch die Zugriffsrechte bewerkstelligt. Dabei wird für jede Datei definiert, wer und in welchem Umfang ein User darauf zugreifen darf
Die Zugriffsrechte werden für drei verschiedene Nutzergruppen getrennt vergeben.
Das ist der Nutzer, der die Datei erstellt hat. Nur dieser Benutzer kann die Zugriffsrechte ändern. (Zusätzlich darf der Superuser/Root Zugriffsrechte für alle Dateien ändern).
Das ist die Gruppe, dem der Benutzer zugeordnet ist. Man kann so Dateien einer bestimmten Gruppe von Personen zugänglich machen.
Damit sind alle anderen Nutzer gemeint. Oft spricht man auch von "der ganzen Welt", bezogen auf das Internet. Denn nur die Dateien, die für "Others" freigegeben sind, kann man auch über das Internet aufrufen. Ein Zugriff über das Internet wird wie ein einfacher Nutzer ohne Rechte behandelt. Ähnlich einem anonymen Nutzer eines FTP-Servers.
Nun zu den einzelnen Zugriffsrechten, die ein Nutzer bekommen oder nicht bekommen kann. Es gibt auch hier drei verschiedene Ebenen: die Datei lesen ( read), die Datei schreiben (write) und die Datei ausführen (execute), was auch mit rwx abgekürzt wird. Jedes Recht kann wiederum jeder der drei Nutzer-Gruppen zugeordnet werden.
Ein Beispiel: Der Besitzer darf lesen, schreiben, ausführen (rwx), die Gruppe und alle anderen dürfen nur lesen und ausführen (r-x). Oder: Der Besitzer darf lesen, schreiben, ausführen (rwx), die Gruppe und alle anderen dürfen nur lesen (r--).
Die Zugriffskontrolle betrifft nicht nur Dateien, auch für Verzeichnisse lassen sich die Rechte festlegen. Hierbei sollten Sie allerdings ein paar Dinge beachten, denn es gibt Besonderheiten.
Weisen Sie einem Verzeichnis nur das Lesen-Recht oder nur das Ausführen-Recht zu, dann dürfen andere Nutzer die Dateien in diesem Verzeichnis nicht lesen, denn zum Lesen muss das Verzeichnis geöffnet, also ausgeführt werden.
Beispiel: Angenommen, nightfire.ch/test/ wäre nur mit Lesen markiert, dann erhalten Sie bei Aufruf von "nightfire.ch/test/" eine Fehlermeldung, ebenso wenn Sie versuchen eine Datei aus diesem Verzeichnis zu öffnen.
Damit Dateien aus einem Verzeichnis über das Internet gelesen werden können, müssen also beide Rechte gesetzt sein (Lesen und Ausführen). Bei normalen HTML-Dateien dagegen genügt das Lesen-Recht.
Wollen Sie nun die Zugriffsrechte einer Datei oder eines Verzeichnisses ändern, können Sie dazu den Befehl "chmod" benutzen. Mit chmod können Sie Zugriffsrechte per Telnet aber auch mit fast jedem FTP-Programm setzen und ändern.
Der Befehl "chmod" ist eine Abkürzung von "change mode". Die Eingabe des Befehls muss in folgender Syntax erfolgen:
chmod modus datei
Mit 'modus' sind die Zugriffsrechte gemeint, anstelle von 'datei' geben Sie den Namen der betreffenden Datei an, deren Zugriffsrechte geändert werden sollen.
Sie können die Zuordnung in verschiedenen Varianten angeben:
Beispiel: chmod 755 datei.cgi
Bei der häufigst verwendeten Option müssen Sie eine 3-stellige Zahl angeben. Für jede Nutzergruppe (Eigentümer,Gruppe,Andere) gibt es eine Stelle.
Um die Rechte zu definieren wird ein spezielles System angewendet.
Jedes Recht hat einen bestimmten Bitwert, für die Summe aller Rechte eines Users/Gruppe werden die Bitwerte addiert, für jeden Nutzer getrennt.
Was auf den ersten Blick etwas verwirrend erscheinen mag, erweist sich bei näherer Betrachtung als ziemlich simples Prinzip. Wird ein Recht vergeben, wird ein Bit gesetzt (1, ein), ansonsten wird kein Bit gesetzt (0, aus). In der dezimalen Schreibform der Binärwerte können bei der Addierung der Rechte Werte von 0 bis 7 entstehen, wobei die Zuordnungen immer eindeutig sind.
Wollen Sie zum Beispiel einem Benutzer gleichzeitig Lesen und Ausführen zuordnen, addieren Sie "4 + 1 = 5".
Die folgende Tabelle zeigt alle möglichen Werte:
Die Ziffer der jeweiligen Rechtevergabe schreiben Sie nun in der folgenden Reihenfolge hintereinander. Zuerst die Ziffer für den Eigentümer (USER), dann für die Gruppe (GROUP), zuletzt für die Anderen (OTHERS).
Der Befehl "chmod 777 datei.htm" weist demzufolge alle Rechte allen Nutzergruppen zu. Diese Datei kann von allen zum Beispiel mit Hilfe eines CGI-Skriptes geändert werden.
Weiteres Beispiel: Damit ein CGI-Skript ausführbar ist, müssen Sie es mit "chmod 755 datei.cgi" ausführbar machen. Dabei weisen Sie dem Skript folgende Rechte zu: USER: Lesen, Schreiben, Ausführen GROUP und OTHERS: Lesen, Ausführen Das heißt: nur der Besitzer kann die Datei ändern (schreiben), während die Gruppe und alle anderen die Datei nur lesen und ausführen dürfen.
Tip: Vergeben Sie niemals alle Rechte an alle Benutzergruppen, wenn Sie nicht wissen, welches die richtigen Zugriffsrechte sind. Damit können Sie schlimmstenfalls dem unberechtigten Zugriff und Missbrauch des UNIX-Servers Tür und (Scheunen-)Tor öffnen.
Beispiel: chmod ugo=rwx datei.cgi
Hierbei sparen Sie sich das Rechnen, müssen aber mehr eingeben. Ausserdem können Sie diese Variante nicht in allen FTP-Programmen nutzen. Trotzdem ist Sie eindeutiger, da man hier die Rechte mit Hilfe von Symbolen zuweist.
Für die Nutzergruppen verwenden Sie die folgenden Buchstaben u=USER, g=GROUP und o=OTHERS. Die Rechte stellen Sie auch durch Buchstaben dar. Dabei steht "r" für Lesen (read), "w" für Schreiben (write) und "x" für Ausführen (execute).
Die Zuordnung schreiben Sie nach folgendem Schema: chmod ugo=rwx datei.htm
Dieser Befehl in unserem Beispiel weist der Datei wieder alle Zugriffsrechte für alle Nutzer zu. Sie können auch einzelne Nutzergruppen und Rechte weglassen.
Um verschiedenen Nutzergruppen unterschiedliche Rechte zuzuweisen, können Sie mehrere Angaben machen, die Sie mit einem Komma trennen.
chmod u=rwx,g=rx,o=r datei.cgi Dieser Befehl ist gleichbedeutend mit "chmod 751".
Sie können auch anstatt des "ist gleich" ein Plus- oder Minus-Zeichen verwenden. Mit Plus weisen Sie Rechte zu, und mit dem Minus-Zeichen entziehen Sie die Rechte wieder.
chmod u+w,g-w,o-wx datei.cgi Dieser Befehl erteilt USER zusätzlich das Recht "Schreiben", Group entzieht er das Recht "Schreiben" und allen Anderen entzieht er die Rechte "Schreiben" und "Ausführen".