Als Großrechner-Betriebssystem mit Multiuser-Fähigkeiten hatte Unix schon von jeher fest eingebaute Mechanismen, die sich auf die Kommunikation zwischen Usern bezogen. Als Beispiele seien hier kurz die folgenden Befehle beschrieben, sie funktionieren auch ohne TCP/IP:

who

Zeigt die gerade eingeloggten User nebst den verwendeten TTYs an.

write

username Schreibt dem angegebenen User eine Nachricht auf den Schirm, die write von der Standard-Eingabe erwartet. D.h., dass entweder eine Datei übergeben wird mit

# write < Datei

oder eine Nachricht wird direkt eingegeben und mit Strg-D (EOF) abgeschlossen.

wall

Schreibt eine Nachricht auf alle Bildschirme aller angemeldeter User (write all).

mesg [y | n]

Bestimmt, ob andere User auf dem Bildschirm Meldungen mit write oder wall schreiben dürfen. Ohne Parameter zeigt mesg an, was die aktuelle Einstellung ist (is y oder is n) Durch die Angabe eines y werden Meldungen zugelassen, durch ein n werden sie nicht zugelassen. Root kann auch auf Terminals schreiben, die die Zulassung sonst verweigern. Auch die E-Mail und ein „Telephon“ (talk) gab es schon, bevor überhaupt Unix-Rechner vernetzt wurden. Durch die Einführung von TCP/IP kamen jetzt noch etliche Dienste hinzu, von denen die wichtigsten hier kurz dargestellt werden sollen:

Telnet

Telnet (Terminal EmuLation over NETwork) dient dazu, Zugriff auf einen, am Netz angeschlossenen Rechner in Form einer Terminalsitzung zu liefern. Auf Unix-Systemen läuft auf der Clientseite das Programm telnet, auf der Serverseite ein Daemon namens telnetd. Der Telnet-Service liegt auf dem TCP-Port 23.

Auf Unix-Systemen wird heute das Kommando rlogin verwendet, das etwa die gleiche Funktionalität besitzt, wie Telnet, dabei aber die Unix Eigenheiten besser unterstützt. In heterogenen Umgebungen, die nicht nur aus Unix-Systemen bestehen ist Telnet aber flexibler. rlogin wird später noch Gegenstand einer genaueren Untersuchung.

Eine Telnetsitzung wird gewöhnlich durch den Client mit dem Befehl

telnet hostname

gestartet. Das Programm stellt dann eine TCP-Verbindung mit dem gewünschten Host her und kommuniziert dort mit dem Telnet-Daemon telnetd. Dieser Daemon stellt jetzt ein sogenanntes Pseudo-Terminal (oder auch Network Virtual Terminal – NVT) zur Verfügung. Dieses Terminal lässt sich gleich steuern, wie eine Unix-Konsole, so dass auch bildschirmorientierte Programme via Telnet benutzt werden können (z.B. yast, mc, …)

FTP

Das File Transfer Protokoll dient zur Übertragung von Dateien über das Netzwerk. Es nutzt die TCP-Ports 21 (Kommandokanal) und 20 (Datenkanal) um über TCP/IP Dateien von einem Rechner zum anderen zu kopieren. Auch hier gibt es unter Unix Befehle (rcp), die besser auf das System abgestimmt sind, aber auch hier gilt, in heterogenen Netzen hat FTP den Vorteil.

Wie bei Telnet, so gibt es auch hier einen Server (ftpd) und einen Client (ftp, xftp, Netscape), die miteinander kommunizieren. Früher war es üblich, mit der FTP-eigenen Kommandosprache zu arbeiten, heute gibt es graphische Frontends, die FTP wesentlich konfortabler machen.

FTP besitzt zwei Übertragungsmodi, Text und Binärformat. Heute ist es üblich, alle Übertragungen im Binärformat vorzunehmen, es entstehen so weniger Probleme beim Umgang mit Textdateien, die 8 Bit Zeichensätze verwenden (Umlaute…).

Die klassische Art, FTP zu nutzen war interaktiv, mit der FTP-eigenen Kommandosprache. Dabei war fast der Eindruck einer kleinen Terminalsitzung zu ahnen, um sich im Dateibaum zu bewegen und dort Dateien zu kopieren. Die wichtigsten Befehle von FTP sind:

open hostname

Stellt eine Verbindung zum gewünschten Host her. Dabei wird ein Passwort abgefragt.

close

Schließt eine bestehende Verbindung.

dir

Zeigt das aktuelle Inhaltsverzeichnis.

cd Verzeichnis

Wechselt in das angegebene Verzeichnis.

lcd Verzeichnis

Wechselt das Verzeichnis auf der Client Seite (local change dir).

pwd

Print Working Dir – gibt das aktuelle Verzeichnis an.

get Datei

Kopiert eine Datei vom Server zum Client.

put Datei

Kopiert eine Datei vom Client zum Server.

del Datei

Löscht eine Datei auf dem Server.

binary

Wechselt in den Binärmodus.

ascii

Wechselt in den Textmodus.

quit

Beendet FTP. Moderne FTP-Clients wie FileZilla oder xftp steuern diesen Vorgang über eine grafische Benutzeroberfläche, die den Umgang mit ftp stark vereinfacht.

Eine große Bedeutung im Internet hat anonymes FTP, das als Möglichkeit verwendet wird, um Public-Domain-Software downzuloaden.

Die Berkley r-Befehle

Die r-Befehle stellen eine ganze Familie von Befehlen dar, die alle remote, also auf anderen Rechnern ausgeführt werden können. Dabei gibt es eine zentrale Steuerung der Zugriffsberechtigung in den Dateien /etc/hosts.equiv und $HOME/.rhosts

Die Datei /etc/hosts.equiv enthält eine Liste von Hostnamen, deren Benutzer als äquivalent gelten. Das heißt, wenn ein User hans auf den Rechnern ws1 und ws2 einen Account hat, und auf beiden Rechnern der jeweils andere Rechner in der Datei /etc/hosts.equiv steht, so gilt der User hans auf beiden Systemen als die selbe Person und so kann er mit den r-Befehlen ohne Passwort auf den jeweils anderen Rechner zugreifen. Auch dort gilt er als User hans. Der root Account ist meist von dieser Gleichheit ausgenommen.

Jeder User kann in seinem Home-Verzeichnis eine Datei anlegen, die eine Liste von Rechnern und Usernamen enthält, die von ihm die Erlaubnis erhalten, r-Befehle unter seinem Namen durchzuführen. Diese Datei heißt immer .rhosts und befindet sich im Home-Verzeichnis des Users, für den sie gilt. Sie hat z.B. folgenden Inhalt:

  hal efka
  marvin efka
  ws345 fkalham

Nehmen wir an diese Datei befindet sich auf dem Rechner server01 im Home-Verzeichnis des Users efka. Das würde bedeuten, dass der User efka erlaubt, dass ein User efka der Rechner hal und marvin, sowie der User fkalham des Rechners ws345 mittels r-Befehlen unter der Identität des Users efka auf server01 Zugriff hat.

rlogin

Mit rlogin ist es möglich, sich in einem anderen Rechner wie mit Telnet einzuloggen und so auf dem Rechner zu arbeiten. Rlogin versucht eine Verbindung unter der aktuellen Identität aufzubauen (falls nicht mit -l eine andere Identität angegeben wurde), je nach Einstellung der oben genannten Dateien muß ein User ein Passwort eingeben oder nicht.

Syntax:

rlogin [-l Username] Hostname

Die -l Option ermöglicht es, einen anderen Usernamen (Logname) anzugeben, unter dessen Identität die Sitzung laufen soll.

rsh

Hier handelt es sich um eine remote Shell, also ein Shellaufruf auf einem anderen Rechner. Dabei kann dem Befehl rsh ein anderer Befehl mitgegeben werden, der dann auf dem anderen Rechner ausgeführt wird.

Auch hier gelten exakt die Regeln von rlogin, was die Zugriffsberechtigungen angeht. Die Syntax von rsh ist:

rsh [-l Username] Hostname Befehl

Der angegebene Befehl wird jetzt also auf dem anderen Rechner ausgeführt, die Standardkanäle sind aber mit dem lokalen Terminal verbunden. Das heißt insbesondere, dass sie lokal umgeleitet werden können.

Durch diese Eigenschaft ist es möglich, eine Pipe über mehrere Rechner abarbeiten zu lassen. Ein

  rsh ws1 Prog1 | rsh ws2 Prog2 | rsh ws3 Prog3 > Datei

würde also auf dem Rechner ws1 das Programm Prog1 aufrufen, dessen Ausgabe mit der Eingabe des Programms Prog2 auf ws2 verbinden usw. bis schließlich das Programm prog3 auf ws3 seine Ausgabe in die lokale Datei umleitet.

Alle Umleitungen und Pipes beziehen sich also auf den lokalen Rechner. Sollen sie auf dem remote-host gelten, so müssen sie ausgeklammert werden etwa:

  rsh ws1 'cat > remote_datei' < lokal_datei

Jetzt wirkt sich die Ausgabeumleitung von cat auf dem anderen Rechner aus weil sie in Hochkommas steht, die Eingabeumleitung meint aber immer noch den lokalen Rechner.

rcp

Hier handelt es sich um ein Kopierprogramm, das analog zum Unix-Kommando cp arbeitet. Nur können statt der Quell- und Zieldatei jeweils noch der Namen der Rechner angegeben werden, auf denen sie sich befinden.

Um einen Rechnernamen anzugeben wird dieser vor dem Dateinamen und durch einen Doppelpunkt von ihm getrennt angegeben. Dabei spielt es keine Rolle, ob die Quell- oder Zieldatei lokal oder remote sind. Es ist sogar möglich, von einem Rechner eine Datei eines zweiten Rechners auf einen dritten Rechner zu kopieren.

Beispiele (nehmen wir an unser lokaler Rechner heißt marvin):

  rcp hal:/etc/passwd /home/efka

Kopiert die Datei /etc/passwd des Rechners hal ins lokale Verzeichnis /home/efka des lokalen Rechners marvin.

  rcp test.dat hal:/home/efka

Kopiert die lokale Datei test.dat ins Verzeichnis /home/efka des Rechners hal.

  rcp hal:/etc/passwd ws345:/etc

Kopiert von marvin aus die Datei /etc/passwd des Rechners hal ins Verzeichnis /etc des Rechners ws345.

Um seine Useridentität zu wechseln, ist es möglich, dem Rechnernamen noch einen Usernamen voranzustellen, der mit einem at (@) vom Hostnamen getrennt wird.

  rcp efka@marvin:/home/efka/.profile /home/efka

Kopiert unter Verwendung der UserID efka die Datei /home/efka/.profile des Rechners hal in den lokalen Rechner ins Verzeichnis /home/efka.

Schreibe einen Kommentar