Login
Newsletter
Werbung

Mo, 22. November 1999, 00:00

Linux als Einwahlserver

Von Jens

Einleitung

Gerätedateien

UNIX unterscheidet zwischen zeichen- und blockorientierten Geräten. Blockdevices sind z.B. Floppy und Festplatte. Sie sind meist mit einem Dateisystem versehen und in den Verzeichnisbaum eingehängt. Zeichenorientierte Devices sind Kommunikationskanäle des Systems mit der Umgebung. Die Tastatur und der Bildschirm zum Beispiel. Diese werden zu einer Konsole zusammengefasst (/dev/tty?). Dann sind da noch die seriellen und die parallelen Schnittstellen (/dev/ttyS?, /dev/lp?), die man zum Anschluß von diversen Geräten (auch anderen Rechnern) verwenden kann.

Login-Vorgang

Wie funktioniert ein Login?

Als erstes wird das in der Datei /etc/inittab stehende Programm ausgeführt. Hier ist es mingetty (ein einfaches getty-Programm). Dieses Programm öffnet das /dev/tty Device als Datei und schreibt einen Begrüßungstext hinein. Alles, was in die Datei hineingeschrieben wird, erscheint auf dem Schirm und alles, was aus der Datei gelesen wird, kommt von der Tastatur.

Weiterhin wird noch die Aufforderung zum Login ausgebeben. Wenn nun jemand einen Benutzernamen eingibt, übergibt getty den Usernamen an das Programm login. Dies liest das Passwort ein, verschlüsselt es und vergleicht das chiffrierte Passwort mit dem Eintrag in der Datei /etc/passwd.

inittab

Jens

inittab

Wenn Benutzername und Passwort korrekt sind, wird meist eine Shell gestartet. Meldet sich der Benutzer ab, wird getty neu gestartet. getty kann auch noch serielle Ports überwachen (/dev/ttyS?). Dort kann man zum Beispiel einen anderen Rechner per Nullmodemkabel anschließen. So kann ein Rechner ferngesteuert werden.

Gerätereset

Wenn getty die Kontrolle über eine Schnittstelle erhält, wird das Gerät erst einmal in den Ausgangszustand gesetzt. Bei der Konsole wird einfach nur der Bildschirm gelöscht und Zeichensätze neu geladen. Bei der seriellen Schnittstelle ist es schon etwas mehr: Baud-Rate und Parität einstellen, Empfangs- und Sendepuffer löschen etc. Wenn an der seriellen Schnittstelle ein Modem angeschlossen ist, muss getty noch mehr ausführen.

mgetty

Für den Betrieb eines Modems zum Einloggen benötigt man ein neues Programm namens mgetty (statt des sonst verwendeten mingetty). Dies muß installiert werden.

Die Konfigurationsdatei ist /etc/mgetty+sendfax/mgetty.config. Diese Datei legt die Initialisierung des Modem fest. Also das, was mgetty tun muß, wenn es die Kontrolle über das Modem erhält.

speed 38400
port-owner remote
port-group net
port-mode 0664
port ttyS0
data-only y
init-chat "" AT&D3 OK

Hier ist der Eintrag für ein Modem an /dev/ttyS0. Geöffnet wird das Gerät mit port-owner.port-group. Speed bestimmt die Geschwindigkeit (in Baud) der seriellen Schnittstelle. Data-only y bestimmt, daß das Modem nur auf Daten reagiert und nicht auf eintreffende Faxrufe.

init-chat <EXPECT1 SEND2 EXPECT3 SEND4 EXPECT5 ...

Der Eintrag init-chat bestimmt, wie das Modem resettet werden soll. Das entnimmt man am besten der Modembeschreibung. Als erstes wird die Steuerleitung DTR des Modems auf low gelegt. Das Ergebnis dieser Aktion wird mit EXPECT1 verglichen, in diesem Fall wird keine bestimmte Antwort erwartet (""). Durch AT&amp;D3 wird das Modem resettet. Das OK vergleicht mgetty mit dem Ergebnis des AT&amp;D3-Befehls des Modems. Das Modem darf weiterhin nicht automatisch abheben. Dies erledigt mgetty, wenn es einen eingehenden Ruf anhand des Schlüsselwortes RING erkennt.

Der Init-Daemon

Nachdem nun mgetty konfiguriert ist, muß das Programm noch gestartet werden. Dies geschieht nicht direkt, sondern durch den Init-Daemon, so brauchen wir uns über den Neustart keinen Kopf mehr zu zerbrechen. Der Eintrag lautet:

S0:23:respawn:/usr/sbin/mgetty /dev/ttyS0

S0ist das tty-Device, das durch diesen Eintrag angesprochen werden soll. 23sind die Runlevel, in denen der Eintrag gestartet wird. respawn veranlasst den Neustart des Programms, nachdem /dev/ttyS0 wieder freigegeben wurde. Der letzte Eintrag enthält das Programm mit den angegebenen Parametern.

Nach der Änderung der Datei /etc/inittab muss der Init-Daemon die Datei neu einlesen. Dies wird mit dem Befehl telinit q bewerkstelligt.

So, mit der Modemverbindung steht erst einmal ein Kanal zur Kommunikation offen, über den Daten empfangen und gesendet werden können. Je nachdem, was für ein Programm auf dem angewählten Rechner die Daten entgegennimm,t werden sie anders interpretiert. Meist wird es so erstmal eine Shell sein, die die Daten als Shell Unix-Befehle interpretiert. So kann man sich zum Beispiel von Weitem auf seinen Rechner zu Hause einwählen und auf ihm arbeiten. Man muß dabei aber bedenken, daß auch andere Leute die Nummer anwählen können und somit Zugriff auf den Rechner haben könnten. Also vorher mal die Sicherheitseinstellungen überprüfen. Nun kann aber auch ein Programm gestartet werden, das alle eintreffenden Daten als IP- Pakete ansieht und Ergebnisse auch nur als IP Pakete sendet, ist eine Netzwerkverbindung entstanden. Dies macht der PPP-Daemon. Er verpackt die IP-Pakete noch in ein eigenes Protokoll und sendet dann diese Pakete an die Gegenstelle. Diese trennt dann die PPP-Informationen wieder und man erhält IP-Pakete.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung