Vorlesung "UNIX"

von Prof. Jürgen Plate

7. Kommunikationsdienste

UNIX stellt eine Reihe von Diensten zur Kommunikation der Benutzer untereinander zur Verfügung. Einen Dienst haben Sie schon kennengelernt: write. Dieser Befehl hat noch einen nahen Verwandten, der jedoch meist nur vom Systemverwalter verwendet wird:

wall

Dieses Kommando liest einen Text von der Standardeingabe und sendet ihn an alle angemeldeten Benutzer. Es darf nur von root verwendet werden.

Es gibt daneben die Möglichkeit, Benutzer auch dann zu informieren, wenn sie nicht eingeloggt sind.

7.1 Das UNIX Mailsystem

Man kann aber auch Benutzer erreichen, die gerade nicht am Rechner arbeiten. Mit dem Mail-System kann elektronische Post an andere Benutzer verschickt werden. Zu diesem Zweck gibt es das Verzeichnis /var/spool/mail (früher '/usr/mail' oder '/var/mail'), in dem für jeden Benutzer, der Post erhalten hat, eine Datei existiert, deren Name mit dem Loginnamen des Benutzers übereinstimmt. Mit den Kommandos mail oder der Erweiterung mailx kann Post an andere Benutzer verschickt werden und die empfangene elektronische Post bearbeitet werden. An dieser Stelle wird die lokale Nutzung des Mail-Systems behandelt, später dann die Anwendung im Netz. Übrigens - mit 'Mail' meine ich immer die elektronische Mail von Computer zu Computer. Zunächst das primitivste aller Mail-Programme:

Post versenden mail Login-Name(n)

Versenden von Post an einen oder mehrere andere Benutzer. Bei mehreren Namen sind diese durch Leerzeichen zu trennen. Mail liest den Text von der Standardeingabe. Der Text kann nicht nur mit CTRL-D (End of File) sondern auch mit einer Zeile beendet werden, die nur einen Punkt enthält.

Das Mail-Kommando ergänzt den Brief um einen Briefkopf, in dem Absender und Absendezeitpunkt verzeichnet sind. Der Mailkopf enthält einzelne Zeilen, die sich anhand eines Schlüsselwortes identifizieren lassen ("From", "To", usw.). Zum Versand an ferne Rechner käme dann noch ein "Briefumschlag" hinzu. Normalerweise sorgt das Mail-Kommando nicht selbst für den Versand, sondern es übergibt den Brief an ein anderes, speziell für den Mailversand konzipiertes Programm.

Wir haben es hier also mit einem Frontend, dem 'Mail User Agent' (mail, mailx, elm, pine,...), und einem Backend, dem 'Mail Transport Agent' (sendmail, smail, ...), zu tun. Der MTA sorgt auch für die Weiterleitung ankommender Post an den richtigen Empfänger.

Kann der Brief nicht zugestellt werden (z. B. unbekannter Empfänger), gibt mail eine Fehlermeldung aus. Gleichzeitig erhält man den eigenen Brief, ergänzt um Zusatzinformationen per mail retour. Fehlerhafte Briefe werden auch (je nach Einstellung des MTA) an einen besonderen Pseudo-Empfänger namens 'postmaster' geschickt. Dieser Benutzer steht nicht in der Passwortdatei, sndern es ist ein sogenanntes 'Mail-Alias' für den Systemverwalter oder einen Beauftragten. An den 'postmaster' kann man sich auch wenden, wenn man Fragen im Zusammenhang mit Mail hat (z. B. wenn man einen Empfänger sucht). Beispiel für das Versenden einer Mail:

$ mail markus
Lieber Markus,

leider habe ich dich heute nicht getroffen. Ich brauche
dringend das UNIX-Buch, das ich Dir neulich geliehen habe.
Bitte leg es doch in mein Fach. Danke.

Gruss, Hans
.

Wenn der Benutzer markus mehrere Mails erhalten hat, wird er über diesen Brief nicht besonders glücklich sein, denn jeder Mailer (MUA) zeigt normalerweise erst einmal den Absender und eine Betreff-Zeile an. Letztere besitzt aber der obige Brief garnicht. Man sollte also eine "Subject:"-Zeile anbringen. Das geht recht gut mit dem verbesserten 'mail'-Kommando, 'mailx'. Hier kann man in der Kommandozeile ein "Subject" angeben:

mailx -s "UNIX-Buch" markus

....

'mail' und 'mailx' werden eigentlich nur noch verwendet, wenn nichts besseres da ist - oder wenn es darum geht in Kommandodateien (Shellskripts) Mail automatisch zu versenden, da man mit Ausgabeumleitung oder Pipe die Ausgabe eines Programms direkt an den MUA übergeben kann.

Eine Nachricht über eingegangene Post erhält der Benutzer beim Login mit der Meldung you have mail.

Er kann dann mit einem Mail-Kommando seine Post ansehen (und gleich antworten). Der Unterschied zum Senden besteht bei mail und mailx im Fehlen der Empfänger-Logins. mail arbeitet interaktiv - man kann so alle Briefe nacheinander bearbeiten. Die obige Ausgabe stützt sich auch auf das Mail-Kommando.

mail [-ehpqr] [-f datei] [-F login-name]

Bearbeiten empfangener Briefe. Die zuletzt eingegangenen Briefe werden zuerst angezeigt (LIFO).

Optionen:

-eKeine Bearbeitung, nur anzeigen, ob Post vorliegt. mail antwortet mit 0 oder 1 (=keine Post/Post).
-hNur numerierte Liste der Briefköpfe anzeigen, danach in den interaktiven Modus gehen.
-pAlle Briefe ohne interaktive Steuerung ausgeben.
-qAbbruchtaste beendet mail (im Normalfall wird damit nur die Ausgabe des aktuellen Briefs abgebrochen).
-rAnzeige der Briefe nach Alter, den ältesten zuerst (FIFO).
-f dateimail bietet die Möglichkeit, Briefe in einer benutzereigenen Datei zu speichern. Statt des Standardnamens "mbox" wird der angegebene Name verwendet.

Beim Lesen der Post im interaktiven Modus (der Aufruf von mail ohne Parameter ist die Regel) meldet sich mail mit dem Fragezeichen als Prompt. Danach können zahlreiche Kommandos gegeben werden. Die Ausgabe kann mit CTRL-S angehalten und mit CTRL-Q fortgesetzt werden. Für den Anfang reichen ein paar Tasten:

CR,n,+zum nächste Brief gehen
dlöscht den angezeigten Brief (markiert als "gelöscht")
paktuellen Brief nochmals ausgeben.
-vorherigen Brief nochmals ausgeben.
sBrief in der Datei mbox speichern. Hinter s kann auch ein Dateiname angegeben werden.
wwie s, jedoch ohne Briefkopf. m Brief weiterleiten. Hinter m muß ein Login-Name angegeben werden.
rAntworten, der Empfänger wird von mail dem Brief entnommen.
!Ausführen des hinter dem ! angegebenen UNIX-Kommandos.
qmail verlassen, als gelöscht markierte Briefe entfernen
x mail abbrechen - alles bleibt, wie es war.

Das Kommand 'mailx' zeigt beim Start zumindest eine Übersicht der eingegangenen Post (Subject und Absender) und bietet komfortablere Bearbeitung (z. B. Löschen aller Mails auf einmal oder die oben erwähnte Subject-Angabe).

Programme wie 'elm', 'pine' oder 'mutt' arbeiten interaktiv und stellen eine komfortablere Benutzer-Schnittstelle dar. Deshalb werden sie normalerweise verwendet. Eine detaillierte Beschreibung dieser Programme würde jedoch den Rahmen dieses Skripts sprengen.

Weiterleiten von Mails

Bei früheren Versionen von 'mail' konnte die Post an einen anderen Benutzer mit der Option "-F login-name" umgeleitet werden (z. B. für die Urlaubsvertretung). Vorher muß der Briefkasten vollständig geleert werden. Die Umleitung erlaubt natürlich auch das Weiterschicken an den eigenen Account auf fremden Rechnern (so laufen z. B. alle Mails an den Systemadministrator auf einem Rechner zusammen).

Bei allen sendmail- oder smail-basierten Systemen ist die Umleitung einfacher. Der Benutzer muß lediglich in seinem Home-Directory eine Datei namens ".forward" anlegen und in dieser Datei eine (korrekte) Mailadresse eintragen. Sollen mehrere Empfänger angesprochen werden, sind die Namen durch Kommas zu trennen.

Der Mechanismus geht jedoch noch weiter. Wird eine Datei mit vollständigem Pfad angegeben (die Weiterleitungszeile beginnt also mit einem '/'), dann landet die Post in der angegebenen Datei. Ein weiterer Schritt ist die Angabe einer Pipe in ein Programm oder Skript, das die Mail weiterverarbeitet (z. B. "| tuwas"). Beim Erstellen des Skripts ist zu beachten, daß keinerlei Pfade oder Voreinstellungen vorausgesetzt werden dürfen und gewisse Sicherheitsmaßnahmen zu beachten sind. Ein recht bekanntes Programm, das eingehende Mail vorsortieren oder unerwünschte Mail gleich löschen kann ist beispielsweise 'procmail'.

Mailsysteme, die auf 'smail' oder 'sendmail' basieren, bieten noch einige weitere Features. Die Datei /etc/aliases ist hier von besonderem Interesse, da sich damit einige Mail-Dienste realisieren lassen:

7.2 Verbindung zu anderen UNIX-Rechnern

Der Datenaustauschmit anderen UNIX-Rechnern kann nicht nur über lokale Netze (LAN) sondern auch über Wähl- und Standleitungen der Post erfolgen (WAN). Es stehen folgenden Möglichkeiten zur Verfügung:

7.2.1 Am Anfang war das Modem

Zunächst wurde eine Möglichkeit gesucht, z. B. die Post über eine Kette mehrerer anderer Rechner weiterzuleiten und gegebenfalls auch einmal Dateien zu transferieren. Es entstanden die Programme, die heute unter dem Oberbegriff 'uucp' zusammengefaßt sind. Die Abkürzung 'uucp' steht für 'Unix to Unix Copy'. Bei uucp handelt es sich um ein System von Programmen und Protokollen zum Offline-Datentransfer, d. h. Mail, Kopieraufträge oder die Ausführung von Kommandos wurde zunächst in Form von Auftragsdateien in einem Verzeichnis (meist /var/spool/uucp) abgelegt.

In regelmäßigen Zeitabständen wird dann der eigentliche Datentransfer gestartet (Programm 'uucio' = Unix to Unix Copy I/O). Per Modem wird Kontakt zu einem entfernten Rechner aufgenommen und wechselseitig Daten ausgetauscht. Ist alles erledigt, wird die Verbindung wieder unterbrochen.

Heute wird vieles online im Netz erledigt, aber uucp hat immer noch seine Daseinsberechtigung, z. B. zum Austausch von Mail und Usenet-News. Wenn jemand beispielsweise sowieso nur einmal am Tag seine Mail bearbeitet dann kann dies offline, d. h. lokal geschehen und der Transfer irgendwann Nachts oder im Lauf des Tages erfolgen. Uucp-Software gibt es auch für andere Betriebssysteme (z. B. das Paket 'Waffle' für DOS) und so ist auch ein platformübergreifender Datenverkehr möglich. Außerdem kommt man so auch in Gegenden an seine Mail, in denen nur eine Telefonverbindung verfügbar ist. Das Thema wird im Kapitel über das Internet nochmals aufgegriffen. Um erreichbar und von anderen Rechnern unterscheidbar zu sein, braucht jedes System einen eindeutigen Knotennamen. Mit deren Hilfe gab es dann auch die erste Möglichkeit, Benutzer auf anderen Rechnern zu adressieren.

uname [-amnrsv]

Ausgabe des Knotennamens und weiterer Info. Wichtig sind:
s System Name des Rechners
n Knotenname des Rechners

Das Versenden von Post an ein anderes System erfolgte anfangs durch Angabe von Knotennahmen und Loginnamen des Empfängers, getrennt durch ein Ausrufezeichen, z. B.:

mailx -s "Konferenz an 12.7." werk2!hans

Die übrige Bedienung von mail erfolgt dann wie schon beschrieben. Es ist auch möglich, die Post über mehrere Knoten zu leiten, wenn zwischen dem eigenen Rechner und den Zielrechner keine direkte Verbindung besteht. Angenommen alle Rechner eines Unternehmens sind pr uucp gekoppelt, dann könnte der mail-Aufruf so aussehen:

mailx -s "Konferenz am 12.7." werk1!werk2!werk4!klaus

Nachteil dieser Wegbeschreibung, die wegen der Ausrufezeichen als 'Bang-Path' bezeichnet wird, ist die Festlegung ebe gerade auf einen Weg. Ist der Rechner "werk2" gerade nicht betriebsbereit, bleibt die Post hängen. Deshalb ist man schon sehr bald zu einer wegeunabhängigen Adressierung übergegangen, der an anderer Stelle beschriebenen Domain-Adressierung, die heute verwendet wird. Manchmal findet man noch Mischformen, bei denen sozusagen die letzte Wegstrecke noch als Bangpath notiert ist. Es gibt eine ganze Reihe von uucp-Kommandos:

uucp [Optionen] Quelldatei(en) Zieldatei

(Unix to Unix Copy) Kopieren von Dateien zwischen zwei Unix-Systemen. Für Quell- und Zeildatei kann dabei folgendes angegeben werden: Der Pfadname kann angegeben werden als:
  • ~Loginname[Pfadname]
    (absoluter Pfad) - uucp setzt für die Tilde ~ dann den Pfad zum Home-Directory des Benutzers ein.
  • ~/Pfadname
    uucp setzt für die Tilde ~ dem Pfad /usr/spool/uucppublic/ ein und hängt den angegebenen Pfad an.

    Von den Optionen werden nur einige vorgestellt:
    -jgibt die Auftragskennung aus
    -mSendet an der Aufrufer einen mail-Mitteilung über den Erfolg der Kopieraktion
    -nEmpfänger-Loginname Der Empfänger wird per mail über den Kopiervorgang informiert.

    uux [-jmu] Kommandostring

    (Unix to Unix command eXecution) Ermöglicht die Ausführung eines Kommandos auf einem anderen UNIX-Rechner. Die Dateien des Kommandos können auf eine ausgewählten Maschinen liegen. Der Kommandostring ist ähnlich aufgebaut wie bei uucp:

    Knotenname[~Loginname]Kommando

    Mit "uux Konotenname!login" kann man sich auf dem fremden Rechner anmelden, als ob man an einem seiner Terminals wäre. Dazu wird oft aber auch das folgende Kommando angeboten:

    cu [Optionen] Knotenname

    (Call Unix) Einloggen am Rechner mit dem angegebenen Knotennanmen. Es erfolgt dann ganz normal die Login-Aufforderung des entfernten Rechners - sozusagen die Minimalform eines Terminalprogramms für das Modem. cu wird heute fast nur noch verwendet, um angeschlossene Modems zu testen, Mit dem Parameter "-l" kann man eine Schnittstelle direkt ansprechen, z. B. cu -l /dev/ttyS0.

    Die uu-Kommandogruppe kennt noch eine Reihe weiterer Kommandos für den Verkehr zwischen UNIX-Rechnern - siehe weiterführende Literatur. uucp-Verbindungen sind jedoch in jedem Fall für Mail, Netnews und gelegentliche Dateitransfers ausreichend. Sehr viel komfortabler wird es jedoch, wenn über Netzwerkkabel, Standleitung, Modemverbindung oder sogar Satellitenfunk die einzelnen Systeme direkt vernetzt sind.

    7.2.2 Die Internet-Protokollfamilie

    Am häufigsten eingesetzt wird das Internet-Protokoll = TCP/IP (Transmission Control Protocol/Internet Protocol). Über TCP/IP lassen sich auch unterschiedliche Rechner miteinander vernetzen. Es deckt die untersten 4 Schichten des OSI-Modells ab (Bitübertragung, Datensicherung, Vermittlung, Transport). Einige Funktionen reichen jedoch bis zur Applikationsschicht hinauf. Grundsätzlich können TCP/IP-Verbindungen über die unterschiedlichsten Medien erfolgen. Durch die Verbindung zweier Netze entsteht so ein größeres Netz (Inter-Net). Dies hat zu einer weltweiten Vernetzung von Rechnern mit TCP/IP geführt, die unter dem Namen "Internet" läuft.

    Dieses Kapitel geht davon aus, dass Sie Ihren Linux-Rechner an ein schon bestehendes lokales Netzwerk anschließen möchten. Für die Verbindung zum Internet von zuhause aus empfehle ich generell die Anschaffung eines passenden Routers (ISDN, DSL etc.). Derartige Geräte sind inzwischen so preiswert geworden, dass die Kosten den Gewinn an Bequemlichkeit und vor allem Sicherheit bei weitem aufwiegen. Der Router wird gemäß der Hersteller- und Provideramgaben konfiguriert und ermöglicht dann jedem Rechner im Netz den Internetzugang. Gleichzeitig schützt er das Netz durch seine Firewall-Funktionen.

    Die Installation und Initialisierung von TCP/IP komplett zu beschreiben, würde die Grenzen dieses Skripts sicherlich sprengen. Eine solche Beschreibung ist auch ziemlich überflüssig, da nahezu jeder Hersteller eigene Installationsroutinen zur Verfügung stellt. Leider sind diese unter Unix nicht einheitlich, jedoch läuft die Einrichtung von TCP/IP zumeist schon während der Installation des Betriebssystems ab. Aus diesem Grund beschränke ich mich hier auf eine kurze Zusammenfassung der wichtigsten Punkte und auf die allgemein wichtigen Kommandos und Konfigurationsdateien.

    Für weitergehende Information zur Netzwerktechnik sei auf das Skript Praktische Einführung in Computernetze verwiesen. Mehr über das Internet finden Sie im Skript Internet-Einführung.

    Was braucht man eigentlich alles, um einen Linux-Rechner ans Netz zu bringen? Eine Netzwerkkarte - klar! Diese wird in der Regel schon bei der Installation erkannt und das passende Kernel-Modul eingebunden. Feststellen lässt sich das mit dem Kommando dmesg | more. Dann brauchen Sie noch eine IP-Adresse, die Netzmaske, die Netzwerkadresse sowie Broadcast- und Gateway-Adresse.

    Beim derzeit aktuellen IP-Protokoll V4 ist jede Netzwerk-Adresse eine 32-stellige Binärzahl. Weil aber nun 32 Nullen und Einsen etwas unübersichtlich sind, hat man daraus einfach vier Gruppen zu je acht Stellen gemacht und schreibt diese vier Gruppen als Dezimalzahlen auf. Nachdem bei jeder Zahl Werte zwischen 0 und 255 auftreten können, schrebt man noch einen Punkt zwischen die Zahlen. Heraus kommt dabei z. B. 105.22.234.1 (was besser lesbar ist als binär 01101001000101101110101000000001).

    Rechner in lokalen Netzen sind für das Internet im Regelfall unsichtbar. Das bedeutet aber nicht, dass die Rechner keine Internetfunktionen nutzen können. Aber diese Rechner sind vor unkontrollierten Zugriffen aus dem Internet geschützt. Rechner, die weltweit kommunizieren sollen, bekommen vom jeweiligen Internet Service Provider eine IP-Adresse zugeteilt. Im LAN ohne direkte Internet-Verbindung braucht man aber nur IP-Adressen, die im jeweiligen Netz eindeutig sein müssen, nicht aber weltweit. Es wurden daher im IP-Zahlenraum drei Bereiche für lokale Netzwerke reserviert, die man jederzeit verwenden darf:

    10.0.0.0 - 10.255.255.255 (A-Netz)
    172.16.0.0 - 172.31.255.255 (B-Netze)
    192.168.0.0 - 192.168.255.255 (C-Netze)

    Der erste Bereich ermöglicht theoretisch ein Netz mit 16 Millionen Rechnern - das reicht auch für sehr große Firmen. Beim zweiten Bereich handelt es sich um 16 Teilnetze mit je ca. 65 000 Adressen (z. B. 172.23.0.0 bis 172.23.255.255). Der dritte Bereich besteht aus 256 kleinen Teilnetzen mit jeweils 254 Adressen. Ganz egal, in welchem Teilnetz Sie Ihr lokales Netz bilden - es ist sichergestellt, dass es zu keinen Adresskonflikten mit richtigen IP-Internetadressen kommt.

    Meist wollen Sie freilich auch innerhalb des lokalen Netzes Internetfunktionen nutzen (beispielsweise im Web surfen). Um dies zu ermöglichen, muss innerhalb des lokalen Netzwerks ein Rechner bzw. der oben erwähnte Router als sogenanntes Gateway zum Internet konfiguriert werden. Dieser Rechner/Router stellt die Verbindung zum Internet her (über DSL, ISDN, Modem etc.) und leitet alle Internetanforderungen des lokalen Netzes weiter. Das Gateway hat außerdem die Aufgabe, die lokalen IP-Adressen durch eine weltweit gültige IP-Adresse zu ersetzen. Sie suchen sich also ein (Teil-)Netz aus dem oben angegebenen Nummernkreis und vergeben daraus die Rechner-IP-Adressen.

    Nun kommen Netzmaske, Netzwerk- und Broadcast-Adresse ins Spiel. Die Ausdehnung eines lokalen Netzes wird durch die Netzmaske eingeschränkt. Dabei handelt es sich abermals um vierteilige Zifferngruppen, die intern als Bitmuster für IP-Adressen verwendet werden. Die Netzmaske legt fest, welcher Teil der IP-Adresse die Netzwerkadresse ist und welcher die Rechneradresse innerhalb des Netzes (das sorgt nicht nur dafür, dass mehrere lokale IP-Netze dasselbe Kabel verwenden können, ohne sich gegenseitig zu stören, sondern es macht auch den Routern das Leben leichter. Die Netzmaske hat bei allen Stellen, welche die Netzwerkadresse repräsentieren, eine 1 stehen und dahinter lauter Nullen (z. B.: 11111111111111110000000000000000 entspricht 255.255.0.0). Die Netzwerkadresse hat an den Stellen, welche den Rechner (Host) repräsentieren, Nullen stehen. Die Broadcast-Adresse (Broadcast = Rundruf, an alle) hat beim Rechneranteil lauter Einsen. Dazu ein Beispiel:

    Wenn das lokale Netz alle Nummern 192.168.12.x umfasst, lautet die dazugehörige Netzmaske 255.255.255.0, die Netzwerkadresse 192.168.12.0 und die Broadcast-Adresse 192.168.12.255. (Bei manchen Konfigurationsprogrammen brauchen Sie keine Netzwerkadresse anzugeben, da sich diese aus den beiden anderen Adressen ergibt.) Das resultierende Netzwerk wird jetzt mit 192.168.12.0/255.255.255.0 oder kurz mit 192.168.12.0/24 bezeichnet. (Die Kurzschreibweise gibt die Anzahl der binären Einser der Netzmaske an.) Zwei Rechner mit den IP-Adressen 192.168.12.71 und 192.168.12.72 können sich in diesem Netzwerk also direkt miteinander verständigen (weil die IP-Adressen im Bereich der Netzmaske übereinstimmen). Die maximale Anzahl von Rechnern, die gleichzeitig in diesem Netz kommunizieren können, beträgt 254 (.1 bis .254) - die Nummern .0 und .255 sind ja reserviert.

    Ein Gateway ist ein Router oder Rechner, der an der Schnittstelle zwischen zwei Netzen steht (oft zwischen dem lokalen Netz und dem Internet). Damit Ihr Unix/Linux-Rechner in einem lokalen Netz auf das Internet zugreifen kann, muss bei der Konfiguration die Gateway-Adresse angegeben werden. Die Gateway-Adresse bezeichnet also einen Rechner, der ebenfalls im lokalen Netz steht - z. B. mit der IP-Adresse 192.168.12.254. Dieser Rechner hat insofern eine Sonderstellung, als er mit dem Internet in Verbindung steht. Dort hat er eine (vom Provider zugeteilte) gültige IP-Adresse. Der Internetverkehr des gesamten lokalen Netzwerks erfolgt über den Gateway-Rechner, der jeweils die interne IP-Adresse eines jeden Datenpakets in die "offizielle" umsetzt und beim Antwortpaket umgekehrt verfährt (NAT, Network Address Translation).

    Ein Nameserver ist ein Programm, das Rechnernamen bzw. Internetadressen (z. B. www.netzmafia.de) in IP-Adressen übersetzt. Bei kleinen Netzen erfolgt die Zuordnung zwischen Namen und Nummern oft über eine Tabelle (Datei /etc/hosts). Im Internet übernehmen Rechner mit entsprechenden Datenbanken diese Aufgabe. Statt des Begriffs Nameserver ist auch die Abkürzung DNS für Domain Name Server oder Domain Name Services üblich. Wenn Sie in einem Webbrowser die Site www.netzmafia.de ansehen möchten, wird daher als Erstes der Nameserver des Providers kontaktiert, um die IP-Adresse des Netzmafia-Webservers herauszufinden. Erst nachdem das gelungen ist, wird eine Verbindung mit dieser IP-Adresse hergestellt.

    Die Abkürzung DHCP steht für Dynamic Host Configuration Protocol. DHCP wird oft in lokalen Netzwerken verwendet, um die Administration des Netzwerks zu zentralisieren. Anstatt bei jedem Rechner getrennt die IP-Adresse, das Gateway, den Nameserver etc. einzustellen, wird der Router oder ein Rechner als DHCP-Server konfiguriert. Alle anderen Rechner im lokalen Netzwerk nehmen beim Systemstart Kontakt mit dem DHCP-Server auf und fragen diesen, welche Adressen und Einstellungen sie verwenden sollen. Damit reduziert sich die Client-Konfiguration auf ein Minimum.

    Eine besondere Rolle spielt noch das Loopback-Interface: Diese Schnittstelle ermöglicht die Verwendung des Netzwerkprotokolls für lokale Dienste, also zur Kommunikation innerhalb des Rechners. Das klingt vielleicht widersinnig, ist aber für viele elementare Linux-Kommandos erforderlich. Der Grund: Manche Kommandos bauen ihre Kommunikation auf dem Netzwerkprotokoll auf, ganz egal, ob die Daten lokal auf dem Rechner bleiben oder über ein Netz auf einem fremden Rechner weiterverarbeitet werden. Ein Beispiel dafür ist der Druckerdämon lpd, der das Spooling für den Drucker übernimmt und sowohl lokal als auch von fremden Rechnern genutzt werden kann. Auch das X-Protokoll für die grafische Bedineroberfläche arbeitet netzwerkbasiert.

    Als IP-Adresse für das Loopback-Interface ist immer 127.0.0.1 vorgesehen. Alle Distributionen kümmern sich automatisch um die Konfiguration des Loopback-Interface, auch wenn ansonsten keine Netzwerkkonfiguration durchgeführt wird. Dieser Adresse ist in der Regel auch der Name localhost zugeordnet.

    Für die Konfiguration des Netzwerks eines Unix/Linux-Rechers gibt es mehrere Möglichkeiten:

    Im Folgenden soll die letzte Möglichkeit näher betrachtet werden, weil siwe die Interessanteste ist. Die beschreibenen Kommandos werden in der Regel von einem Start-Script in /etc/init.d aufgerufen. Die Kenntnis der folgenden Kommandos ist jedoch trotzdem nützlich, beispielsweise, wenn sie temporär eine Netzwerk-Konfiguration ausprobieren möchten, ohne die Werte zu speichern.

    Schnittstellenkonfiguration mit dem ifconfig-Kommando

    Das Starten von TCP/IP erfolgt (unter Unix) durch Shell-Skripte, die je nach Unix-Derivat anders heißen und sich an ganz unterschiedlichen Stellen des jeweiligen Dateisystems befinden können. So unterschiedlich die Shell-Skripte auch sein mögen, die Initialisierung erfolgt in jedem Falle durch das ifconfig-Kommando. Hier wird auch die Initialisierung der Netzwerkschnittstellen vorgenommen. Dabei gibt es folgende Arten von Schnittstellen: Initialisiert wird das Loopback-Interface durch das Kommando:

    ifconfig lo0 127.0.0.1

    Broadcast-Interfaces sind die üblichen Schnittstellen zu lokalen Netzwerken, über die mehrere Systeme erreichbar sind, und über die Broadcasts, also Nachrichten an alle, verschickt werden. Es handelt sich dabei um Schnittstellen zu Ethernet und TokenRing. Neben der Internet-Adresse werden bei der Initiatisierung des Broadcast-Interfaces auch die Netzmaske und die Broadcast-Adresse angegeben:

    ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255

    Neben den Broadcast-Schnittstellen gibt es noch die sogenannten Point-to-Point-Schnittstellen. Sie sind dadurch gekennzeichnet, daß man nur über sie ein anderes System erreichen kann. Beispiele sind SLIP (Serial Line IP) und das Point-to-Point-Protokoll PPP, die Verbindungen über die serielle Schnittstelle oder per Modem/ISDN-Adapter WAN-Verbindungen zulassen. Die Initialisierung einer Point-to-Point-Schnittstelle hat z.B. die folgende Form:

    ifconfig ppp0 192.168.1.1 192.168.1.2 netmask 255.255.255.240

    So eine PPP-Verbindung bildet ein eigenständiges Netzwerk. Sollen mehrere Verbindungen kombiniert werden, so muß eine Unterteilung in Subnetze erfolgen. Das heißt, daß eine entsprechende Netzmaske gewählt werden muß. Wird als Argument für das ifconfig-Kommando nur der Name der Schnittstelle angegeben, so bezieht sich das auf die aktuelle Konfiguration der Schnittstelle, die dann ausgegeben wird:

    eth0      Link encap:10Mbps Ethernet  HWaddr 00:20:18:03:0B:F5
              inet addr:10.10.10.4  Bcast:10.10.10.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0
              TX packets:0 errors:0 dropped:0 overruns:0
              Interrupt:11 Base address:0x340
    

    Nun kann man mit dem route-Kommando überprüfen, ob auch die Routen korrekt gesetzt wurden (ggf. muss man das mit diesem Kommando nachholen), zum Beispiel:

    # route -n
    
    Kernel IP routing table
    Destination  Gateway      Genmask       Flags Metric Ref Use Iface
    127.0.0.0    0.0.0.0      255.0.0.0     U     0      0   0   lo
    192.168.1.0  0.0.0.0      255.255.255.0 U     0      0   0   eth0
    0.0.0.0      192.168.0.10 0.0.0.0       UG    0      0   0   eth0
    
    Die ersten beiden Zeilen beschreiben das Loopback-Interface und die Netzwerkkarte, die letzte Zeile die ROute ins INternet (Gateway).

    Systemnamen und Internet-Adressen: /etc/hosts

    In dieser Datei werden die Systeme des Netzwerks mit ihrem Systemnamen und die dazu gehörenden Internet-Adressen aufgelistet. Die Einträge in die Datei /etc/hosts haben die folgende allgemeine Form:

    Internet-Adresse Name Aliase ...

    Dazu ein Beispiel:

    127.0.0.1   localhost
    192.168.0.1 sun1-lbs micky
    192.168.0.2 sun2-lbs minnie
    192.168.0.3 sun3-lbs goofy
    192.168.0.4 sun4-lbs donald
    192.168.0.5 sun5-lbs dagobert
    192.168.0.6 sun6-lbs daisy
    192.168.0.7 sun7-lbs tick
    192.168.0.8 sun8-lbs trick
    192.168.0.9 sun9-lbs track
    

    Nach der Internet-Adresse wird der "offizielle" Name des Systems angegeben, gefolgt von Alias-Namen für dieses System. Wird als Argument für ein Netzwerk-Kommando ein Name angegeben, so wird in dieser Datei die zugehörige Internet-Adresse ermittelt. Erst über die Adresse wird eine Verbindung zum Zielsystem aufgebaut. Die Datei /etc/hosts wird jedoch auch für den umgekehrten Vorgang benutzt. Mit einem IP-Datagram wird nur die Internet-Adresse des sendenden Systems mitgeschickt. Soll nun der zugehörige Name ermittelt werden, so geschieht dies ebenfalls mittels dieser Datei. Das Resultat ist jedoch immer der "offizielle" Name des Systems. Deshalb ist darauf zu achten, daß stets dieser Name verwendet werden muß, wenn ein Rechnername in weiteren Konfigurationsdateien eingetragen wird.

    Natürlich reicht das System mit /etc/hosts höchstens für ein lokales Kleinstnetz mit einer handvoll Rechner aus, denn auf jedem Rechner muß die /etc/hosts auf dem aktuellen Stand gehalten werden. Diesem Problem sahen sich auch bald die Väter des Internet gegenüber und so wurde die größte weltweit verteilte Datenbank, das Domain Name System (DNS) erfunden. Es gibt eine Software, welche die Namensdatenbank verwaltet und auf Anfrage zu einem Rechnernanen die IP-Adresse liefert oder umgekehrt. Das Programm ist unter UNIX in der Regel BIND (Berkely Internet Name Daemon). Es läuft als "Nameserver" auf normalerweise mindestens zwei Rechnern einer Domain. Mehr darüber finden Sie im DNS-Kapitel des Internet-Skripts. Für den Rechner, der DNS nutzen will gibt es zwei Dateien, /etc/hosts.conf und /etc/resolv.conf, die festlegen, wie der Nameserver genutzt wird. In /etc/hosts.conf wird festgelegt, wie die Namenssuche erfolgen soll:

    order hosts bind
    multi on
    
    Mit order hosts bind wird festgelegt, daß zuerst in der lokalten Datenbank /etc/hosts gesucht werden soll und erst dann eine Nameserveranfrage an einen fernen Rechner gestartet wird. Die Datei /etc/resolv.conf enthält Infos über den Nameserver:
    search mydomain.net
    nameserver 10.10.10.4
    nameserver 10.10.10.1
    

    Wie die Datei /etc/hosts enthält auch die Datei /etc/networks Adressen und Namen. Diesmal sind es allerdings Namen für Netzwerke. Die Funktion dieser Datei ist durchaus mit der /etc/hosts vergleichbar: Netzwerk-Namen werden in Netzwerk-Adressen umgesetzt und umgekehrt. Die allgemeine Form eines Eintrags sieht dann so aus:

    Netzwerk-Name Netzwerk-Adresse Netzwerk-Aliase ...

    Zum Beispiel:

    loopback  127
    admin-net 192.168.1
    dev-net   192.168.2
    

    Eine weitere Datei ist für die Zuordnung der Portnummern zu den einzelnen Diensten wie Telnet, FTP, WWW, Mail, usw. zuständig. In dieser Datei, /etc/services, werden der Name des Dienstes, die Portnummer, das Transportprotokoll (UDP oder TCP) und Service-Aliase angegeben. Die allgemeine Form eines Eintrags in /etc/services hat die Form:

    Service-Name Portnummer/Protokoll Service-Aliases

    Wichtig: Hier sind nur Portnummern für Server spezifiziert. Client-Programme bekommen beim Verbindungsaufbau eine beliebige, freie Portnummer zugewiesen. So kann der Server wieder auf der Standard-Portnummer aus /etc/services auf einen weiteren Verbindungswunsch warten. Die spezifizierten Portnummern sind auf allen Rechnern im Netz gleich. Die Server-Programme entnehmen dieser Datei, auf welchen Port sie zugreifen müssen. Die Client-Programme finden hier die entsprechenden Portnummern ihrer Server. In /etc/services werden die Portnummern für TCP- und UDP-Dienste spezifiziert. Die Portnummern für diese beiden Transport-Protokolle sind völlig unabhängig voneinander. Trotzdem ist es im allgemeinen üblich, gleiche Portnummern für beide Protokolle zu benutzen, wenn ein Dienst über beide Transportprotokolle verfügbar ist.

    Ein Ausschnitt aus /etc/services:

    tcpmux            1/tcp                              # TCP port service multiplexer
    echo              7/tcp
    echo              7/udp
    discard           9/tcp          sink null
    discard           9/udp          sink null
    systat           11/tcp          users
    daytime          13/tcp
    daytime          13/udp
    netstat          15/tcp
    qotd             17/tcp          quote
    msp              18/tcp                      # message send protocol
    msp              18/udp                      # message send protocol
    chargen          19/tcp          ttytst source
    chargen          19/udp          ttytst source
    ftp              21/tcp
    #                22 - unassigned
    telnet           23/tcp
    #                24 - private
    smtp             25/tcp          mail
    #                26 - unassigned
    time             37/tcp          timserver
    time             37/udp          timserver
    rlp              39/udp          resource    # resource location
    nameserver       42/tcp          name        # IEN 116
    whois            43/tcp          nicname
    domain           53/tcp          nameserver  # name-domain server
    domain           53/udp          nameserver
    mtp              57/tcp                      # deprecated
    bootps           67/tcp                      # BOOTP server
    bootps           67/udp
    bootpc           68/tcp                      # BOOTP client
    bootpc           68/udp
    tftp             69/udp
    gopher           70/tcp                      # Internet Gopher
    gopher           70/udp
    rje              77/tcp          netrjs
    finger           79/tcp
    www              80/tcp          http         # WorldWideWeb HTTP
    www              80/udp                       # HyperText Transfer Protocol
    link             87/tcp          ttylink
    kerberos         88/tcp          krb5         # Kerberos v5
    kerberos         88/udp
    supdup           95/tcp
    #                100 - reserved
    hostnames        101/tcp          hostname    # usually from sri-nic
    iso-tsap         102/tcp          tsap        # part of ISODE.
    csnet-ns         105/tcp          cso-ns      # also used by CSO name server
    csnet-ns         105/udp          cso-ns
    rtelnet          107/tcp                      # Remote Telnet
    rtelnet          107/udp
    pop2             109/tcp          postoffice  # POP version 2
    pop2             109/udp
    pop3             110/tcp                      # POP version 3
    pop3             110/udp
    sunrpc           111/tcp
    sunrpc           111/udp
    auth             113/tcp          tap ident authentication
    sftp             115/tcp
    uucp-path        117/tcp
    nntp             119/tcp          readnews untp # USENET News Transfer Protocol
    ntp              123/tcp
    ntp              123/udp                      # Network Time Protocol
    netbios-ns       137/tcp                      # NETBIOS Name Service
    netbios-ns       137/udp
    netbios-dgm      138/tcp                      # NETBIOS Datagram Service
    netbios-dgm      138/udp
    netbios-ssn      139/tcp                      # NETBIOS session service
    netbios-ssn      139/udp
    imap2            143/tcp                      # Interim Mail Access Proto v2
    imap2            143/udp
    .....
    

    Es gibt bei UNIX zwei Möglichkeiten, einen Netzdienst anzubieten:

    Die erste Möglichkeit wird man bei stark frequentierten Diensten verwenden (z. B. http, smtp), da hier gleich der Server angesprochenwerden kann und nicht erst gestartet werden muß. Bei allen anderen Diensten nimmt man in der Regel den inetd. Dieser Prozeß hat einen Tabelle, in der steht, für welchen Port welches Programm zu starten ist - also eine recht flexible Angelegenheit. Will man beispielsweise einen neuen FTP-Server (etwa wu-ftpd statt des Standard-ftpd) einsetzen, so genügt das Ändern der Tabelle in der Datei /etc/inetd.conf und ein Restart des inetd (Kommando: telinit q. Ja, ohne "-" vor dem "q"). Man kann durch Auskommentieren von Zeilen in der inetd.conf auch nicht benötigte Netzdienste sperren und so den Rechner gegen Eindringlinge sicherer machen. Hier ein Auszug aus der Datei:
    # See "man 8 inetd" for more information.
    #
    # If you make changes to this file, either reboot your machine or send the
    # inetd a HUP signal.
    #
    #       
    #
    # These are standard services.
    #
    ftp         stream     tcp     nowait     root     /usr/sbin/wu.ftpd     wu.ftpd -a
    # ftp       stream     tcp     nowait     root     /usr/sbin/in.ftpd     in.ftpd
    telnet      stream     tcp     nowait     root     /usr/sbin/in.telnetd  in.telnetd
    # nntp      stream     tcp     nowait     root     tcpd     in.nntpd
    smtp        stream     tcp     nowait     root     /usr/sbin/sendmail    sendmail -v
    printer     stream     tcp     nowait     root     /usr/bin/lpd          lpd -i
    #
    # Shell, login, exec and talk are BSD protocols.
    #
    shell       stream     tcp     nowait     root     /usr/sbin/in.rshd     in.rshd -L
    login       stream     tcp     nowait     root     /usr/sbin/in.rlogind  in.rlogind
    exec        stream     tcp     nowait     root     /usr/sbin/in.rexecd   in.rexecd
    # talk      dgram      udp     wait       root     /usr/sbin/in.talkd    in.talkd
    # ntalk     dgram      udp     wait       root     /usr/sbin/in.talkd    in.talkd
    #
    # Kerberos authenticated services
    #
    # klogin    stream     tcp     nowait     root     /usr/sbin/tcpd     rlogind -k
    # eklogin   stream     tcp     nowait     root     /usr/sbin/tcpd     rlogind -k -x
    # kshell    stream     tcp     nowait     root     /usr/sbin/tcpd     rshd -k
    #
    # Services run ONLY on the Kerberos server
    #
    # krbupdate stream     tcp     nowait     root     /usr/sbin/tcpd     registerd
    # kpasswd   stream     tcp     nowait     root     /usr/sbin/tcpd     kpasswdd
    #
    # Pop et al
    #
    # pop2      stream     tcp     nowait     root     /usr/sbin/in.pop2d in.pop2d
    pop3        stream     tcp     nowait     root     /usr/sbin/popper   popper -s
    #
    # Comsat - has to do with mail.
    #
    # comsat    dgram     udp     wait     root        /usr/sbin/tcpd     in.comsat
    #
    # The Internet UUCP service.
    #
    # uucp      stream     tcp     nowait     uucp     /usr/sbin/tcpd     /usr/lib/uucp/uucico     -l
    #
    # Tftp service is provided primarily for booting.  Most sites
    # run this only on machines acting as "boot servers."
    #
    # tftp      dgram     udp     wait     nobody      /usr/sbin/tcpd     in.tftpd
    # bootps    dgram     udp     wait     root        /usr/sbin/bootpd   bootpd
    #
    # Finger, systat and netstat give out user information which may be
    # valuable to potential "system crackers."  Many sites choose to disable
    # some or all of these services to improve security.
    # Try "telnet localhost systat" and "telnet localhost netstat" to see that
    # information yourself!
    #
    finger      stream     tcp     nowait     nobody   /usr/sbin/in.fingerd    in.fingerd   -w
    systat      stream     tcp     nowait     nobody   /bin/ps                 /bin/ps      -auwwx
    netstat     stream     tcp     nowait     root     /bin/netstat            /bin/netstat -a
    ident       stream     tcp     nowait     root     /usr/sbin/in.identd     in.identd
    #
    # These are to start Samba, an smb server that can export filesystems to
    # Pathworks, Lanmanager for DOS, Windows for Workgroups, Windows95, Lanmanager
    # for Windows, Lanmanager for OS/2, Windows NT, etc.  Lanmanager for dos is
    # available via ftp from ftp.microsoft.com in bussys/MSclient/dos/. Please read
    # the licensing stuff before downloading. Use the TCP/IP option in the client.
    # Add your server to the \etc\lmhosts (or equivalent) file on the client.
    netbios-ssn   stream   tcp     nowait     root    /usr/bin/smbd    smbd
    netbios-ns    dgram    udp     wait       root    /usr/bin/nmbd    nmbd
    # End.
    

    Als letzte der Konfigurations-Dateien soll die /etc/protocols behandelt werden. Hier werden die über IP arbeitenden Protokolle aufgelistet. Die allgemeine Form eines Eintrags hat die Form:

    Protokoll-Name Protokoll-Nummer Protokoll-Aliase ...

    Zum Beispiel:

    ip   0  IP     # internet protocol, pseudo protocol number
    icmp 1  ICMP   # internet control message protocol
    igmp 2  IGMP   # internet group multicast protocol
    ggp  3  GGP    # gateway-gateway protocol
    tcp  6  TCP    # transmission control protocol
    egp  8  EGP    # Exterior-Gateway Protocol
    PUP 12  PUP    # PARC universal packet protocol
    udp 17  UDP    # user datagram protocol
    idp     22     IDP        # WhatsThis?
    hello 63 HELLO # HELLO Routing Protocol
    raw     255     RAW        # RAW IP interface
    

    Die Protokoll-Nummer wird im Header des Internet-Protokolls angegeben.

    7.2.3 Netzwerk-Kommandos

    Vorab sollen ganz kurz einige Remote-Kommandos besprochen werden. Aus Berkley-UNIX in die Release 4 übernommen wurde die Familie der sogenannten 'R-Kommandos' (weil sie alle mit "r" beginnen). Sie erlauben komfortable Kommunikation zwischen UNIX-Rechnern auf der Basis von TCP/IP.

    Jeder Rechner im Netz (= Host) besitzt eine Datei /etc/hosts.equiv, in der "vertrauenswürdige" Rechner eingetragen sind. Wollen sich Benutzer von einem dieser Rechner auf dem lokalen Computer einloggen, brauchen sie kein Passwort für den Rechner-Rechner-Übergang (wobei "Benutzer" auch Dämonprozesse sein können → automatischer Datenaustausch möglich). Enthält die Datei nur eine Zeile mit einem '+'-Zeichen, werden alle angeschlossenen Rechner akzeptiert. Gibt es keine "vertrauenswürdigen" Rechner, ist jeweils die Eingabe des Login-Passwortes nötig. Außerdem funktioniert das Ganze nur, wenn man auf Quell-und Zielrechner die gleiche Benutzerkennung hat.

    Inzwischen veraltet sind die sogenannten R-Kommandos von Unix:

    die R-Kommandos werden inzwischen von der 'Secure Shell' (ssh) und dem 'Secure Copy' (scp) abgelöst. Weitere Netzwerkprogramme, die man zum Fern-Login braucht, sind 'telnet' und 'ftp', wobei telnet hautsächlich zum Testen im lokalen Netz dient. An dieser Stelle gibt es eine kurze Bedienungsanleitung, im Internet-Skript werden die Hintergründe erklärt.

    Telnet

    telnet eignet sich besonders für die Kommunikation von UNIX-Rechnern mit Computern, die andere Betriebssysteme verwenden. Um eine Telnet-Sitzung zu starten wird telnet aufgerufen.

    telnet host

    Telnet (Teletype Network) unterscheidet zwei Modi, den Kommando- und den Eingabemodus. Der Kommandomodus ist aktiv, wenn man Telnet ohne Argument aufruft. Am Bildschirm erscheint der Prompt "Telnet>". Wird Telnet mit Argument aufgerufen, so wird ein "open"-Kommando mit dem angegebenen Argument ausgeführt und man befindet sich im Eingabemodus, bei dem zwei Übertragungsmodi unterschieden werden:

    Welcher der beiden Modi aktiviert wird, hängt vom Zielsystem ab und ist mit dem Kommando status abfragbar. Vom Eingabe- in den Kommandomodus kann mit dem Telnet-Fluchtsymbol (Voreinstellung "^]" (Ctrl-])) gewechselt werden. Nur im Kommandomodus können die unten beschriebenen Kommandos eingegeben werden. Hat man eine bestehende Verbindung und wechselt in den Kommandomodus, so fällt man automatisch nach Abarbeitung eines Kommandos wieder in den Eingabemodus zurück.

    Falls der localchars-Schalter auf EIN steht (das ist die Grundeinstellung im Zeilen-Modus), werden in beiden Modi die "quit"-, "intr"- und "flush"-Zeichen lokal abgefangen und als Telnet-Protokoll-Sequenzen an das entfernte System gesendet.

    Während eine Verbindung zu einem entfernten System besteht, kann in den Telnet-Kommandomodus mittels dem Telnet-Fluchtsymbol (Voreinstellung "^]") umgeschaltet werden.
    Nachfolgend werden die verfügbaren Kommandos beschrieben. Kommandos können soweit verkürzt eingegeben werden, als sie noch eindeutig erkennbar sind. Gleiches gilt auch für die Argumente der Kommandos mode, set, toggle und display. Im Kommandomodus haben die üblichen Terminal-Editier-Konventionen Gültigkeit (UNIX-Shell und "stty"-Einstellungen).

    Beispiel: Verbindung zum Rechner lx-lbs

    telnet lx-lbs

    Telnet reagiert daraufhin mit:

    Trying to .....
    Connect to sun1-lbs
    Escape Character is '^]'
    
    Jetzt folgt die normale Loginsequenz auf dem Rechner sun1-lbs. Um weitere Kommandos an Telnet geben zu können, muß der Befehl mit dem angegeben Escape-Character eingeleitet werden (im Beispiel das ESC-Zeichen). Beenden der Verbindung erfolgt in diesem Fall mit "^] quit" oder einfach Ctrl-D.

    telnet kann auch vorzüglich zum Testen von Verbindungen und Servern verwendet werden. Bei Kenntnis der Protokolle (nachlesbar in den entsprechenden RFCs) kann ein Protokoll wie SMTP, NNTP, HTTP, usw. auch von Hand nachgebildet werden. Man kann so durch eine telnet-Verbindung nachsehen, ob auf einem fernen System Mail-, News-, WWW- oder andere Dienste laufen.

    ftp [ -v ] [ -d ] [ -i ] [ -n ] [ -g ] [ host ]

    FTP ist die Benutzerschnittstelle zum Dateiübertragungsprotokoll. Dieses Programm ermöglicht den Dateitransfer zwischen zwei Rechenanlagen. Es besitzt eine eigene Kommandooberfläche, die interaktiv bedient wird. Der Aufruf dieses Filetransferprogrammes erfolgt durch ftp.
    FTP funktioniert aber auch, wenn man auf dem fernen Rechner keine Benutzerberechtigung hat, denn viele Rechner bieten große Dateibereiche über sogenannten 'anonymen' FTP. Man gibt in diesem Fall als Benutzernamen 'ftp' ein und als Passwort die eigene Mailadresse. Danach kann man sich im öffentlichen Dateibereich tummeln.
    Wird beim Programmaufruf der gewünschte Kommunikationspartner (host) mit angegeben, so wird sofort versucht, eine Verbindung zu diesem Rechensystem aufzubauen. Ist der Versuch erfolglos, so wird in den Kommandomodus umgeschaltet. Der Prompt "ftp>" erscheint immer auf dem Bildschirm, wenn ftp-Kommandos eingegeben werden können. ftp verfügt über einen help-Mechanismus, über den sämtliche auf dem jeweiligen System verfügbare Kommandos mit Kurzerklärungen abfragbar sind.
    Nachfolgend werden wesentliche Kommandos nach Funktionalität gruppiert vorgestellt. Kommandos können soweit verkürzt eingegeben werden, als sie noch eindeutig erkennbar sind. Enthalten Kommandoargumente "Blanks", so sind die Argumente beidseitig mit Hochkommas eingeschlossen einzugeben.

    Die optionalen Parameter beim ftp-Kommando setzen logische Schalter für den ftp-Programmlauf. Im Kommandomodus sind die Einstellungen jederzeit wieder änderbar.

    Die Datei-Übertragung wird durch die Terminal "interrupt"-Taste (üblicherweise Ctrl-C) abgebrochen, was einen sofortigen Abbruch zur Folge haben soll. Nicht alle Kommunikationspartner verstehen die Abbruchaufforderung und dann wird dennoch die gesamte Datei übertragen ausgeführt.

    Dateinamen, die als Argumente von FTP-Kommandos Verwendung finden, werden wie folgt bearbeitet: Ist "file globbing" eingeschaltet, werden bei den Kommandos mget, mput und mdelete die Namen lokaler Dateien folgendermaß behandelt:

    Nicht alle ftp-Installationen unterstützen alle ftp-Kommandos. Wenn sich eine Dateiübertragung nicht ordnungsgemäß abbrechen läßt, kann der lokale ftp-Prozess mit dem Terminal-intr-Zeichen (üblicherweise Ctrl-C) abgebrochen werden.

    Die Kommandos telnet und ftp (und die r-Kommandos) stellen jedoch ein gravierendes Sicherheits-Problem dar, denn:

    Deshalb wird heute in der Regel die Secure Shell (SSH) verwendet (die Verwendung von telnet als Test-Tool bleibt natürlich erhalten).

    Die Secure Shell (SSH)

    Bei der Entwicklung von SSH wurde besonderer Wert auf folgende Punkte gelegt:

    SSH speichert alle wichtigen Informationen im Unterverzeichnis ".ssh" des Heimatverzeichnisses des jeweiligen Benutzers. Das Directory sollte deshalb nur für den Besitzer der Kennung zugänglich sein (chmod 700 .ssh).

    Mit SSH kann man:

    Bereits durch diese einfache Nutzung der SSH werden alle Daten einer Verbindung komplett verschlüsselt. Damit sind die Sicherheits-Probleme von telnet und ftp behoben, d. h. Passwörter und Daten werden nicht mehr im Klartext übertragen und es findet eine strenge Authentifizierung statt.

    Bei jeder neuen Verbindung laufen am Anfang folgende Schritte ab:

    Der Benutzer kann seine Identität nicht nur per Username und Passwort, sondern auch durch eine individuelle RSA-Authentifikation nachweisen (automatischer Login). Dazu ist jedoch auf dem Remote-Rechner ein entsprechender Eintrag in der Datei $HOME/.ssh/authorized_keys erforderlich.

    Bei SSH kommen kryptographische Verfahren an mehreren Stellen zum Einsatz. Das asymmetrische RSA-Verfahren wird für die Authentifizierung der Kommunikations-Partner und für die sichere Übertragung eines zufällig erzeugten und nur einemal verwendeten Sitzungs-Schlüssel eingesetzt. Dabei werden Key-Längen zwischen 768 und 1024 Bit empfohlen. Zur Verschlüsselung der Daten während der Verbindung wird wegen des höheren Durchsatzes ein symmetrisches Verfahren verwendet. Je nach Installation der SW hat der Benutzer i.a. die Auswahl zwischen verschiedenen Algorithmen: DES (Data Encryption Standard) mit 56 Bit Schlüssellänge, 3DES (Tripple DES) mit 112 Bit Schlüssellänge, IDEA (International Data Encryption Algorithm) mit 128 Bit Schlüssellänge, Blowfisch mit 128 Bit Schlüssellänge und Arcfour mit 128 Bit Schlüssellänge.

    Folgende Optionen werden bei ssh häufiger verwendet:

    Folgende Optionen werden bei scp häufiger verwendet:

    RSA-Schlüsselpaare

    Die Authentifizierung des Clients kann, wie oben erwähnt, auch durch eine benutzerspezifische RSA-Authentifikation erfolgen. Dazu benötigt der Benutzer jedoch ein individuelles RSA-Key-Paar, das im Directory $HOME/.ssh abgelegt und mit dem Kommando ssh-keygen verwaltet wird:

    Hinweise: Die Erzeugung des Key-Paares erfolgt automatisch und kann nicht reproduziert werden. Aus Sicherheitsgründen sollte man das Passwort für den Secret-Key niemals als Option auf der Kommandozeile von ssh-keygen angeben (das kann jeder nämlich per ps-Kommando sehen)! Mit der Option '-b KEY_LENGTH' kann man die Länge der Schlüssel festlegen (default: 1024). Mit der Option '-C COMMENT' kann man zur besseren Übersicht einen Kommentar bzw. einen Namen für das Schlüssel-Paar vergeben.

    ssh-keygen -p [-f KEY_FILE] ('Passwort') dient zum Ändern des Passworts für die Aktivierung des Secret-Keys und mit ssh-keygen -c [-f KEY_FILE] [-C COMMENT] ('Comment') kann der Kommantar geändert werden.

    Neben den Kommandos für den "Normalbenutzer" gibt es noch Testkommandos, die recht hilfreich sind, wenn man einen fernen Rechner nicht erreicht oder, um mehr über das Netz zu erfahren.

    ping

    Falls man mit dem Kommando ping zuerst einmal "Ping-Pong" assoziert, liegt man gar nicht so falsch. Allerdings werden hier keine Zelluloidbälle, sondern Datenpakete hin und her geschickt. Man kann mit ping testen, ob ein Rechner im Netz erreichbar ist. Das Programm ping erzeugt ICMP-Echo-Request-Pakete, die mit ICMP-Echo-Response-Paketen beantwortet werden, wenn sie das angegebene System erreichen. Das Zielsystem kann durch seinen Systemnamen (falls in der /etc/hosts oder im Nameservice enthalten) oder durch seine Internet-Adresse angegeben werden. Durch den einfachen Aufruf

    $ ping donald

    erhält man je nach System die Meldung "donald is alive." oder es wird pro Sekunde 1 Datenpaket gesendet. Die als Echo zurückkommenden Pakete werden angezeigt. Ab gebrochen wird das Ping-Pong-Spiel durch das Interrupt-Signal (Delete, Ctrl-C). Nach dem Abruch von ping wird noch eine kurze Statistik ausgegeben. (die Wortkarge Variante von ping muß man durch die Option "-s" zur Dauerarbeit bringen). Besonders interessant ist die Angabe "packet loss", also der Prozentsatz der nicht be antworteten Pakete. Bei einer einwand freien Verbindung, insbesondere in einem lokalen Netz, sollte hier eigentlich immer 0% stehen. Im Falle von 100% ist definitiv etwas nicht in Ordnung. Passiert dies bei allen Systemen, so ist das Netz defekt. Beispiel:

    $ ping www.ee.hm.edu
    PING www.ee.hm.edu (129.187.206.140): 56 data bytes
    64 bytes from 129.187.206.140: icmp_seq=0 ttl=242 time=48.9 ms
    64 bytes from 129.187.206.140: icmp_seq=1 ttl=242 time=41.9 ms
    64 bytes from 129.187.206.140: icmp_seq=2 ttl=242 time=41.3 ms
    64 bytes from 129.187.206.140: icmp_seq=3 ttl=242 time=39.9 ms
    64 bytes from 129.187.206.140: icmp_seq=4 ttl=242 time=44.9 ms
    64 bytes from 129.187.206.140: icmp_seq=5 ttl=242 time=42.9 ms
    64 bytes from 129.187.206.140: icmp_seq=6 ttl=242 time=45.4 ms
    64 bytes from 129.187.206.140: icmp_seq=7 ttl=242 time=40.5 ms
    64 bytes from 129.187.206.140: icmp_seq=8 ttl=242 time=41.4 ms
    64 bytes from 129.187.206.140: icmp_seq=9 ttl=242 time=42.3 ms
    
    --- www.eee.hm.edu ping statistics ---
    10 packets transmitted, 10 packets received, 0% packet loss
    round-trip min/avg/max = 39.9/42.9/48.9 ms
    

    arp

    Das "Address Resolution Protocol" dient der Zuordnung von Internet-Adressen zu Ethernet-Adressen. Zu diesern Zwecke existiert eine Adreßumwandlungstabelle (adress-translation table), die normalerweise vom ARP selbständig aktualisiert wird. Mit der Option "-a" wird der aktuelle Inhalt der Tabelle ausgegeben, z.B.:
    $ arp -a
    Net to Media Table
    Device   IP Address  -------             Mask      Flags   Phys Addr
    ------ --------------------------- --------------- ----- -----------------
    le0    brokrz.lrz-muenchen.de      255.255.255.255       00:00:a2:0f:76:97
    le0    infoserv.rz.fh-muenchen.de  255.255.255.255       00:e0:29:06:18:d3
    le0    flynt.rz.fh-muenchen.de     255.255.255.255       00:e0:29:08:49:f1
    le0    kobra.rz.fh-muenchen.de     255.255.255.255       00:08:c7:a9:6c:cc
    le0    netmon.rz.fh-muenchen.de    255.255.255.255       00:e0:29:0e:83:92
    le0    linux4.rz.fh-muenchen.de    255.255.255.255       00:00:c0:93:19:d3
    le0    linux5.rz.fh-muenchen.de    255.255.255.255       00:00:c0:37:19:d3
    le0    door2.rz.fh-muenchen.de     255.255.255.255       00:00:c0:3f:fb:a7
    le0    wapserv                     255.255.255.255 SP    08:00:20:23:02:88
    le0    sun10.rz.fh-muenchen.de     255.255.255.255       08:00:20:86:ce:5e
    le0    kiosk1.rz.fh-muenchen.de    255.255.255.255       00:00:c0:60:af:d7
    le0    satellit.rz.fh-muenchen.de  255.255.255.255       08:00:20:71:77:b4
    le0    kaputt.rz.fh-muenchen.de    255.255.255.255       00:50:56:82:f0:f0
    
    Mit Hilfe der Option "-d" können Einträge aus dieser Tabelle gelöscht werden. Die Einträge sind jedoch nicht nicht permanent, sondem nach einer gewissen Zeit verschwinden sie wieder. Daher ist es meistens nicht notwendig einen Eintrag manuell zu entfernen.

    netstat

    Mit Hilfe des Programms netstat können Status-Information über alle aktiven TCP-, UDP- und IP-Verbindungen, die Routing-Tabelle und eine detailierte Statistik der TCP/IP-Daten ausgegeben werden. Bei der Fehlersuche kann sich dieses Programm ebenfalls als durchaus nützlich erweisen. So wird mit der Option "-i" eine Statistik über die Benutzung der Schnittstellen ausgegeben. Die Statistik zeigt die Namen der installierten Schnittstellen, die "Maximal transmission unit" als die maximale Paketgröße des Netzwerks, das Netzwerk, zu dem die Schnittstelle führt und die Adresse der Schnittstelle.
    Kernel Interface table
    Iface   MTU Met  RX-OK RX-ERR RX-DRP RX-OVR  TX-OK TX-ERR TX-DRP TX-OVR Flags
    lo     3584   0    220      0      0      0    220      0      0      0 BLRU
    eth0   1500   0      0      0      0      0      0      0      0      0 BRU
    
    Möchte man die Angaben numerisch, so verwendet man netstat -in. Von besonderem Interesse sind die letzten fünf Spalten. Hier werden die Anzahl von empfangenen und gesendeten Paketen, die Anzahl der dabei auftretenden Fehler, sowie die Anzahl der Kollisionen ausgegeben, in die das System verwickelt waren. Sind die Zahlen lpkts und Opkts gleich Null oder ist Opkts gleich Oerrs, so liegt ein mehr oder weniger gravierendes Hardware-Problem vor. Die Anzahl der Kollisionen sollte bei jedem System im Netz unter 5% von Opkts liegen. In die sem Fall arbeiten die Netzwerkschnittstellen effizient. Eine weitere interessante Option des netstat-Kommandos ist die Möglichkeit, sich die aktuellen Verbindungen und aktiven Server mittels der Option "-a" anzeigen zu lassen. Bei diesem Aufruf werden zunächst die zur Zeit benutzten Verbindungen ausgegeben. Dies ist dadurch gekennzeichnet, daß in der Spalte (state) der Zustand ESTABLISHED anaeaeben wird. An .schließend werden alle aktiven Server Prozesse ance-eben, d.h. alle Server, die zur Zeit erreichbar sind. Ein Auszug aus der Ausgabe von netstat -a könnte beispielsweise so aussehen:
    Active Internet connections (including servers)
    Proto Recv-Q Send-Q Local Address          Foreign Address        (State)       User
    tcp        0      0 *:netbios-ssn          *:*                    LISTEN        root
    tcp        0      0 *:nntp                 *:*                    LISTEN        root
    tcp        0      0 *:auth                 *:*                    LISTEN        root
    tcp        0      0 *:sunrpc               *:*                    LISTEN        root
    tcp        0      0 *:pop3                 *:*                    LISTEN        root
    tcp        0      0 *:www                  *:*                    LISTEN        root
    tcp        0      0 *:finger               *:*                    LISTEN        root
    tcp        0      0 *:midinet              *:*                    LISTEN        root
    tcp        0      0 *:http-rman            *:*                    LISTEN        root
    tcp        0      0 *:btx                  *:*                    LISTEN        root
    tcp        0      0 *:smtp                 *:*                    LISTEN        root
    tcp        0      0 *:telnet               *:*                    LISTEN        root
    tcp        0      0 *:ftp                  *:*                    LISTEN        root
    tcp        0      0 *:netstat              *:*                    LISTEN        root
    tcp        0      0 *:systat               *:*                    LISTEN        root
    tcp        0      0 *:printer              *:*                    LISTEN        root
    tcp        0      0 *:shell                *:*                    LISTEN        root
    tcp        0      0 *:login                *:*                    LISTEN        root
    tcp        0      0 *:exec                 *:*                    LISTEN        root
    udp        0      0 *:rplay                *:*
    udp        0      0 *:netbios-ns           *:*
    udp        0      0 *:sunrpc               *:*
    udp        0      0 *:ntalk                *:*
    udp        0      0 *:talk                 *:*
    udp        0      0 *:syslog               *:*
    raw        0      0 *:1                    *:*
    Active UNIX domain sockets
    Proto RefCnt Flags      Type            State           Inode Path
    unix  1      [ ACC ]    SOCK_STREAM     LISTENING         417 /dev/log
    unix  2      [ ]        SOCK_STREAM     CONNECTED         440
    unix  2      [ ]        SOCK_STREAM     UNCONNECTED       441 /dev/log
    unix  2      [ ]        SOCK_STREAM     CONNECTED         499
    unix  2      [ ]        SOCK_STREAM     UNCONNECTED       500 /dev/log
    unix  2      [ ]        SOCK_STREAM     CONNECTED         517
    unix  2      [ ]        SOCK_STREAM     UNCONNECTED       518 /dev/log
    
    Die erste Spalte enthält das Transportprotokoll. Die zweite und dritte Spalte sagen etwas über die Anzahl der Bytes in der Empfangs- bzw. Sende-Warteschlange aus. Die nächsten beiden Spalten geben lokale und ferne Adressen einer Verbindung an. Diese Adressen bestehen aus der Internet-Adresse und der Portnummer der Kommunikationspartner. Ist der Rechner in der /etc/hosts bzw. der Dienst in der /etc/services eingetragen, so werden statt der Adressen Rechnername bzw. der Name des Services aus gegeben. Dies läßt sich durch den Aufruf von netstat -in verhindern. Handelt es sich 4611 um einen Eintrag für einen aktiven Server, so wird die lokale Adresse in der Form "*.<portnummer>" und ferne Adressen in der Form "*.*" angegeben. Diese Art der Ausgabe zeigt an, daß der entsprechende Dienst bereit ist. Bei TCP-Diensten zeigt zusätzlich die letzte Spalte an, daß der Server auf LISTEN aesetzt ist. Kommt für einen speziellen Dienst keine Verbindung zustande, obwohl andere Programme (z.B. ping) funktionieren. so kann man mittels netstat -a auf dem Zielsystem überprüfen, ob der Server dort aktiv ist. Nur dann kann eine entsprechende Verbindung überhaupt aufgebaut werden. Der Aufruf von netstat mit der Option -r listet die Routing-Tabelle auf und netstat -s liefert eine detailierte Statistik der TCP/IP-Daten. netstat -p zeigt zusätzlich an, welche Programme zu welcher Netzverbindung gehören (nur als User "root").

    traceroute

    Um festzustellen, welchen Weg die Datenpakete zu einem fernen Rechner nehmen und wie "gut" die Verbindung dorthin ist, kann man 'traceroute' einsetzen. Das Programm schickt UDP-Pakete mit unterschiedlicher "Lebensdauer" an einen unbenutzten Port und wertet so die Fehlermeldungen der einzelnen Router und Gateways aus. Dem Kommando wird wie bei Ping nur der Rechnername oder eine IP-Nummer als Parameter übergeben. Für jeden Gateway wird dann auf dem Bildschirm eine Zeile ausgegeben:
    Zähler Gateway-Name Gateway-IP-Nummer "round-trip"-Zeit (3 Werte)
    Traceroute sendet jeweils drei Datenpakete. Wenn auf ein Paket keine Antwort erfolgt, wird ein Sternchen (*) ausgegeben. Ist ein Gateway nicht erreichbar, wird statt einer Zeitangabe '!N' (network unreachable) oder '!H' (host unreachable) ausgegeben. Man kann so feststellen, wo eine Verbindung unterbrochen ist, und auch, welchen Weg die Daten nehmen - wo also der Zielrechner in etwa steht. Bei grafischen Benutzerschnittstellen erfolgt die Parameterangabe über Dialogfelder und nicht in der Kommandozeile.
    $ traceroute www.linux.org
    traceroute to www.linux.org (198.182.196.56), 30 hops max, 40 byte packets
     1  space-gw2m (194.97.64.8)  2.758 ms  3.637 ms  2.491 ms
     2  Cisco-M-IV.Space.Net (195.30.0.123)  6.413 ms  4.118 ms  4.107 ms
     3  Cisco-M-Fe0-0.Space.Net (195.30.0.126)  4.826 ms  4.508 ms  5.53 ms
     4  Cisco-ECRC-H1-0.Space.Net (193.149.44.2)  5.977 ms  6.273 ms  20.832 ms
     5  munich-ebs2-s0-0-0.ebone.net (192.121.158.189)  14.415 ms  17.018 ms  8.575 ms
     6  newyork-ebs1-s5-0-0.ebone.net (195.158.224.21)  137.35 ms  139.103 ms  138.14 ms
     7  serial0-0-1.br1.nyc4.ALTER.NET (137.39.23.81)  137.132 ms  141.742 ms  141.207 ms
     8  134.ATM2-0.XR1.NYC4.ALTER.NET (146.188.177.178)  135.375 ms  128.12 ms  165.913 ms
     9  189.ATM3-0.TR1.EWR1.ALTER.NET (146.188.179.54)  141.83 ms  144.798 ms  362.469 ms
    10  105.ATM4-0.TR1.DCA1.ALTER.NET (146.188.136.185)  145.321 ms  147.889 ms  152.43 ms
    11  299.ATM6-0.XR1.TCO1.ALTER.NET (146.188.161.169)  354.577 ms  133.535 ms  348.647 ms
    12  193.ATM8-0-0.GW2.TCO1.ALTER.NET (146.188.160.49)  152.444 ms  369.313 ms  150.106 ms
    13  uu-peer.oc12-core.ai.net (205.134.160.2)  365.008 ms  509.81 ms  144.898 ms
    14  border-ai.invlogic.com (205.134.175.254)  270.065 ms  341.586 ms  153.441 ms
    15  router.invlogic.com (198.182.196.1)  356.496 ms  506.371 ms  532.983 ms
    16  www.linux.org (198.182.196.56)  584.957 ms  300.612 ms  380.004 ms
    

    7.2.4 Binärdaten per Mail (oder News) versenden

    Da nach wie vor 7-Bit-ASCII als kleinster gemeinsamer Standard für News und Mail gilt, lassen sich Binärdateien nicht ohne weiteres posten. Abhilfe schaffen hier die Programme UUENCODE und UUDECODE, mit deren Hilfe binäre Daten auf den Bereich der druckbaren ASCII-Zeichen (Großbuchstaben, Ziffern und Sonderzeichen) abbilden lassen. Es werden also Bytes in 6-Bit-Worten codiert und in Zeilen umbrochen. Die mit UUENCODE erzeugte Datei ist nun zwar größer als die Ursprungsdatei, sie läßt sich aber problemlos per News oder Mail verbreiten. Die "uuencodete" Datei enthält am Anfang eine Zeile mit Zugriffsrechte und den Dateinamen:

    begin 644 camera.wav

    Danach folgen die codierten Daten und als Abschluß eine Zeile

    end

    Eine weitere Form der Codierung findet man bei der Verbreitung von Programmquellen und anderen zusammengehörenden Texten (Programmquellen bestehen in der Regel aus mehreren Quelldateien, Manualpages, Makefile, usw.). Diese Dateien kann man zu sogenannten 'Shell-Archiven' zusammenfassen. Hier wird ein komplettes Shell-Skript gepostet, das die Dateien in Form einzelner Here-Dokumente enthält. Man startet das Skript, wodurch die einzelnen Dateien ausgepackt und meist auch noch auf Korrektheit (Prüfsumme) geprüft werden. Hier als Beispiel der Anfang eines Shell-Archivs:

    #! /bin/sh
    # This is a shell archive. Remove anything before this line, then
    # feed it into a shell via "sh file" or similar. To overwrite
    # existing files, type "sh file -c".
    # Contents: bells.sh hells-bells.au.uu
    PATH=/bin:/usr/bin:/usr/ucb ; export PATH
    echo If this archive is complete, you will see the following message:
    echo ' "shar: End of archive."'
    if test -f 'bells.sh' -a "${1}" != "-c" ; then
      echo shar: Will not clobber existing file \"'bells.sh'\"
    else
      echo shar: Extracting \"'bells.sh'\" \(581 characters\)
    sed "s/^X//" >'bells.sh' <<'END_OF_FILE'
    X#!/bin/
    X
    XBELL=/usr/local/sounds/hells-bells.au
    XPLAY=/usr/local/bin/play
    XVOL=40 XDATE=`date +%H:%M`
     XMINUTE=`echo $DATE
    | sed -e 's/.*://'`
     XHOUR=`echo $DATE | sed -e 's/:.*//'`
    X
     ....
    

    Um mehrere Dateien in einer einzigen zusammenzufassen verwendet man in der Regel das tar-Kommando (Tape ARchive), nur wird hier nicht auf das Band geschrieben, sondern alle Dateien und Verzeichnisse in eine einzige Datei geschrieben (Option "f"). Analog kann ein Archiv dann wieder "ausgepackt" werden.

    tar cvf datei(en) archiv Archiv erzeugen (c = create)
    tar xvf archivArchiv auspacken (x = extract)
    tar tvf archivArchiv ansehen
    (das "v" steht wieder mal für "verbose")

    Um z. B. alle Dateien des Verzeichnisses 'bin' (und dessen Unterverzeichnisse) in einem Archiv zu sichern, geben das Kommando:

    tar cvf bin binaeres.tar

    tar kann aber auch verwendet werden, um ganze Dateibäume auf der Platte zu verschieben:

    (cd Quelldir ; tar cvf - ) | (cd Zieldir ; tar xvfp - )

    Damit Übertragungszeit beim ftp gespart wird, kann man nun das Archiv noch komprimieren, wozu bei fast allen Systemen die Kommandos pack/unpack bzw. compress/uncompress existieren:

    pack datei

    komprimiert die Datei und ersetzt sie durch die komprimierte Version, wobei an den Namen die Endung ".z" angehängt wird. Mit

    unpack datei.z

    wird die Datei wiederhergestellt.

    compress datei

    komprimiert die Datei und ersetzt sie durch die komprimierte Version, wobei an den Namen die Endung ".Z" angehängt wird. Mit

    uncompress datei.Z

    wird die Datei wiederhergestellt, wobei das Ergebnis von compress wesentlich kompakter als bei pack ist.

    In letzter Zeit wurde der GNU-Zip zum Standard. Er liefert bessere Ergebnisse als compress und kann auch mit pack oder compress bearbeitete Dateien bearbeiten. Die Aufrufe lauten:

    gzip datei

    zum Komprimieren und

    gunzip datei oder gzip -d datei

    zum Dekomprimieren.

    7.3 NFS - Network File System

    NFS erlaubt das Einbinden einer beliebigen Platten-Partition eines Computers in das Dateisystem eines anderen Rechners. Dazu wird entweder per mount-Befehl oder über die Datei /etc/fstab bzw. /etc/vfstab angegeben, welches Verzeichnis eines fernen Rechners auf welches lokale Verzeichnis gemountet werden soll.

    Die einzige Konfigurationsdatei für den NFS-Dämon des NFS-Servers ist die Datei /etc/exports mit folgendem Format:

    Verzeichnis-Pfad     Rechnernamen (Optionen)
    
    Links steht das Verzeichnis, das der NFS-Server exportieren soll, beispielsweise /home/public oder /cdrom. In der Mitte stehen die Rechner, die Zugriff auf das Verzeichnis haben sollen, und danach in Klammern die Optionen. ACHTUNG: Beachten Sie das Leerzeichen zwischen den Rechnernamen und den Optionen! Nach jeder Änderung der Datei müssen Sie den Portmapper neu starten und dann den NFS-Dämon neu einlesen lassen.

    Die zugriffsberechtigten Client-Rechner können Sie auf drei Arten definieren:

    Die gebräuchlichsten Optionen sind:

    Im folgenden Beispiel sollen folgende Zugriffe möglich sein: Auf die erste CD-ROM bekommen die Clients nur Lesezugriff. Der Rechner boss.netzmafia.de benötigt root-Zugriff auf /install knecht.netzmafia.de darf ebenfalls auf /install zugreifen, allerdings ohne daß Dateien des Benutzers root als solche erscheinen. Die Home-Verzeichnisse aller Benutzer auf dem Server exportiert der Server an alle Rechner im Subnetz, damit die Benutzer auf allen Clients das gleiche Home-Verzeichnis bekommen:

    # /etc/exports
    #
    /cdrom     *.netzmafia.de (ro)
    /install   boss.netzmafia.de (rw,no-root-squash) \
               knecht.netzmafia.de (ro,root-squash)
    /home      192.168.253.255/255.255.255.255
    
    Beim Client werden die Verzeichnisse unter Angabe des Servernamens (durch Doppelpunkt getrennt) eingebunden. Das kann entweder per mount-Kommando geschehen, z. B. durch:
    mount nfs.netzmafia.de:/cdrom -t nfs /opt/cdrom
    
    oder in der Datei /etc/fstab, z. B.:
          .
          .
    nfs.netzmafia.de:/cdrom    /opt/cdrom  nfs  ro         0 0
    nfs.netzmafia.de:/home     /home       nfs  defaults   0 0
          .
          .
    

    Zum Inhaltsverzeichnis Zum nächsten Abschnitt
    Copyright © FH München, FB 04, Prof. Jürgen Plate
    Letzte Aktualisierung: 07. Dez 2011