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 ist da noch die serielle und die parallele Schnittstelle (/dev/ttyS? und /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 Device /dev/tty als Datei und schreibt einen Begrüßungstext hinein. Alles, was in die Datei hineingeschrieben wird, erscheint auf dem Bildschirm, und alles, was aus der Datei gelesen wird, kommt von der Tastatur.

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

# getty programs for the normal runlevels
# <id>:<runlevels>:<actions>:<process>
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
1:123:respawn:/sbin/mingetty --noclear tty1
2:123:respawn:/sbin/mingetty tty2
3:123:respawn:/sbin/mingetty tty3
4:123:respawn:/sbin/mingetty tty4
5:123:respawn:/sbin/mingetty tty5
6:123:respawn:/sbin/mingetty tty6

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 ein 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 Modems 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, dass 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 zurückgesetzt 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, und diesem Fall wird keine bestimmte Antwort erwartet (""). Durch AT&amp;D3 wird das Modem zurückgesetzt, das OK vergleicht mgetty mit dem Ergebnis des AT&amp;D3-Befehls. 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 nicht mehr den Kopf zu zerbrechen. Der Eintrag lautet:

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

S0 ist 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 entgegennimmt, werden sie anders interpretiert. Meist wird es so erst einmal eine Shell sein, die die Daten als Shell-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, dass 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. Und schon ist eine Netzverbindung 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