Kapitel 32. Samba

Inhaltsverzeichnis

32.1. Konfiguration des Servers
32.2. Samba als Anmeldeserver
32.3. Konfiguration des Samba-Servers mit YaST
32.4. Konfiguration der Clients
32.5. Optimierung

Zusammenfassung

Mit Samba kann ein Unix-Rechner zu einem Datei- und Druckserver für DOS-, Windows- und OS/2-Rechner ausgebaut werden. Dieses Kapitel führt Sie in die Grundlagen der Sambakonfiguration ein und beschreibt die YaST-Module, mit deren Hilfe Sie Samba in Ihrem Netzwerk konfigurieren können.

Samba ist inzwischen ein sehr umfassendes Produkt. Dieses Kapitel vermittelt einen Einblick in seine grundlegende Funktionalität. Details finden Sie allerdings in der mitgelieferten digitalen 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.

Das Paket samba steht Ihnen in der Version 3 zur Verfügung. Einige wichtige Neuerungen dieses Paketes sind:

[Tip]Migration nach Samba3

Wenn Sie von Samba 2.x nach Samba 3 migrieren möchten, sind einige Besonderheiten zu beachten. Diesem Thema wurde in der Samba-HOWTO-Kollektion 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.

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.

NetBIOS ist eine Softwareschnittstelle (API), die zur Rechnerkommunikation entworfen wurde. Dabei wird ein Namensdienst (engl. 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.

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.

32.1. 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 [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.

32.1.1. Die global-Section

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 (engl. 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. 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.

32.1.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 32.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 32.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.

32.1.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.


SUSE LINUX Administrationshandbuch 9.3