Shell (SSH)

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