Kapitel 17. Heterogene Netzwerke

Inhaltsverzeichnis

17.1. Samba
17.2. Netatalk
17.3. NetWare-Emulation mit MARSNWE

Zusammenfassung

Linux kann nicht nur mit anderen Linux-Rechnern, sondern auch mit Windows- und Macintosh-Rechnern sowie über Novell-Netzwerke kommunizieren. Dieses Kapitel zeigt Ihnen, worauf Sie dabei achten müssen und wie Sie entsprechende heterogene Netzwerke konfigurieren können.

17.1. Samba

17.1.1. Einführung in Samba

Mit dem Programmpaket Samba kann ein Unix-Rechner zu einem File- und Printserver für DOS-, Windows- und OS/2 Rechner ausgebaut werden. Das Samba-Projekt wird vom Samba Team betreut und wurde ursprünglich von dem Australier Andrew Tridgell entwickelt.

Samba ist inzwischen ein sehr umfassendes Produkt, so dass wir an dieser Stelle lediglich einen Einblick in seine Funktionalität liefern können. Jedoch kommt die Software mit umfassender digitaler Dokumentation. Diese besteht einerseits aus Handbuchseiten — zwecks Umfang rufen Sie bitte apropos samba auf der Kommandozeile auf — und andererseits aus Dokumenten und Beispielen, die Sie bei installiertem Samba auf Ihrem System unter /usr/share/doc/packages/samba finden. Dort finden Sie im Unterverzeichnis examples auch die kommentierte Beispielkonfiguration smb.conf.SuSE.

Beginnend mit SUSE LINUX Version 9.1 steht Ihnen das Paket samba in der Version 3 zur Verfügung. Einige wichtige Neuerungen dieses Paketes sind:

  • Active Directory support.

  • Unicode Support wurde stark verbessert.

  • Die internen Authentifizierungsmechanismen wurden komplett überarbeitet.

  • Verbesserte Unterstützung für das Windows 200x/XP Drucksystem.

  • Konfiguration als Mitglieds-Server in Active-Directory-Domänen.

  • NT4-Domänenübernahme um von einer NT4 Domäne zu einer Samba Domäne zu migrieren.

Samba benutzt das SMB-Protokoll (Server Message Block), das auf den NetBIOS™ Diensten aufgesetzt ist. Auf Drängen der Firma IBM gab die Firma Microsoft das Protokoll frei, sodass auch andere Software-Hersteller Anbindungen an ein Microsoft-Domain-Netz finden konnten. Samba setzt das SMB- auf das TCP/IP-Protokoll auf. Entsprechend muss auf allen Clients das Protokoll TCP/IP installiert sein. Wir empfehlen die ausschließliche Verwendung von TCP/IP auf den Clients.

[Tip]Migration nach Samba3

Wenn Sie von Samba 2.x nach Samba 3 migrieren möchten, so sind einige Besonderheiten zu beachten. Diesem Thema wurde in der Samba-HOWTO-Collection ein eigenes Kapitel gewidmet. Nach der Installation des Paketes samba-doc finden Sie das HOWTO unter /usr/share/doc/packages/samba/Samba-HOWTO-Collection.pdf.

17.1.1.1. NetBIOS

NetBIOS ist eine Softwareschnittstelle (API), die zur Rechnerkommunikation entworfen wurde. Dabei wird ein Namensdienst name service bereitgestellt, der zur gegenseitigen Identifikation der Rechner dient. Für die Namensvergabe gibt es keine zentrale Instanz, die Rechte vergeben oder überprüfen könnte. Jeder Rechner am Netz kann beliebig Namen für sich reservieren, sofern diese noch nicht vergeben sind. Die NetBIOS-Schnittstelle kann auf unterschiedlichen Netzarchitekturen implementiert werden. Eine Implementation erfolgt relativ „dicht“ an der Netzwerkhardware und nennt sich NetBEUI™. NetBEUI wird häufig als NetBIOS™ bezeichnet. Netzwerkprotokolle, mit denen NetBIOS implementiert wurde, sind IPX (NetBIOS über TCP/IP) von Novell und TCP/IP.

Die NetBIOS-Namen, die auch bei der Implementation von NetBIOS mittels TCP/IP vergeben werden, haben nichts mit den in der Datei /etc/hosts oder per DNS vergebenen Namen zu tun. NetBIOS ist ein vollständig eigener Namensraum. Es empfiehlt sich jedoch zwecks vereinfachter Administration, zumindest für die Server NetBIOS-Namen zu vergeben, die ihrem DNS-Hostnamen entsprechen. Für einen Samba-Server ist das die Voreinstellung.

17.1.1.2. Clients

Alle gängigen Betriebssysteme wie Mac OS X, Windows und OS/2 unterstützen das SMB-Protokoll. Auf den Rechnern muss das TCP/IP Protokoll installiert sein. Für die verschiedenen UNIX Versionen stellt Samba™ einen Client zur Verfügung. Für Linux gibt es zudem ein Dateisystem-Kernel-Modul für SMB, dass das Einbinden von SMB-Ressourcen auf Linux-Systemebene gestattet.

SMB-Server stellen den Clients Plattenplatz in Form von Freigaben, so genannten „Shares“ zur Verfügung. Dabei umfasst ein Share ein Verzeichnis mit allen Unterverzeichnissen auf dem Server. Es wird unter einem eigenen Namen exportiert und kann von Clients unter diesem Namen angesprochen werden. Dabei kann der Sharename frei vergeben werden. Er muss nicht dem Namen des exportierten Verzeichnisses entsprechen. Ebenso wird einem exportierten Drucker ein Name zugeordnet, unter dem Clients darauf zugreifen können.

17.1.2. Installation und Konfiguration des Servers

Wenn Sie Samba™ als Server einsetzen möchten, installieren Sie das Paket samba. Manuell werden die für Samba™ erforderlichen Dienste mit rcnmb start & & rcsmb start gestartet und mit rcsmb stop & & rcnmb stop beendet.

Die zentrale Konfigurationsdatei von Samba ist /etc/samba/smb.conf. Die Datei kann man logisch in zwei Bereiche trennen. In der so genannten [global]-Section werden zentrale und übergreifende Einstellungen vorgenommen. Im zweiten Teilbereich, den [share]-Sections, werden die einzelnen Datei- und Drucker-Freigaben definiert. Mittels dieses Vorgehens können Details der Freigaben unterschiedlich oder in der [global]-Sektion übergreifend gesetzt werden. Letzteres trägt zur Übersichtlichkeit der Konfigurationsdatei bei.

17.1.2.1. global-Section anhand der Beispielkonfiguration

Die folgenden Parameter der global-Section sind den Gegebenheiten Ihres Netzwerkes anzupassen, damit Ihr Samba™-Server im Windows-Netz von anderen Systemen per SMB erreichbar ist.

workgroup = TUX-NET

Der Samba™-Server wird mittels dieser Zeile einer Arbeitsgruppe zugeordnet. Zum Betrieb passen Sie TUX-NET an die bei Ihnen vorhandene Arbeitsgruppe an oder konfigurieren Ihren Clients auf den hier gewählten Wert. Ihr Samba™-Server erscheint bei dieser Konfiguration mit seinem DNS-Namen in der gewählten Arbeitsgruppe, insoweit der Name noch nicht vergeben ist.

Sollte der Name bereits vergeben sein, kann er mit netbios name = MEINNAME abweichend vom DNS-Namen gesetzt werden. Details zu diesem Parameter sind per man smb.conf verfügbar.

os level = 2

Anhand dieses Parameters entscheidet Ihr Samba™-Server, ob er versucht, LMB Local Master Browser für seine Arbeitsgruppe zu werden. Der im Beispiel genutzte Wert ist bewusst niedrig gewählt, damit ein vorhandenes Windows-Netz nicht durch einen falsch konfigurierten Samba™-Server gestört wird. Details zu diesem wichtigen Thema finden Sie in den Dateien BROWSING.txt und BROWSING-Config.txt im Unterverzeichnis textdocs der Paketdokumentation.

Wird nicht bereits ein SMB-Server — zum Beispiel Windows NT, 2000 Server — betrieben und soll der Samba™-Server im lokalen Netz die Namen der verfügbaren Systeme vorhalten, so erhöhen Sie den os level auf einen höheren Wert (zum Beispiel 65), um die Wahl zum LMB zu gewinnen.

Bei der Änderung dieses Wertes sollten Sie besonders vorsichtig sein, da Sie den Betrieb eines vorhandenen Windows-Netzes stören können. Reden Sie mit Ihrem Administrator, testen Sie Änderungen zuerst in einem isolierten Netz oder zu unkritischen Zeiten.

wins support und wins server

Wenn Sie den Samba-Server in ein vorhandenes Windows-Netz integrieren möchten, in dem bereits ein WINS-Server betrieben wird, benötigen Sie den Parameter wins server. Dieser Parameter muss auf die IP-Adresse Ihres WINS-servers gesetzt werden.

Wenn Ihre Windows-Systeme in getrennten Sub-Netzen betrieben werden, und sich gegenseitig sehen sollen, benötigen Sie einen WINS-Server. Um den Samba-Server zum WINS-Server zu machen, benötigen Sie die Option wins support = Yes. Achten Sie unbedingt darauf, dass Sie diesen Parameter ausschließlich bei einem Samba-Server aktivieren.

In Ihrer smb.conf dürfen nie beide Optionen, wins server und wins support, zusammen aktiviert werden.

17.1.2.2. Freigaben

In den folgenden Beispielen werden einerseits das CD-ROM-Laufwerk und andererseits die Verzeichnisse der Nutzer, homes für SMB-Clients freigegeben.

[cdrom]

Um die versehentliche Freigabe einer CD-ROM zu verhindern, sind alle erforderlichen Zeilen dieser Freigabe mittels Kommentarzeichen – hier Semikolons – deaktiviert. Wollen Sie das CD-ROM-Laufwerk per Samba™ freigeben, entfernen Sie bitte die Semikolons in der ersten Spalte.

Beispiel 17.1. CD-ROM-Freigabe

;[cdrom]
;      comment = Linux CD-ROM
;       path = /media/cdrom
;       locking = No
       
[cdrom] und comment

Der Eintrag [cdrom] ist der den SMB-Clients sichtbare Freigabename. Mittels comment kann den Clients eine aussagekräftigere Bezeichnung der Freigabe mitgeteilt werden.

path = /media/cdrom

Mit path wird das Verzeichnis media/cdrom exportiert.

Diese Art der Freigabe ist aufgrund einer bewusst restriktiv gewählten Voreinstellung lediglich für die auf dem System vorhandenen Nutzer verfügbar. Soll die Freigabe für jedermann bereitgestellt werden, ermöglicht man dies mit der zusätzlichen Zeile guest ok = Yes. Aufgrund der sich daraus ergebenden Lesemöglichkeit für jedermann, sollte man mit dieser Einstellung sehr vorsichtig umgehen und sie allein auf ausgesuchte Freigaben anwenden. Für die Verwendung in der [global]-Section gilt besondere Vorsicht.

[homes]

Eine besondere Stellung nimmt die so genannte [homes]-Freigabe ein. Hat der Benutzer auf dem Linux-File-Server einen gültigen Account und ein eigenes Home-Verzeichnis, so kann sich sein Client bei gültiger Nutzerkennung und Passwort mit diesem verbinden.

Beispiel 17.2. Freigabe homes

[homes]
        comment = Home Directories
        valid users = %S
        browseable = No
        read only = No
        create mask = 0640
        directory mask = 0750
       
[homes]

Insoweit keine ausdrückliche Freigabe mit dem Freigabenamen des sich verbindenden Nutzers existiert, wird aufgrund der [homes]-Freigabe dynamisch eine Freigabe erzeugt. Dabei ist der Freigabename identisch mit dem Nutzernamen.

valid users = %S

Das %S wird nach erfolgreichem Verbindungsaufbau durch den konkreten Freigabenamen ersetzt. Da dies bei der [homes]-Freigabe immer mit dem Nutzernamen identisch ist, werden die zulässigen Nutzer auf den Eigentümer des Nutzerverzeichnisses beschränkt. Dies ist eine Möglichkeit, um den Zugriff allein dem Eigentümer zu gestatten.

browseable = No

Durch diese Einstellung ist die [homes]-Freigabe nicht in der Liste der Freigaben sichtbar.

read only = No

Samba™ verbietet in der Voreinstellung den Schreibzugriff auf exportierte Freigaben, read only = Yes. Soll also ein Verzeichnis als schreibbar freigegeben werden, muss man den Wert read only = No setzten. Dies ist gleichbedeutend mit writeable = Yes.

create mask = 0640

Nicht auf MS Windows NT basierende Systeme kennen das Konzept der Unix-Zugriffsrechte nicht. Daher können sie bei der Erstellung von Dateien auch nicht angeben, mit welchen Zugriffsrechten dies zu geschehen hat. Der Parameter create mask legt fest, mit welchen Zugriffsrechten Dateien angelegt werden. Dieses gilt nur für schreibbare Shares. Konkret wird hier dem Eigentümer das Lesen und Schreiben und Mitgliedern der primären Gruppe des Eigentümers das Lesen erlaubt. Bitte beachten Sie, dass valid users = %S selbst dann den lesenden Zugriff verhindert, wenn die Gruppe leseberechtigt ist. Entsprechend muss bei gewünschtem Lese- oder Schreibzugriff für die Gruppe die Zeile valid users = %S deaktiviert werden.

17.1.2.3. Security Level

Das SMB-Protokoll kommt aus der DOS-/Windows-Welt und berücksichtigt die Sicherheitsproblematik direkt. Jeder Zugang zu einem Share kann mit einem Passwort geschützt werden. SMB kennt drei verschiedene Möglichkeiten der Berechtigungsprüfung.

Share Level Security (security = share):

Bei der Share Level Security wird einem Share ein Passwort fest zugeordnet. Jeder, der dieses Passwort kennt, hat Zugriff auf das Share.

User Level Security (security = user):

Diese Variante führt das Konzept des Benutzers in SMB ein. Jeder Benutzer muss sich bei einem Server mit einem Passwort anmelden. Nach der Authentifizierung kann der Server dann, abhängig vom Benutzernamen, Zugang zu den einzelnen, exportierten Shares gewähren.

Server Level Security (security = server):

Samba™ behauptet gegenüber den Clients, im User Level Mode zu arbeiten. Allerdings übergibt es alle Passwortanfragen an einen anderen User Level Mode Server, der die Authentifizierung übernimmt. Diese Einstellung erwartet einen weiteren Parameter (password server =).

Die Unterscheidung zwischen Share, User und Server Level Security gilt für den gesamten Server. Es ist nicht möglich, einzelne Shares einer Server-Konfiguration per Share Level Security und andere per User Level Security zu exportieren. Jedoch können Sie auf einem System pro konfigurierter IP-Adresse einen eigenen Samba™-Server betreiben.

Weitere Infos zu diesem Thema finden Sie in der Samba-HOWTO-Collection. Für mehrere Server auf einem System beachten Sie bitte die Parameter interfaces und bind interfaces only.

[Tip]Tipp

Für die einfache Administration des Samba-Servers gibt es noch das Programm swat. Es stellt ein einfaches Webinterface zur Verfügung, mit dem Sie bequem den Samba-Server konfigurieren können. Rufen Sie in einem Webbrowser http://localhost:901 auf und loggen Sie sich als Benutzer root ein. Bitte beachten Sie, dass swat auch in den Dateien /etc/xinetd.d/samba und /etc/services aktiviert ist. Hierzu müssen Sie in /etc/xinetd.d/samba den Parameter disable auf noändern. Weitere Informationen zu swat finden Sie in der Manualpage von swat.

17.1.3. Samba als Anmelde-Server

In Netzwerken, in denen sich überwiegend Windows-Clients befinden, ist es oft wünschenswert, dass sich die Benutzer nur mit gültigem Account und Passwort anmelden dürfen. Dies kann mit Hilfe eines Samba-Servers realisiert werden. In einem Windows basierten Netzwerk übernimmt ein Windows-NT-Server diese Aufgabe, dieser ist als so genannter Primary Domain Controller (PDC) konfiguriert. Es müssen Einträge in die [global]-Section der smb.conf vorgenommen werden wie in Beispiel 17.3. “Global-Section in smb.conf”.

Beispiel 17.3. Global-Section in smb.conf

[global]
        workgroup = TUX-NET
        domain logons = Yes
        domain master = Yes
   

Werden verschlüsselte Passwörter zur Verifizierung genutzt - dies ist Standard mit gepflegten MS Windows 9x Versionen, MS Windows NT 4.0 ab service pack 3 und allen späteren Produkten -, muss der Samba Server damit umgehen können. Der Eintrag encrypt passwords = yes in der [global]-Section ermöglicht dies und ist bei samba ab Version 3 default. Außerdem müssen die Benutzeraccounts bzw. die Passwörter in eine Windows konforme Verschlüsselungsform gebracht werden. Das geschieht mit dem Befehl smbpasswd -a name. Da nach dem Windows NT Domänenkonzept auch die Rechner selbst einen Domänen-Account benötigen, wird dieser mit den folgenden Befehlen angelegt:

Beispiel 17.4. Anlegen eines Maschinenaccounts

useradd rechnername\$
smbpasswd -a -m rechnername
   

Bei dem Befehl useradd wurde ein Dollarzeichen hinzugefügt. Der Befehl smbpasswd fügt dieses bei der Verwendung des Parameters -m selbst hinzu.

In der kommentierten Beispielskonfiguration /usr/share/doc/packages/samba/examples/smb.conf.SuSE sind Einstellungen vorgesehen, die diese Arbeiten automatisieren.

Beispiel 17.5. Automatisiertes Anlegen eines Maschinenaccounts

add machine script = /usr/sbin/useradd -g machines \
                  -c "NT Machine Account" -d \
                  /dev/null -s /bin/false %m\$
   

Damit dieses Skript von Samba richtig ausgeführt werden kann, benötigen Sie noch einen Samba Benutzer mit Administrator Rechten. Fügen Sie hierzu die Gruppe ntadmin dem ausgewählten Benutzer hinzu. Danach können Sie alle Benutzer dieser Unix Gruppe zu den „Domain Admins“ mit folgendem Befehl hinzufügen:

net groupmap add ntgroup="Domain Admins" unixgroup=ntadmin

Mehr Informationen hierzu finden Sie in der Samba-HOWTO-Collection im Kapitel 12: /usr/share/doc/packages/samba/Samba-HOWTO-Collection.pdf.

17.1.4. Installation der Clients

Clients können den Samba-Server nur über TCP/IP erreichen. NetBEUI oder NetBIOS über IPX sind mit Samba nicht verwendbar.

17.1.4.1. Windows 9x/ME

Windows 9x/ME bringt die Unterstützung für TCP/IP bereits mit. Wie bei Windows for Workgroups wird sie jedoch in der Standardinstallation nicht mitinstalliert. Um TCP/IP nachzuinstallieren, wählt man im Netzwerk-Applet der Systemsteuerung Hinzufügen... unter Protokolle TCP/IP von Microsoft. Nach einem Neustart des Windows-Rechners können Sie den Samba™-Server durch Doppelklick auf das Desktop-Symbol für die Netzwerkumgebung finden.

[Tip]Tipp

Um einen Drucker auf dem Samba-Server zu nutzen, sollte man den allgemeinen oder den Apple PostScript-Druckertreiber von der jeweiligen Windows-Version installieren; am besten verbindet man dann mit der Linux Drucker-Queue, die PostScript als Input Format akzeptiert.

17.1.5. Optimierung

Eine Möglichkeit der Optimierung bietet socket options. Die Voreinstellung in der mitglieferten Beispielkonfiguration orientiert sich an einem lokalen Ethernet-Netzwerk. Weitere Details finden Sie in der Manualpage von smb.conf im Abschnitt socket options und der Manualpage von socket(7). Weitere Informationen hierzu sind in der Samba-HOWTO-Collection im Kapitel Samba performance tuning enthalten.

Die Standardkonfiguration in /etc/samba/smb.conf versucht sinnvolle Werte vorzuschlagen und orientiert sich dabei an Voreinstellungen des Samba™-Teams. Eine fertige Konfiguration ist jedoch insbesondere hinsichtlich der Netzwerkkonfiguration und des Arbeitsgruppennamens nicht möglich. In der kommentierten Beispielkonfiguration examples/smb.conf.SuSE finden Sie zahlreiche weiterführenden Hinweise, die bei der Anpassung an lokale Gegebenheiten hilfreich sind.

[Tip]Tipp

Das Samba™-Team liefert in der Samba-HOWTO-Collection einen Abschnitt zur Fehlersuche. In Part V ist außerdem eine Schritt-für-Schritt-Anleitung zur Überprüfung der Konfiguration enthalten.