Fachhochschule Rheinland-Pfalz, Abteilung Worms

- Fachbereich Informatik, Prof. Dr. R. Keidel -


Samba auf Linux PCs als Server für Windows-Rechner

Ausarbeitung im Rahmen der Vorlesung

Spezielle Kapitel der Kommunikationsinformatik 2


Konrad Holl, Matrikelnummer 654420, mailto:holl@worms.fh.rpl.de


Inhaltsverzeichnis

1 Was ist Samba?

1.1 Samba

1.2 Das SMB-Protokoll

2 Installation von Samba auf einem Linux-Rechner

2.1 Entpacken und Compilieren

2.2 Konfiguration von Samba

2.2.1 Globale Einstellungen
2.2.2 Einrichten von geteilten Verzeichnissen
2.2.3 Einrichten von geteilten Druckern
2.2.4 Browsing
2.2.5 Initialisieren bzw. Beenden von Diensten
2.2.6 Definierte Variablen

2.3 Sicherheitseinstellungen

2.3.1 Zugriffsrechte für bestimmte Rechner
2.3.2 Verzeichnis-Schutz
2.3.3 Benutzer-Schutz

2.4 Starten des Servers

2.5 Testen des Servers

3 Installation in Windows

3.1 Installation in Windows 3.1

3.2 Installation in Windows 3.11 (für Workgroups)

3.3 Installation in Windows 95 bzw. NT>

4 Glossar

5 Bezugsquellen

5.1 Samba (Version 1.9.15p8 bzw. 1.9.13)

5.2 TCP/IP 32 für Windows für Workgroups

5.3 Microsoft Client für MS-DOS

6 Literatur


1 Was ist Samba?

1.1 Samba

Bei Samba handelt es sich um ein Paket von Programmen für Unix und ähnliche Betriebssysteme, insbesondere Linux, das die Funktionalität eines Microsoft LanManager kompatiblen Servers zur Verfügung stellt. Es werden einem Client Dienste (sog. "shares"), d.h. die Nutzung von Druckern und Festplatten auf dem Server, zur Verfügung gestellt. Es sind aber auch Programme vorhanden, mit deren Hilfe von Linux aus auf geteilte Drucker und Festplatten von Rechnern zugegriffen werden kann, auf denen ein LanManager kompatibler Server, wie z.B. Windows 3.11, NT, 95 oder OS/2 installiert ist. Die Software wurde im wesentlichen von Andrew Tridgell entwickelt, der das Paket kostenlos unter den Bedingungen der Gnu Public License zur Verfügung stellt.

Samba benutzt auf der Basis von TCP/IP das SMB-Protokoll (Session Message Block), das ich im nächsten Abschnitt kurz einführen werde.

1.2 Das SMB-Protokoll

Das SMB-Protokoll ist im Gegensatz zu anderen Microsoft-Produkten gut dokumentiert, da es zum einen in Zusammenarbeit mit anderen Firmen wie z.B. Intel entstanden ist und zum anderen auf dem Netzwerk-Protokoll NetBIOS basiert. Das Protokoll ist in etliche Stufen gegliedert. Dies begründet sich dadurch, daß es von Microsoft immer wieder an neue Versionen der Betriebssysteme (DOS und Windows) angepaßt wurde. Es entstanden dadurch verschiedene Dialekte des Protokolls, von denen folgende von Samba unterstützt werden: CORE, COREPLUS, LANMAN1, LANMAN2 und NT1. Dabei ist NT1 die Standardeinstellung von Samba.

Im SMB-Protokoll gibt es ca. 65 Hauptfunktionen, z.B. SMBread und SMBwrite. Manche dieser Funktionen sind wiederum in etliche Unterfunktionen untergliedert (SMBtrans hat mindestens 120 Unterfunktionen, z.B. DosPrintQAdd oder NetSessionEnum). Jede Funktion hat selbstverständlich mehrere Optionen und sogenannte "Information Levels", die die Art der Datenstruktur, die zurückgeliefert wird, bestimmen.

Samba unterstützt zur Zeit 63 der 65 Hauptfunktionen, jedoch nur 8 der Unterfunktionen von SMBtrans, wobei fairerweise dazu gesagt werden muß, daß sogar Windows NT nicht alle Unterfunktionen unterstützt. Das aktuellste Protokoll, das von Samba unterstützt wird, wird auch von Windows 95 und NT 3.5 verwendet und hat die genaue Bezeichnung "NT LM 0.12".

Aufgrund der Komplexität des Protokolls wird auch die Implementierung eines SMB-Servers für Unix groß und komplex. Das heißt nun aber auch, daß es sehr schwer ist, eine fehlerfreie Implementierung zu erreichen bzw. jeden beliebigen Client ohne Einschränkungen zu unterstützen.


2 Installation von Samba auf einem Linux-Rechner

2.1 Entpacken und Compilieren

Das Programmpaket kann mittels ftp von den in Abschnitt 5 genannten Servern bezogen werden. Dieses Archiv sollte im Pfad "/usr/local/src" mit dem Befehl

"tar xvzf samba.Version.tar.gz"

entpackt werden. Anschließend muß im Verzeichnis

"/usr/local/src/samba.Version/source"

die Datei "Makefile" mit einem Editor (z.B. vi) bearbeitet werden. In ihr sind Konfigurationen für viele Unix-Dialekte enthalten, unter anderem auch für Linux. Für Linux existieren zwei Versionen: Mit und ohne Shadow-Passwort-Unterstützung. Je nachdem, wie die Passwort-Abfrage auf dem Linux-Rechner konfiguriert ist, müssen dann die Kommentare in "Makefile" entfernt und die Datei gespeichert werden. Für die Version, die auf dem ftp-Server sunsite.unc.edu bzw. einem der Mirrors vorhanden ist, ist dies bereits geschehen (Konfiguration ohne Shadow-Passwort-Unterstützung).

Nach der Eingabe von "make" werden die Binärdateien compiliert. Nachdem diese erfolgreich erzeugt wurden, werden nach der Eingabe von "make install" die Binärdateien sowie die Manual Pages in den Verzeichnissen "/usr/local/samba" bzw. "/usr/local/man" installiert. Die ausführbaren Dateien befinden sich nun im Verzeichnis "/usr/local/samba/bin", die Konfigurationsdateien in "/usr/local/samba/lib" und die Dateien, die zur Laufzeit erzeugt werden (z.B. Logdateien) in "/usr/local/samba/var".

Falls Samba bereits installiert war, werden die alten Binärdateien mit einer ".old"-Erweiterung umbenannt. Wenn die neu installierte Version nicht funktionieren sollte, kann man leicht mittels "make revert" wieder zur alten Version zurückkehren.

Im Verzeichnis "/usr/local/samba/bin" sollten sich nun folgende Programme befinden:


Progammname Funktion
smbd Der Samba-Server. Hier werden Anfragen auf Dienste anhand der Informationen in der Konfigurationsdatei bedient.
nmbd Der NetBIOS Nameserver. Dieses Programm übersetzt Anfragen von Rechnernamen in die zugehörige IP-Adresse.
smbclient Dies ist ein Client-Programm für Unix-basierte Rechner. Man kann mit dessen Hilfe auf Dienste von Samba-Rechnern, aber auch auf geteilte Dienste von Windows-Rechnern zugreifen.
testprns Ein kleines Programm zur Überprüfung der Druckerkonfiguration.
testparm Überprüft die Konfigurationsdatei auf eventuelle Fehler.
smbprint Ein Shell-Script, das Drucken auf Windows-Rechnern ermöglicht, die ihre(n) Drucker zur Nutzung im Netzwerk freigegeben haben.
smbstatus Ein Programm, das Statusinformationen anzeigt, falls diese aufgezeichnet wurden (siehe 2.2.1 Globale Einstellungen).
Tabelle 2.1 Samba-Binaries und deren Bedeutung.

2.2 Konfiguration von Samba

Die Konfiguration wird in der Datei "/usr/local/samba/lib/smb.conf" gespeichert. Zu diesem Thema ist auch eine ca. fünfzigseitige ManPage vorhanden, die alle Optionen ausführlich beschreibt. Im Folgenden werde ich nur auf die wichtigsten Optionen eingehen, die zur Einrichtung wirklich notwendig sind, und die meisten Fälle der Praxis abdecken. Die ManPages kann man mittels dem Befehl "man smb.conf" abrufen und sich damit alle verfügbaren Einstellungsmöglichkeiten anzeigen und erläutern lassen.

Die Datei "smb.conf" ist ähnlich aufgebaut wie ".ini"-Dateien von Windows. Sie besteht aus Abschnittsüberschriften in eckigen Klammern und nachfolgend Einstellungen für diesen Abschnitt. Die einfachste nützliche Konfiguration hierbei sieht wie folgt aus:

[homes]
        comment         = Home-Verzeichnisse
        guest ok        = false
        writable        = yes

Mit dieser Konfiguration können Benutzer, die bereits ein Account auf dem Samba-Rechner haben, bequem auf die Dateien in ihrem Home-Verzeichnis zugreifen.

Die Werte "0", "false" und "no" bzw. "1", "true" und "yes" für boolesche Optionen können synonym verwendet werden. Spaces bzw. Tabulatorschritte zwischen den einzelnen Schlüsselwörtern sowie Groß- bzw. Kleinschreibung werden ignoriert. Die Namen der Abschnitte können bis auf drei frei gewählt werden, da den Sektionen [global], [homes] und [printers] besondere Bedeutungen zukommen, die ich im Folgenden noch erklären werde. Namen von Benutzern, die auf den Server zugreifen wollen, müssen in der Datei /etc/passwd vorhanden sein, auch wenn sie kein Account auf dem Server besitzen, da Samba die Benutzerautorisierung anhand dieser Datei vornimmt.

Ob die Einstellungen in der Konfigurationsdatei korrekt sind, läßt sich mit Hilfe des Programms "testparm" ermitteln. Dieses Programm arbeitet die Konfigurationsdatei ab und gibt bei erfolgreichem Abschluß die konfigurierten Dienste aus. Bei fehlerhaften Einträgen werden diese angezeigt und man kann sie entsprechend korrigieren.

2.2.1 Globale Einstellungen

Einstellungen im Abschnitt [global] beziehen sich auf die allgemeine Verhaltensweise von Samba. Hier nun ein Beispiel für diesen Abschnitt:

[global]
        comment         = Globale Einstellungen
        protocol        = NT1
        printing        = SYSV
        status          = Yes
        password level  = 2 

Diese Einstellungen legen die SMB-Protokoll-Version (NT1) und die Art wie Drucker angesprochen werden (SYSV) fest. Durch die Einstellung "status = Yes" wird bestimmt, daß Informationen über den Zustand des Servers in einer Statusdatei (im Verzeichnis "/usr/local/samba/var") abgelegt werden, die mit dem Programm "smbstatus" angezeigt werden können.

Eine wichtige Option ist "password level". Da LAN-Manager-Clients die Passwörter grundsätzlich in Großbuchstaben umwandeln (außer bei der Verwendung des Protokolls COREPLUS), muß Samba alle möglichen Kombinationen von Groß- und Kleinbuchstaben für die Passwörter testen. Diese Option bestimmt nun die maximale Anzahl der Zeichen, die im Passwort groß geschrieben sein dürfen. Dies schränkt die Anzahl der zu versuchenden Buchstaben-Kombinationen ein und beschleunigt den Prozeß der Anmeldung auf dem Samba-Server.

2.2.2 Einrichten von geteilten Verzeichnissen

Ich will das Einrichten von geteilten Verzeichnissen am Beispiel einer Seminararbeit demonstrieren, die von den Benutzern Max, Moritz und Fritz erstellt werden muß. Auf dem Linux-Rechner muß ein Verzeichnis eingerichtet werden, das die Daten der Arbeit enthält (z.B. "/samba/seminar"). Um den Dreien nun den Zugriff auf das Verzeichnis zu ermöglichen, muß folgendes in der Datei "smb.conf" eingetragen werden:

[seminar7]
        comment         = Seminararbeit 7
        user            = max,moritz,fritz
        only user       = True
        path            = /samba/seminar
        writable        = Yes
        max connections = 2

Der geteilte Dienst "seminar" kann nun einem Laufwerksbuchstaben auf dem Windows-Rechner zugeordnet werden. Dabei haben zu diesem Dienst nur die angegebenen Benutzer Zugriff (only user - Option), was auch zur logischen Folge hat, das maximal drei Benutzer auf einmal (max connections) diesen Dienst in Anspruch nehmen können.

Um Benutzern, die ein Account auf dem Samba-Rechner besitzen, Zugang zu ihrem Home-Verzeichnis zu ermöglichen, wird der Abschnitt [homes] verwendet, wie ich schon im einführenden Teil erläutert hatte.

Mit der Option "mangled names" wird eingestellt, ob Dateinamen, die nicht der DOS-Norm "Name (8 Zeichen).Erweiterung (3 Zeichen)" entsprechen, umgeformt werden sollen oder einfach übergangen werden. Die Option "mangling char" wählt das Zeichen aus, das zur Namensverkürzung verwendet wird (Standardeinstellung: ~).

[seminar7]
        comment         = Seminararbeit 7
        ...
        mangled names   = 1
        mangling char   = °
        ...

In diesem Beispiel würde der Dateiname slackware-2.1.4 unter Windows als slack°1.4 erscheinen.

2.2.3 Einrichten von geteilten Druckern

Der allgemeine Abschnitt [printers] dient dazu, die Drucker unter den selben Namen wie sie auf dem Linux-Rechner (in der Datei "/etc/printcap") definiert sind, zu benutzen. Ein typisches Beispiel hierfür wäre:

[printers]
        comment         = Globale Druckereinstellungen
        public          = Yes
        path            = /usr/spool/pub
        printable       = Yes

Jeder Benutzer kann jetzt jeden Drucker das Servers ansprechen (public = Yes). Die Dateien, die vom Client aus gedruckt werden sollen, werden im Verzeichnis "/usr/spool/pub" abgelegt. Der Benutzer darf jedoch nicht direkt in das Verzeichnis schreiben (writable = No), sondern diese Aufgabe wird von Samba übernommen (printable = Yes).

Hinweis: Das angegebene Verzeichnis muß für jeden Benutzer alle Zugriffsrechte aufweisen (zu Erreichen durch den Befehl "chmod 777 /var/spool/pub").

Um spezielle Drucker zu definieren, die nur von bestimmten Personen verwendet werden dürfen, muß ein neuer Abschnitt definiert werden, der wie folgt aussehen kann (vgl. auch Abschnitt 2.2.2 Einrichten von geteilten Verzeichnissen):

[laserjet]
        comment         = HP Laserjet 4M
        printer         = laserjet
        users           = max,moritz,fritz
        only user       = True
        printable       = True
        public          = False
        path            = /var/spool/pub

Hier können die Benutzer Max, Moritz und Fritz nun exklusiv auf den Dienst laserjet zugreifen und das Resultat ihrer Seminararbeit zu Papier bringen. Es wird der Drucker verwendet, der in der Datei "/etc/printcap" als "laserjet" definiert ist.

Die Befehle zum Drucken bzw. Löschen eines Druckauftrages sowie Art der Anzeige der Druckerwarteschlange können auch verändert werden. Im folgenden Beispiel werden die zusätzlichen Befehle aufgezeigt:

[ascii2ps]
        comment         = ASCII auf Postscript
        ...
        print command   = /usr/bin/mpage -2 %s | /usr/bin/lpr -P%p
        lpq command     = /usr/bin/lpq %p
        lprm command    = /usr/bin/lprm -P%p %j

Hierbei enthalten die Variablen %s den Namen der zu druckenden Datei, %p den Druckernamen und %j die Druckauftragsnummer. In diesem Beispiel wird der Laserdrucker zum Drucken von ASCII-Dateien im Postscript-Format verwendet. Es sollen zwei Seiten auf einem Blatt erscheinen, was mit dem Befehl "mpage -2" erreicht wird. Die Art der Anzeige der Warteschlange, sowie der Befehl zum Löschen eines Druckauftrages enthalten Standard-Einstellungen.

Mit dem Programm "testprns" kann man zusätzlich noch überprüfen, ob die angegebenen Namen der Drucker in der Konfigurationsdatei gültig sind.

2.2.4 Browsing

Samba stellt die Möglichkeit zur Verfügung, einem Client sämtliche geteilte Dienste aufzulisten. Ist dies nicht erwünscht, d.h. nur Benutzer, die den Namen von bestimmten Diensten kennen, sollen auch von diesen Kenntnis haben, kann dies mit der Option

[EinDienst]
        comment         = Dienstbeschreibung
        ...
        browseable      = No
        ...

ausgeschaltet werden. Auf diese Weise können einzelne oder auch alle (wenn die Option im [global]-Abschnitt angegeben wird) Dienste versteckt werden.

Es handelt sich hierbei allerdings eine sehr nützliche Eigenschaft, da man beim Anmelden von Windows aus automatisch eine Liste der zur Verfügung stehenden Dienste erhält und den gewünschten dann leicht mit einem Maus-Klick auswählen kann. Aus diesem Grund sollte man nur bei erhöhtem Sicherheitsbedarf auf diese Möglichkeit verzichten.

2.2.5 Initialisieren bzw. Beenden von Diensten

Manche Dienste benötigen zu Ihrer Laufzeit bestimmte Ressourcen, wie z.B. eine CD-ROM. Damit diese Ressource nun bei der Anforderung des Dienstes zur Verfügung gestellt werden kann und bei dessen Beendigung wieder freigegeben wird, existieren die Optionen "preexec" und "postexec". Das mounten bzw. unmounten einer CD-ROM am Beginn bzw. Ende des Dienstes würde wie folgt realisiert:

[seminar7]
        comment         = Seminararbeit 7
        ...
        preexec         = mount /cdrom
        postexec        = umount /cdrom
        ...

2.2.6 Definierte Variablen

Um die Konfiguration flexibler zu gestalten, sind folgende Variablen definiert:

Variable Bedeutung
%S Der Name des aktuellen Dienstes.
%P Der Pfad des aktuellen Dienstes.
%u Der Name des Benutzers des aktuellen Dienstes.
%H Das Home-Verzeichnis des aktuellen Benutzers (%u).
%v Die verwendete Samba-Version.
%h Der Name des Samba-Rechners.
%m Der NetBIOS-Name des Client-Rechners.
%M Der Internet-Name des Client-Rechners.
%d Die Prozess-Nummer von smbd.
%a Die Architektur des Client-Rechners (bisher nur erkannt (v1.9.15p8): Samba und Windows f*r Workinggroups, 95 und NT; ansonsten "UNKNOWN").
%I Die IP-Adresse des Client-Rechners.
%T Das aktuelle Datum und Zeit.
Tabelle 3.1 Variablen in smb.conf und deren Bedeutung

Die Verwendung der Variabeln möchte ich nun an zwei Beispielen demonstrieren:

Beispiel 1:

[EinDienst]
        comment         = Dienstbeschreibung
        ...
        path            = /samba/%u
        ...

In diesem Beispiel wird einem Benutzer anhand seiner Kennung ein entsprechendes Arbeitsverzeichnis im Verzeichnis-Ast /samba zugewiesen. Der Benutzer moritz würde also das Verzeichnis /samba/moritz zugeordnet.

Beispiel 2:

[FastASCII]
        comment         = ASCII zweiseitig pro Blatt
        public          = yes
        printer         = laserjet
        printcommand    = mpage -2 -h"%u %T" %s | lpr -P%p

Der Dienst FastASCII aus diesem Beispiel druckt Textdateien zweiseitig pro Blatt versehen mit Benutzernamen und Druckzeitpunkt aus.

2.3 Sicherheitseinstellungen

Um eine gewisse Sicherheit des Samba-Rechners zu gewährleisten, existieren verschiedene Sicherheits-Einstellungen, von denen einige denen des ftp-Daemons ftpd ähneln. Es ist möglich bestimmte Rechner oder Benutzer von der Nutzung der Dienste ein- bzw. auszuschließen. Außerdem können bestimmte Verzeichnis vor einem Zugriff geschützt werden. Abhängig davon, ob sich diese Einstellungen im Abschnitt [global] oder einem anderen, speziellen Abschnitt befinden, sind diese Einstellungen für alle Dienste oder nur für diesen speziellen Dienst gültig.

2.3.1 Zugriffsrechte für bestimmte Rechner

Mit den Optionen "hosts allow" und "hosts deny" ist es möglich nur bestimmten Rechnern Zugriff auf die Dienste von Samba zu gewähren. Im folgenden Beispiel erhalten alle Rechner mit der IP-Adresse 192.168.2.*, jedoch nicht das Gateway mit der Adresse 192.168.2.1 Zugriff auf die Samba-Dienste:

[global]
        comment         = Globale Einstellungen
        ...
        hosts allow     = 192.168.2. except 192.168.2.1
        ...

Das gleiche Resultat kann aber auch durch die folgenden Einstellung erreicht werden:

[EinDienst]
        comment         = Dienstbeschreibung
        ...
        hosts allow     = 192.168.2.
        hosts deny      = 192.168.2.1
        ...

Um nur Rechner zuzulassen, die nur an einem bestimmten Netzwerk mit einer bestimmten Netzmaske angeschlossen sind, muß man folgendermaßen vorgehen (hier am Beispiel der Seminararbeit):

[seminar7]
        comment         = Seminararbeit 7
        ...
        hosts allow     = 192.168.2.0 / 255.255.255.0
        ...

2.3.2 Verzeichnis-Schutz

Um bestimmte Verzeichnisse vor einem Zugriff zu schützen, können diese mit der Option "dont descend" angegeben werden. In diese Verzeichnisse kann zwar gewechselt werden, jedoch werden keine Dateien angezeigt (ähnlich einem Verzeichnis auf Linux mit den Zugriffsrechten x--).

[global]
        comment         = Globale Einstellungen
        ...
        dont descend    = /dev, /etc, /proc
        ...

Um einzustellen, ob in Verzeichnisse gewechselt werden darf, die nur als Verweis (link) in einen anderen Teil des Verzeichnisbaumes existieren, kann man die Option "wide links" verwenden:

[global]
        comment         = Globale Einstellungen
        ...
        wide links      = true
        ...

2.3.3 Benutzer-Schutz

Um bestimmte Benutzer mit Sicherheit von der Benutzung eines Dienstes auszuschließen, können diese mit der Option "invalid users" explizit genannt werden:

[seminar7]
        comment         = Seminararbeit 7
        ...
        user            = max,moritz,fritz
        only user       = True
        ...
        invalid users   = axel, klaus, peter, @diplom
        ...

Hier dürfen die Benutzer Axel, Klaus und Peter sowie die Benutzer in der Unix-Gruppe "diplom" nicht auf die Seminararbeit von Max, Moritz und Fritz zugreifen, da die Gefahr besteht, daß sie abschreiben könnten. Es handelt sich hierbei um eine eigentlich unnötige Option, da diese bereits durch die Kombination der Optionen "user" und "only user" (siehe 2.2.2 Einrichten von geteilten Verzeichnissen) abgedeckt ist. Sie ist aber sehr hilfreich, wenn die Definition der erlaubten Benutzer nicht so eindeutig wie in dem obigen Beispiel ist.

Um auch Benutzer zuzulassen, die ein Account ohne Passwort besitzen, kann man die Option "null passwords" verwenden.

[global]
        comment         = Globale Einstellungen
        ...
        null passwords  = true
        ...

Die Option "password level" wurde bereits im Abschnitt 2.2.1 Globale Einstellungen behandelt. Es wird hierbei eingestellt, wieviele Großbuchstaben ein Passwort enthalten darf, da Windows das Passwort nur in Großbuchstaben übermittelt und Samba das Passwort quasi "erraten" muß.

[global]
        comment         = Globale Einstellungen
        ...
        password level  = 2
        ...

Um bei einem Wechsel des genutzten Dienstes sicherzustellen, daß immer noch ein autorisierte Benutzer den neuen Dienst anfordert, kann man die Option "revalidate" verwenden. Sie stellt sicher, daß bei jedem Zugriff des gleichen Benutzers auf einen anderen Dienst das Passwort nochmals abgefragt wird.

[global]
        comment         = Globale Einstellungen
        ...
        revalidate      = true
        ...

2.4. Starten des Servers

Der Server besteht aus zwei Teilen: Das Programm "nmbd" ist für die Zuordnung von Namen zu den entsprechenden Diensten zuständig. Das Programm "smbd", stellt den eigentlichen SMB-Server dar und ist somit das Herz von Samba.

Das Starten des Servers kann auf zwei Arten realisiert werden: Erstens, als Daemon, der immer als Hintergrundprozeß präsent ist oder als Service, der in der Datei "/etc/inetd.conf" eingetragen ist. Im ersten Fall müssen folgenden Zeilen in die Datei "/etc/rc.d/rc.local" eingfügt werden:

# Starten der SMB-Daemons
echo Starting SaMBa...
/usr/local/samba/bin/smbd -D
/usr/local/samba/bin/nmbd -D

Der Parameter "-D" teilt den Programmen mit, daß sie als Daemons im Hintergrund arbeiten sollen und somit die benötigten Ports (139 für smbd und 137 für nmbd) selbst verwalten.

Um die Dateien als Service von inetd laufen zu lassen, müssen in die Datei "/etc/inetd.conf" folgende Zeilen eingefügt werden:

# SMB-Requests
netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd
netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd

Falls die Dienste, die hier angesprochen werden, noch nicht in der Datei "/etc/services" mit einem Port verbunden sind, müssen in dieser Datei noch folgende Zeilen eingefügt werden:

# NETBIOS-Services
netbios-ns 137/tcp      # NETBIOS name service
netbios-ns 137/udp                              *)
netbios-dgm 138/tcp     # NETBIOS datagram
netbios-dgm 138/udp
netbios-ssn 139/tcp     # NETBIOS session       *)
netbios-ssn 139/udp

Nur die Zeilen, die mit einem *) markiert sind, sind wirklich notwendig; die anderen wurden nur der Vollständigkeit halber mit angegeben. In einer normalen Slackware-Distribution von Linux sind diese Einträge in beiden Dateien bereits vorhanden. Man sollte jedoch immer vorsichtshalber überprüfen, ob diese wirklich vorhanden sind.

Der Internet-Daemen "inetd" wird mit dem Befehl "kill -HUP Prozess-Nummer" (wobei die Prozess-Nummer die des Internet-Daemon bezeichnet) neu initialisiert. Jetzt kann eine Anfrage auf Port 139 bzw. 137 über "inetd" von "smbd" bzw. "nmbd" korrekt beantwortet werden, d.h. der SMB-Server kann jetzt seiner Aufgabe nachgehen. Den Server als Daemon im Hintergrund laufen zu lassen, hat den einzigen Vorteil, daß Verbindungs-Anfragen ein wenig schneller bearbeitet werden können, da "smbd" bzw. "nmbd" nicht mehr gestartet werden müssen.

2.5. Testen des Servers

Zum Testen des Servers kann das Programm "smbclient" verwendet werden. Alle verfügbaren Dienste werden mit dem Befehl

smbclient -L Hostname

aufgelistet. War dieser Test erfolgreich, kann man eine ftp-ähnliche Oberfläche mit dem Befehl

smbclient \\Hostname\Dienstname

aufgerufen werden. Manche Unix-Befehls-Interpreter verlangen, daß "Backslashes escaped" (der Rückstrich wird verwendet, um nicht-druckbare Zeichen anzusprechen bzw. einen Zeilenumbruch anzuzeigen) werden müssen, d.h. der Aufruf folgendermaßen aussieht:

smbclient \\\\Hostname\\Dienstname

Falls auch dieser Aufruf funktioniert, d.h. man kann mit den Dateien dieses Dienstes arbeiten, kann die Installation auf den Windows-Clients erfolgen, was ich im nächsten Abschnitt erläuteren möche.


3. Installation in Windows

Für Windows 3.1 und Windows 3.11 (für Workgroups) gibt es zwei verschiedene Vorgehensweisen, da Windows 3.11 bereits netzwerkfähig ist. Die ältere Windows-Version ist durch eine (kostenlose) Aufrüstung außerdem nur in der Lage die zur Verfügung gestellten Dienste zu nutzen, jedoch keine eigenen Dienste zur Verfügung zu stellen. Beiden Versionen fehlen das Netzwerk-Protokoll TCP/IP, dessen Installation ich im Folgenden im Zusammenhang mit der Einrichtung des Clients erklären werde.

3.1 Installation in Windows 3.1

Die Installation unter Windows 3.1 kann nur indirekt durchgeführt werden. Da Windows 3.1 keine Netzwerkunterstützung hat, und von Microsoft (kein mir bekanntes) Paket zur Aufrüstung anbietet, müssen die Netzwerkdienste unter DOS installiert werden. Leider ist es hier auch nicht möglich eigene Drucker oder Verzeichnisse anderen Rechnern zur Verfügung zu stellen, da Microsoft nur einen Client (leider auch nur die englische Version) auf seinem ftp-Server zur Verfügung stellt. Natürlich ist es möglich mit Hilfe des Microsoft LAN-Manager diese Dienste zur Verfügung zu stellen, jedoch möchte ich diese Möglichkeit aus Kostengründen ausschließen.

Auf dem ftp-Server von Microsoft befinden sich die Dateien DSK3-1.EXE und DSK3-2.EXE. Sie müssen in einem leeren Verzeichnis entpackt werden und die Dateien anschließend auf zwei Disketten (Installationsdisketten) kopiert werden. Anschließend muß die Installation mit setup gestartet werden. Die Installation funktioniert weitesgehend automatisch; es wird sogar versucht, die Netzwerkkarte zu erkennen. Da in der Standard-Konfiguration das TCP/IP-Protokoll nicht vorgesehen ist, muß dies während der Installation nachgetragen werden. Die nötigen Änderungen der Dateien config.sys, autoexec.bat, windows.ini und system.ini werden in den meisten Fällen auch automatisch vorgenommen. Kann das Installationsprogramm die Dateien nicht selbst ändern (bei mehreren Konfigurationen in der Datei config.sys oder einem bestehenden Netzwerk-Zusatz für Windows, z.B. Novell NetWare), werden die betreffenden Dateien im Installationsverzeichnis abgelegt und die entsprechenden Systemdateien müssen von Hand geändert werden. In den Dateien hosts bzw. lmhosts müssen noch die IP-Adresse des Linux-Rechners eingetragen werden.

Hinweis: Der Eintrag von IP-Adressen erfolgt hier ohne die trennenden Punkte: Die IP-Adresse 192.168.1.2 muß also als 192 168 1 2 eingetragen werden.

In der Datei protocol.ini muß im Abschnitt [TCPIP] der Eintrag disableDHCP von 0 auf 1 geändert werden. Das Protokoll DHCP (Dynamic Host Configuration Protocol) wird von Windows NT zur Verfügung gestellt und ermöglicht dem Client eine automatische Konfiguration der IP-Adresse, Netzmaske sowie Default-Gateway. Ist kein enstsprechender Server im Netzwerk vorhanden, hängt sich der Client beim Hochfahren auf, da die Suche nach einem solchen Server offensichtlich nicht zeitlich eingeschränkt ist.

Nach einem Neustart des Rechners wird der Client automatisch gestartet. Der Benutzer wird nach seiner Kennung und seinem Passwort gefragt und ist anschließend im Netzwerk eingeloggt. Nach der Eingabe des Befehls net können nun beliebig die Dienste des Samba-Hosts (Drucker und Verzeichnisse) benutzt werden.

3.2 Installation in Windows 3.11 (für Workgroups)

Für die Installation in Windows 3.11 wird das Packet wfwt32.exe benötigt, welches das Netzwerkprotokoll TCP/IP hinzufügt (Quellen für dieses Paket sind in Abschnitt 5, Bezugsquellen, Seite 14 aufgelistet). Bei dem Paket handelt es sich um ein selbstenpackendes Archiv. Es muß in einem leeren Verzeichnis (z.B. c:\temp) entpackt werden und anschließend kann die Installation in Windows beginnen.

Mit dem Programm Netzwerk-Setup aus der Gruppe Netzwerk kann nun das TCP/IP-Protokoll installiert werden. Es müssen die IP-Adresse, die Subnetz-Maske sowie die Gateway-Adresse eingetragen werden. Die Einträge Enable Automatic DHCP Configuration, Primary und Secondary WINS-Server können nur verwendet werden, falls ein Windows-NT-Rechner mit den entsprechenden Diensten DHCP (Dynamic Host Configuration Protocol) und WINS (Windows Internet Name Service) im gleichen Netz vorhanden ist. In diesem Fall kann die IP-Adresse, die Subnetz-Maske und die Gateway-Adresse automatisch eingetragen werden und es können mit Hilfe des Name-Servers Rechner-Namen verwendet werden, die sich nicht in der Datei hosts befinden.

Um statt IP-Adressen Rechnernamen (insbesondere der des Samba-Hosts) verwenden zu können müssen mit Hilfe des Editors die Dateien hosts und networks bearbeitet werden. Das Format ist gleich dem Format auf Unix-Rechnern:

127.0.0.1       localhost
143.93.160.3    nibelung.worms.fh-rpl.de

Für die Datei networks:

localnet        127
worms.fh-rpl.de 143.93

Nach dem Neustart von Windows kann nun auf die Dienste des Samba-Hosts mit Hilfe des Dateimanagers zugegriffen werden. Hier können die Druckerports bzw. Laufwerksbuchstaben den entsprechenden Diensten zugeordnet werden.

3.3 Installation in Windows 95 bzw. NT

Die Installation in Windows 95 bzw NT gestaltet sich leicht, da das TCP/IP-Protokoll bereits im Lieferumfang des Betriebssystems. Es muß lediglich über das Netzwerk-Setup hinzugefügt werden.

Die Konfiguration des TCP/IP-Protokolls erfolgt analog zu den Einstellungen für Windows 3.11.


4 Glossar

Account Kombination von Benutzername und Passwort, die einen Zugang zu einem (meist Mehrbenutzer-) Rechner ermöglicht.
Client Rechner, der auf die zur Verfügung gestellten Ressourcen eines Servers (siehe unten) zugreift.
DHCP Dynamic Host Configuration Protocol. Wird von Windows-NT-Servern zur Verfügung gestellt, damit Clients die Möglichkeit haben, ihre IP-Adresse, die Subnetz-Adresse und die Gateway-Adresse über das Netzwerk zu erhalten, d.h. automatisch zu konfigurieren.
ftp File Transfer Protokoll. Programm, mit dessen Hilfe Dateien von und zu anderen Rechnern übertragen werden können.
Home-Verzeichnis Verzeichnis, in dem sich die persönlichen Dateien eines Benutzers auf einem Mehrbenutzer-Rechner befinden.
link Querverweis auf eine Datei oder ein Verzeichnis in Unix-Datei-Systemen.
ManPage Anleitung zu Befehlen, die mittels "man Befehlsname" angezeigt werden kann.
mounten Einbinden einer bestimmten Datei-Ressource, z.B. Festplatten, Disketten oder CD-ROMs, in den Verzeichnisbaum eines Unix-Betriebssystems.
Server Rechner, zu dessen Ressourcen Zugang durch ein spezielles Programm (hier: Samba) gewährt wird. Ein Server stellt auch weitere Dienste, z.B. das DHCP-Protokoll eines Windows-NT-Servers zur automatischen Konfiguration der IP-Daten.
Shadow-Passwörter Werden Shadow-Passwörter verwendet, befinden sich die Passwörter für den Linux-Rechner nicht mehr in der Datei "/etc/passwd" sondern werden in einer gesonderten Datei "/etc/shadow" gesichert, die nur der Benutzer root lesen kann. Die Verwendung von Shadow-Passwörtern erhöht die Sicherheit eines Rechners gegen unerlaubten Zugang.
Shell-Script Eine Auflistung von Unix-Befehlen in einer Datei. Wird diese Datei aufgerufen, werden die dort enthaltenen Befehle nacheinander abgearbeitet (vgl. Batch-Dateien unter MS-DOS).
share Ein geteilter Dienst, d.h. eine Ressource (ein Drucker oder ein Verzeichnis), die von einem Server zur Verfügung gestellt wird.
unmounten Entfernen einer bestimmten Datei-Ressource, z.B. Festplatten, Disketten oder CD-ROMs, aus dem Verzeichnisbaum eines Unix-Betriebssystems.
WINS Windows Internet Name Service. Es handelt sich hierbei um die Windows-Variante der von Unix her bekannten Nameservern. Ein Windows-Server übersetzt hierbei auf Anfrage einen Rechner-Namen (z.B. nibelung.worms.fh-rpl.de) in deren IP-Adresse (z.B. 143.93.160.3) und liefert diese Informationen zurück.

5 Bezugsquellen

Bei den Angaben handelt es sich jeweils um eine Aufstellung der Original-ftp-Sites und eines mir bekannten Mirrors in der näheren Umgebung der Fachhochschule in Worms.

5.1 Samba (Version 1.9.15p8 bzw. 1.9.13)

Original: Samba-1.9.15p8

Mirror: Samba-1.9.15p8

Original: Samba-1.9.13

Mirror: Samba-1.9.13

5.2 TCP/IP 32 für Windows für Workgroups

Original: TCP/IP für Windows 3.11

Mirror: TCP/IP für Windows 3.11

5.3 Microsoft Client für MS-DOS

Original: MS-Client für MS-DOS (1)

Original: MS-Client für MS-DOS (2)

Mirror: MS-Client für MS-DOS (1)

Mirror: MS-Client für MS-DOS (2)

Anm.: Es werden beide Dateien benötigt: DSK3-1.EXE und DSK3-2.EXE .


6 Literatur

  1. Horst Tilly, Aufforderung zum Tanz, Unix Open 12/95, S. 87
  2. Michael Kunze, Fischzug, c't 8/95, S. 114
  3. René Meißner, Low-Budget-Netz, c't 10/95, S. 298
  4. Peter Siering, Drahtseiltänzer, c't 1/95, S. 84
  5. Kristian Köhntopp, Symbiose, iX 1/96, S. 52
  6. *.txt, *.doc-Dateien, ftp://sunsite.unc.edu/pub/Linux/system/Network/samba/docs
  7. ManPages von Samba (insbesondere für smb.conf)
  8. Gnu Public License, ftp://prep.ai.mit.edu/