Was ist das?
Die Shell ist eine Kommandozeile auf der man Befehle an ein Computersystem
abgeben kann und die Antworten des Systems lesen kann. Man kann z.b.
ein kleines Perl Programm schreiben oder verändern und dann in
der Shell starten.
Bei uns steht eine Bash Shell in einer chroot Umgebung zur Verfügung.
Diese Umgebung ist identisch zur cgi-local Umgebung
Zugang
Mit einem SSH-Client (Secure Shell) kann man die Verbindung z.B. zwischen
dem PC zuhause und dem Server bei herstellen. Die Zugangsdaten finden
Sie auf dem Internet-Datenblatt dass Sie von uns erhalten haben. Danach
ist man eben in einer Shell und kann Kommandos an den Server geben.
Telnet wird aus Sicherheitsgründen nicht unterstützt. Da
aber SSH alle Funktionen von Telnet und noch viele mehr hat, ist dies
nur von Vorteil.
Wir empfehlen "putty" als SSH-Client.
Vorteile
einer Shell
- Schnelleres
Debuggen. CGI-Scripts können schneller degugged
werden.
- Einfacheres
Ändern. Man kann CGI-Scripts (Perl oder Shell) schneller
ändern.
- Website
Management. Das Dateimanagement geht schneller als mit
einem FTP-Client
Auf
was ist zu achten?
- Es ist wichtig,
daran zu erinnern, dass Unix case-empfindlich ist und dass "Index.htm"
nicht dasselbe ist wie "index.htm".
- Schreiben
Sie Datei- und Verzeichnisnamen in Kleinschrift ohne Sonderzeichen
- dies vereinfacht vieles.
- Schreiben
Sie Systembefehle in Kleinschrift.
- Korrigieren
Sie falls nötig den Pfad für Perl und Bash-Programme
laut den Angaben weiter unten.
- Damit
der Server die ssh Verbingung nicht unterbricht kann man im Client
"keep-alive" aktivieren.
Sicherheit
Wie immer ist auch hier Sicherheit wichtig. Sie können sehr
schnell Dateien löschen oder ungewollt umgenennen.
Wenn Befehle der Shell aufgerufen werden, die Parameter von Dritten
(z.B. aus einem Formular) enthalten so trauen Sie diesen Angaben
nicht. In der Anleitung zu cgi-local
finden Sie weitere Sicherheitstipps.
Umgebung
Nach dem Einloggen per ssh befindet man sich in einer chroot Umgebung.
Diese Umgebung ist ein kleines Abbild des Linux-Servers, aber mit
eingeschränktem Funktionsumfang.
Folgende Verzeichnisse befinden sich im Root dieser Umgebung:
| Verzeichnis |
Zweck |
Rechte |
| /htdocs |
Enthält
alle Webseiten, am Anfang nur ein index.html mit Welcome |
Alle Rechte |
| /cgi-local |
Enthält
alle Perl und Binary CGIs, am Anfang nur sbox, errorlog.pl und
env-cgi-local |
Alle Rechte |
| /logs |
Enhält
Logfiles und die Konfiguration zur Webstatistik |
Nur lesen |
| /bin |
Systemprogramme |
Nur
soweit nötig lesen oder ausführen. |
| /dev |
Systemdevices |
| /etc |
Konfigurationsdateien
für System-Programme |
| /lib |
Bibliotheken |
| /root |
Homeverzeichnis
für Benutzer root |
| /var |
Daten
der Systemprogramme |
| /usr |
Systemprogramme
speziell für/vom Benutzer |
| /home |
Homeverzeichnis
für den oder die Benutzer |
Alle Rechte
im Unterverzeichnis |
| /tmp |
Für
temporäre Dateien |
Alle Rechte |
Programme
In der chroot Umgebung steht nur eine beschränkte Anzahl von
Programmen zur Verfügung. Diese Programme dienen vor Allem dem
Ausführen von CGI's für den Webserver.
U.a. sind diese Programme vorhanden:
- /bin/bash
- /bin/date
- /bin/gzip
- /bin/vi
- /bin/more
- /usr/bin/tail
- /usr/bin/head
- /usr/bin/less
- /usr/bin/mysql
- /usr/bin/htpasswd
- /usr/bin/perl
- /usr/lib/sendmail
Achtung: /usr/bin/sendmail ist nicht das original sendmail
programm, sondern ein Script das sich verhält wie sendmail. Die
folgenden sendmail Optionen werden unterstützt: -t, -f, -F und
-i
Neben sendmail kann man Emails auch über die Perl Bibliothek
Net::SMTP versenden.
Achtung: Häufig ist die erste Zeile eines
Perl- oder Shell-Programmes der Pfad zum Interpreter (also Perl oder
Bash). Korrigieren Sie gegebenenfalls diese Pfade laut den Angaben
oben.
Umgebungsvariabeln
Im cgi-local Verzeichnis hat es ein Script, das alle Umgebungsvariabeln
und noch einige Details wie z.B. die Benutzer und Gruppen ID angzeigt.
Das Script kann mit http://www.dein-name.ch/cgi-local/env-cgi-local/
in einem Browser aufgerufen werden.
Die folgenden Umgebungsvariablen stehen typischerweise zur Verfügung:
| Variable |
Arguments:
argc => 1, argv => /cgi-local/env-cgi-local
Localtime: Wed Dec 19 15:22:25 2001 UTC
Identity:
uid=2332, gid=65534
Current Directory: /
Environment:
SCRIPT_NAME => /cgi-local/sbox/env-cgi-local
SCRIPT_FILENAME => /cgi-local/env-cgi-local
DOCUMENT_ROOT => /htdocs
HTTP_ACCEPT => image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword,
*/*
HTTP_ACCEPT_ENCODING => gzip, deflate
HTTP_ACCEPT_LANGUAGE => de
HTTP_CONNECTION => Keep-Alive
HTTP_HOST => www.dein-name.ch
HTTP_USER_AGENT => Mozilla/4.0 (compatible; MSIE 6.0; Windows
98; Q312461)
REMOTE_ADDR => 195.65.53.88
REMOTE_PORT => 6590
SCRIPT_URI => http://www.dein-name.ch/cgi-local/env-cgi-local
SCRIPT_URL => /cgi-local/env-cgi-local
SERVER_ADMIN => nichthierher@dein-name.ch
SERVER_NAME => www.dein-name.ch
SERVER_PORT => 80
SERVER_SOFTWARE => Apache/1.3.19 (Unix) (SuSE/Linux) mod_perl/1.25
mod_ssl/2.8.3 OpenSSL/0.9.6a PHP/4.0.4pl1
UNIQUE_ID => PCCwscLRtiYAAF8O-jM
GATEWAY_INTERFACE => CGI/1.1
SERVER_PROTOCOL => HTTP/1.1
REQUEST_METHOD =>
GET QUERY_STRING =>
REQUEST_URI => /cgi-local/env-cgi-local
PATH => /bin:/usr/bin |
|