Samba, 
2. Auflage

Samba, 2. Auflage

Von Jay Ts, Robert Eckstein, and David Collier-Brown
2. Auflage, August 2003
O'Reilly Verlag, ISBN: 3-89721-359-1
www.oreilly.de/catalog/samba2ger/

Dieses Buch ist unter der GNU Free Documentation License (FDL) erschienen. Bitte beachten Sie den Text der GNU FDL.


TOC PREV NEXT INDEX

Kapitel 2

Samba auf einem Unix-System installieren

Sie wissen jetzt, was Samba für Sie und Ihre Benutzer leisten kann. Nun ist es an der Zeit, Ihr Netzwerk einzurichten. Lassen Sie uns mit der Installation von Samba beginnen. Sowohl Samba tanzen als auch Samba installieren lernt man in kleinen Schritten. Dieses Kapitel hilft Ihnen, mit dem richtigen Fuß zu beginnen.

Um es möglichst anschaulich zu gestalten, installieren wir Samba 2.2.6 auf einem Linux-System mit der Kernel-Version 2.4. Die Installationsschritte sind aber auf allen von Samba unterstützten Plattformen identisch.

In der Distribution enthaltene Versionen

Samba ist so populär, dass es bei vielen Unix-Distributionen bereits installiert ist. Falls Sie sich für eine solche Version von Samba entscheiden, können Sie den größten Teil dieses Kapitels überfliegen oder ganz weglassen. Allerdings müssen Sie dann bei dieser Samba-Version sowie den Kompilierungsoptionen bleiben, die der Hersteller für Sie eingestellt hat. Diese Version von Samba kann niemals neuer sein als das Release des Betriebssystems. Sie werden also den neuesten Entwicklungen zwangsläufig immer hinterherhinken. Andererseits können Sie sich sicher sein, dass eine im Paket enthaltene Version korrekt installiert ist. Vermutlich müssen Sie nur einige einfache Veränderungen an der smb.conf-Datei vornehmen, um loslegen zu können. Samba ist inzwischen so gut, dass Sie wahrscheinlich nicht unbedingt die neueste Ausgabe brauchen, um Ihre grundlegenden Ansprüche zu befriedigen. Sie werden deshalb mit einer dem Betriebssystem beigelegten Version durchaus zufrieden sein.

Falls Sie sich für diese Möglichkeit entscheiden, sollten Sie beachten, dass sich Ihre Samba-Dateien, einschließlich der sehr wichtigen smb.conf, an anderen Stellen befinden könnten, als wenn Sie Samba aus einer Binär- oder Quelldistribution installieren würden. Beispielsweise befinden sich bei den Red Hat-, Debian- und Mandrake-Linux-Distributionen die smb.conf und einige andere mit Samba im Zusammenhang stehende Dateien im Verzeichnis /etc/samba.

Ist Samba auf Ihrem System bereits installiert, können Sie mit dem folgenden Befehl feststellen, um welche Version es sich handelt:

$ smbd -V
 
Version 2.2.6
 

(Falls das nicht funktioniert, steht smbd möglicherweise nicht im Suchpfad Ihrer Shell. Wenn es in Ihrer Unix-Variante die Befehle locate oder whereis gibt, benutzen Sie diese, um das smbd-Programm zu finden.)

Sie könnten auch ein systemspezifisches Werkzeug verwenden, um ein Paketverwaltungsprogramm abzufragen. Bei Red Hat Linux geben Sie zum Beispiel den Befehl rpm, um die installierten Samba-Pakete zu ermitteln:

$ rpm -qa | grep samba
 
samba-client-2.0.8-1.7.1
 
samba-2.0.8-1.7.1
 
samba-common-2.0.8-1.7.1
 

Hier sehen Sie, dass es sich um Samba 2.0.8 handelt, aufgeteilt in drei RPM-Pakete (Red Hat Package Manager), im Bundle mit Red Hat 7.1. Haben Sie eine alte Version von Samba, könnten Sie dann zumindest beim Hersteller nach einer neueren Version fragen.

Falls Sie sich ansonsten sicher sind, dass Sie aus einer Binär- oder Quelldistribution heraus installieren werden, können Sie die RPM-Pakete löschen:

# rpm -e samba
 
# rpm -e samba-client
 
# rpm -e samba-common
 

Schauen Sie in die Dokumentation Ihres Systems, um die für Sie passende Methode zu ermitteln, falls Sie kein Red Hat Linux benutzen.

Binär oder Quelle?

Für viele Unix-Plattformen gibt es auch vorkompilierte »binäre« Pakete. Diese Pakete enthalten Binaries für jedes Samba-Programm sowie die Standard-Samba-Dokumentation. Beachten Sie, dass Sie sich zwar eine Menge Zeit und Probleme ersparen, wenn Sie eine Binärdistribution installieren, aber auch einige Punkte bedenken sollten, bevor Sie entscheiden, ob Sie die Binärversion verwenden oder die Quelle selbst kompilieren:

Viele Systeme mit Shared Libraries enthalten ein nettes kleines Werkzeug namens ldd. Dieses Programm teilt Ihnen mit, welche Bibliotheken eine bestimmte Binärversion benötigt und welche Bibliotheken im System diesen Anforderungen genügen. Eine Prüfung des smbd-Programms auf unserer Testmaschine ergab beispielsweise Folgendes:
$ ldd smbd
 
        libdl.so.2 => /lib/libdl.so.2 (0x40026000)
 
        libnsl.so.1 => /lib/libnsl.so.1 (0x4002a000)
 
        libpam.so.0 => /lib/libpam.so.0 (0x40041000)
 
        libc.so.6 => /lib/libc.so.6 (0x40049000)
 
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
 
Inkompatibilitäten zwischen Samba und speziellen Bibliotheken auf Ihrer Maschine sollten in der Dokumentation der Distribution hervorgehoben sein.
Einige wenige Konfigurationsoptionen können Sie mit Kommandozeilen-Optionen zur Laufzeit statt bei der Kompilierung ändern. Wenn Ihre ausführbare Datei beispielsweise Protokoll-, Sperr- oder Statusdateien an die »falsche« Stelle (etwa nach /usr/local ) schreibt, können Sie dies ändern, ohne Samba neu kompilieren zu müssen.

Ein beachtenswerter Punkt ist, dass die Samba-Quellen einen ANSI-C-Compiler benötigen. Verwendet Ihre Plattform einen Nicht-ANSI-Compiler, wie zum Beispiel den cc-Compiler bei SunOS Version 4, müssen Sie zuerst einen ANSI-konformen Compiler installieren, etwa gcc.1 Falls Sie sich nicht mit der Installation eines Compilers herumschlagen wollen, können Sie mit einer binären Distribution beginnen. Die größte Flexibilität und Kompatibilität erreichen Sie aber mit der Kompilierung der aktuellen Quelldateien.

Eine typische Installation dauert ungefähr eine Stunde und umfasst das Herunterladen und Kompilieren der Quelldateien, das Einrichten der Konfigurationsdateien und das Testen des Servers.

Hier ein Überblick über die einzelnen Schritte:

1. Quell- oder Binärdateien herunterladen.
2. Installationsdokumentation lesen.
3. Eine make-Datei konfigurieren.
4. Den Server und die Hilfsprogramme kompilieren.
5. Die Server-Dateien installieren.
6. Eine Samba-Konfigurationsdatei erstellen.
7. Die Konfigurationsdatei testen.
8. Die Samba-Daemons starten.
9. Die Samba-Daemons testen.

Die Samba-Distribution herunterladen

Wenn Sie die neueste Version der Samba-Software herunterladen wollen, begeben Sie sich am besten zu http://www.samba.org. Sie werden auf dieser Seite Links zu diversen identischen Samba-Sites auf der ganzen Welt sehen, und zwar einerseits zu Informations- und andererseits zu Download-Sites. Wählen Sie eine Site in Ihrer Nähe, um eine optimale Übertragungsgeschwindigkeit zu erreichen.

Die Standard-Sites von Samba enthalten neben der Dokumentation und Anleitungen Archive von Mailinglisten, Samba-Neuigkeiten und natürlich die Quelldateien sowie die binäre Distribution. Die Sites zum Herunterladen von Samba (auch F T P-Sites genannt) enthalten lediglich die Quelldateien und die binäre Distribution. Solange Sie keine bestimmte ältere Version von Samba oder eine binäre Distribution wünschen, laden Sie die aktuellen Quelldateien von der Ihnen am nächsten gelegenen Site herunter. Diese aktuelle Distribution hat grundsätzlich den Namen

samba-latest.tar.gz
 

Bei Release 2.2.6 ist diese Datei ungefähr 5 MByte groß.

Die Quelldistribution wurde mit tar archiviert und dann mit dem GNU-Programm gzip komprimiert. Zum Entpacken verschieben Sie die Datei in das Verzeichnis, in dem sich das Samba-Quellverzeichnis befinden soll. Wechseln Sie dann mit cd in dieses Verzeichnis und führen Sie folgenden Befehl aus:

$ tar xvfz samba-latest.tar.gz
 

Falls Sie das GNU-Programm tar (das auch das Dekomprimieren erledigt) nicht besitzen, gehen Sie so vor:

$ gunzip samba-latest.tar.gz
 
$ tar xvf samba-latest.tar
 

In diesem Fall müssen Sie eventuell zuerst das GNU-Programm gunzip installieren. Der tar-Befehl gibt während seiner Ausführung eine Liste der installierten Dateien aus.

Lesen Sie die Dokumentation

Eigentlich sollte es eine Selbstverständlichkeit sein, zuerst die Dokumentation zu lesen, aber wie oft hat man ein Paket entpackt und anschließend blind getippt:

$ configure; make; make install
 

um anschließend erst einmal eine Tasse Kaffee trinken zu gehen! Tun Sie sich den Gefallen und seien Sie dieses Mal ein bisschen sorgfältiger.

Im obersten Verzeichnis, das Sie gerade installiert haben, gibt es eine Datei namens WHATSNEW.txt, die die neuesten Hinweise über diese Ausgabe der Software enthält. Falls Sie eine frühere Version aktualisieren, finden Sie hier wichtige Informationen über behobene Fehler oder Konfigurationsparameter, die hinzugefügt wurden oder nicht mehr unterstützt werden.

Sowohl bei der Quell- als auch bei der Binärdistribution finden Sie im Verzeichnis docs zahlreiche Dokumente in verschiedenen Formaten. Eine Datei ist besonders wichtig:

docs/htmldocs/UNIX_INSTALL.html
 

Dies sind die offiziellen Anweisungen des Samba-Teams zur Installation von Samba auf einem Unix-System, die Sie neben unseren Hinweisen als weitere Hilfe nutzen können.

Im Allgemeinen werden Sie die Dateien in den folgenden Verzeichnissen recht nützlich finden:

docs/faq
Dies sind die FAQ-Dateien (Frequently Asked Questions) von Samba.
docs/htmldocs
Hier gibt es die allgemeine Dokumentation im HTML-Format.
docs/textdocs
Hier finden Sie weitere Dokumentationen im einfachen Textformat.
docs/manpages
Hierum brauchen Sie sich nicht zu kümmern; während der Installation werden diese Dateien ebenfalls installiert, so dass Sie den Befehl man verwenden können, um sie zu lesen. Sie können jedoch mit Hilfe dieses Verzeichnisses ermitteln, welche Manpages zur Verfügung stehen.

Samba konfigurieren

Samba konfiguriert sich selbst automatisch vor der Kompilierung. Dies reduziert zwar die Wahrscheinlichkeit rechnerspezifischer Probleme, aber möglicherweise wünschen Sie sich bestimmte Optionen, nachdem Samba installiert wurde.

Die Quelldistribution von Samba 2.2 und darüber verfügt zunächst nicht über eine make-Datei. Stattdessen wird eine durch ein GNU-configure-Skript erzeugt, das sich im Verzeichnis samba-2.2.x /source/ befindet. Das configure-Skript kümmert sich um die rechnerspezifischen Belange beim Erstellen von Samba.


Bevor Sie das configure-Skript ausführen, müssen Sie sich unbedingt als root-Benutzer am System anmelden. Ansonsten erhalten Sie eine solche Warnung:
configure: warning: running as non-root will disable some tests
 
Sie wollen jedoch nicht, dass beim Erzeugen der Samba-make-Datei Tests deaktiviert werden; dadurch könnten sich während des Kompilierens oder Ausführens von Samba auf Ihrem System Fehler einschleichen.

Während der Ausführung gibt das configure-Skript Meldungen aus, die Ihnen mitteilen, was es tut. Die Ausgabe könnte außerdem Fehlermeldungen enthalten. Um sicherzugehen, dass Sie diese ausgesprochen wichtigen Fehlermeldungen auch sehen, schlagen wir Ihnen vor, die Standardausgabe von configure durch einen Filter zu schicken, um sie abzufangen und zu verhindern, dass sie ungesehen aus dem Bild verschwindet. Eine Methode besteht darin, den Befehl more zu verwenden:

# ./configure | more
 

Eine weitere Methode zeigen wir Ihnen gleich.

Sie können zwar configure wie eben gezeigt ohne Optionen ausführen, aber vielleicht wollen Sie ja die Unterstützung weiterer Funktionen erreichen. Dazu geben Sie auf der Kommandozeile Optionen an:

# ./configure --with-winbind
 

Dies konfiguriert die Samba-make-Datei so, dass die winbind-Authentifizierung unterstützt wird. Geben Sie folgenden Befehl ein, um eine vollständige Liste der Optionen zu erhalten:

# ./configure --help
 

Jede Option aktiviert oder deaktiviert verschiedene Merkmale. Sie aktivieren üblicherweise eine Funktion, indem Sie die Option --with-funktion angeben. Die gewünschte Funktion wird dann kompiliert und installiert. Geben Sie dagegen eine Option --without-funktion an, wird die entsprechende Funktion deaktiviert. Eine vollständige Liste der Konfigurationsoptionen finden Sie in Anhang E. Hier an dieser Stelle wollen wir nur drei dieser Optionen herausstellen, da wir auf sie weiter hinten in diesem Buch noch näher eingehen:

--with-msdfs
Aktiviert die Unterstützung für Microsoft-Dfs (Distributed file system; verteiltes Dateisystem), wodurch verteilte Netzwerkressourcen in einem einzigen, leicht zu navigierenden Verzeichnisbaum zusammengefasst werden können. Siehe Kapitel 8.
--with-smbwrapper
Aktiviert die Unterstützung für den SMB-Wrapper. Dadurch wird Programmen, die auf dem Unix-Host laufen, der Zugriff auf freigegebene SMB-Ordner erlaubt, so als würde es sich bei diesen um Unix-Dateisysteme handeln. Wir empfehlen den Einsatz dieser Option. Siehe Kapitel 5.
--with-smbmount
Aktiviert die Unterstützung für smbmount. Dies erlaubt das Aufsetzen (Mounten) von freigegebenen SMB-Ordnern auf das Unix-Dateisystem. Zum Zeitpunkt der Entstehung dieses Buches wurde diese Funktion nur für Linux unterstützt. Dies wird ebenfalls in Kapitel 5 behandelt.

Jede Option ist standardmäßig deaktiviert, und keine dieser Funktionen ist für Samba unentbehrlich. Sie könnten sie jedoch in Ihre Konfiguration aufnehmen (so wie wir es in unserem Beispiel auch tun), um sie zumindest in späteren Kapiteln einmal auszuprobieren.

In Tabelle 2-1 sehen Sie darüber hinaus einige weitere Parameter, die Sie mit dem configure-Skript angeben können, falls Sie Teile der Samba-Distribution an anderen Stellen ablegen wollen, beispielsweise um mehrere Festplatten oder Partitionen zu nutzen. Beachten Sie, dass die Standardwerte sich manchmal auf ein Präfix beziehen, das weiter vorn in der Tabelle angegeben ist.

Tabelle 2-1
Zusätzliche configure-Optionen 
Option
Bedeutung
Standardwert
--prefix=verzeichnis
Installiert architekturunabhängige Dateien im angegebenen Basisverzeichnis.
/usr/local/samba
--eprefix=verzeichnis
Installiert architekturbezogene Dateien im angegebenen Basisverzeichnis.
/usr/local/samba
--bindir=verzeichnis
Installiert vom Benutzer ausführbare Dateien im angegebenen Verzeichnis.
eprefix/bin
--sbindir=verzeichnis
Installiert vom Administrator ausführbare Dateien im angegebenen Verzeichnis.
eprefix/bin
--libexecdir=verzeichnis
Installiert ausführbare Programme im angegebenen Verzeichnis.
eprefix/libexec
--datadir=verzeichnis
Installiert schreibgeschützte architekturabhängige Daten im angegebenen Verzeichnis.
prefix/share
--libdir=verzeichnis
Installiert Programmbibliotheken im angegebenen Verzeichnis.
eprefix/lib
--includedir=verzeichnis
Installiert Paket-Include-Dateien im angegebenen Verzeichnis.
prefix/include
--infodir=verzeichnis
Installiert zusätzliche Informationsdateien im angegebenen Verzeichnis.
prefix/info
--mandir=verzeichnis
Installiert Manpages im angegebenen Verzeichnis.
prefix/man

Hier sehen Sie eine Beispielausführung des configure-Skripts, das eine Samba 2.2.6-make-Datei für die Linux-Plattform erzeugt. Beachten Sie, dass Sie das Skript im Verzeichnis source starten müssen und dass wir Ihnen eine andere Möglichkeit zeigen, die Ausgabe des Skripts aufzuzeichnen:

$ cd samba-2.2.6/source/
 
$ su
 
Password:
 
# ./configure --with-smbwrapper --with-smbmount \
 
--with-msdfs --with-syslog --with-utmp 2>&1 | tee config.my.log
loading cache ./config.cache
 
checking for gcc... (cached) gcc
 
checking whether the C compiler (gcc -O ) works... yes
 
checking whether the C compiler (gcc -O ) is a cross-compiler... no
 
checking whether we are using GNU C... (cached) yes
 
checking whether gcc accepts -g... (cached) yes
 
checking for a BSD-compatible install... (cached) /usr/bin/install -c
 

 
(Inhalt ausgelassen)
 

 
checking configure summary
 
configure OK
 
creating ./config.status
 
creating include/stamp-h
 
creating Makefile
 
creating include/config.h
 

Im Allgemeinen sind alle Nachrichten von configure, die nicht mit checking oder creating beginnen, als Fehler anzusehen. Es ist oft hilfreich, die Ausgabe des Konfigurationsskripts in eine Datei umzuleiten, so dass Sie schnell nach Fehlern suchen können (wir haben das oben mit dem Befehl tee getan). Wenn während der Konfiguration ein Fehler aufgetreten ist, finden Sie ausführliche Meldungen in der Datei config.log, die das configure-Skript im lokalen Verzeichnis anlegt, sowie in der Datei config.my.log, die wir durch Umleiten der Ausgabe über den Befehl tee erzeugt haben. Diese Dateien sind sich in Name und Inhalt sehr ähnlich, Sie sollten jedoch beide auf Fehlermeldungen prüfen, bevor Sie weitermachen!

Wenn die Konfiguration funktioniert, erscheint die Ausgabe checking configure summary, gefolgt von der Meldung configure OK und vier oder fünf Meldungen für erstellte Dateien. So weit, so gut.

Kompilierung und Installation von Samba

Sie sollten jetzt in der Lage sein, die ausführbaren Dateien von Samba zu erstellen. Die Kompilierung ist ebenfalls einfach: Gehen Sie in das source-Verzeichnis und geben Sie make auf der Kommandozeile ein. Das Werkzeug make wird erläuternde Nachrichten und Erfolgsmeldungen ausgeben, beginnend mit:

Using FLAGS = -O -Iinclude ...
 

Diese Zusammenstellung enthält Kompilierungen sowohl für smbd als auch für nmbd und endet mit einem Verknüpfungsbefehl für bin/nmblookup. Als Beispiel folgt eine Ausgabe von make für Samba Version 2.2.6 auf einem Linux-Server:

# make 2>&1 | tee make.log
 
Using FLAGS =  -O  -Iinclude -I./include -I./ubiqx -I./smbwrapper -D_LARGEFILE64
 
_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE  -DLOGFILEBASE="/usr/local/samba/va
 
r" -DCONFIGFILE="/usr/local/samba/lib/smb.conf" -DLMHOSTSFILE="/usr/local/samba/
 
lib/lmhosts"   -DSWATDIR="/usr/local/samba/swat" -DSBINDIR="/usr/local/samba/bin
 
" -DLOCKDIR="/usr/local/samba/var/locks" -DCODEPAGEDIR="/usr/local/samba/lib/cod
 
epages" -DDRIVERFILE="/usr/local/samba/lib/printers.def" -DBINDIR="/usr/local/sa
 
mba/bin"  -DHAVE_INCLUDES_H -DPASSWD_PROGRAM="/bin/passwd" -DSMB_PASSWD_FILE="/u
 
sr/local/samba/private/smbpasswd" -DTDB_PASSWD_FILE="/usr/local/samba/private/sm
 
bpasswd.tdb"
 
Using FLAGS32 =  -O  -Iinclude -I./include -I./ubiqx -I./smbwrapper -D_LARGEFILE
 
64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE  -DLOGFILEBASE="/usr/local/samba/
 
var" -DCONFIGFILE="/usr/local/samba/lib/smb.conf" -DLMHOSTSFILE="/usr/local/samb
 
a/lib/lmhosts"   -DSWATDIR="/usr/local/samba/swat" -DSBINDIR="/usr/local/samba/b
 
in" -DLOCKDIR="/usr/local/samba/var/locks" -DCODEPAGEDIR="/usr/local/samba/lib/c
 
odepages" -DDRIVERFILE="/usr/local/samba/lib/printers.def" -DBINDIR="/usr/local/
 
samba/bin"  -DHAVE_INCLUDES_H -DPASSWD_PROGRAM="/bin/passwd" -DSMB_PASSWD_FILE="
 
/usr/local/samba/private/smbpasswd" -DTDB_PASSWD_FILE="/usr/local/samba/private/
 
smbpasswd.tdb"
 
Using LIBS = -ldl -lnsl -lpam
 
Compiling smbd/server.c
 
Compiling smbd/files.c
 
Compiling smbd/chgpasswd.c
 
Compiling smbd/connection.c
 
Compiling smbd/utmp.c
 
Compiling smbd/session.c
 
Compiling smbd/dfree.c
 
Compiling smbd/dir.c
 

 
(Inhalt ausgelassen)
 

 
Compiling rpc_server/srv_srvsvc.c
 
Compiling rpc_server/srv_srvsvc_nt.c
 
Compiling rpc_server/srv_util.c
 
Compiling rpc_server/srv_wkssvc.c
 
Compiling rpc_server/srv_wkssvc_nt.c
 
Compiling rpc_server/srv_pipe.c
 
Compiling rpc_server/srv_dfs.c
 
Compiling rpc_server/srv_dfs_nt.c
 
Compiling rpc_server/srv_spoolss.c
 
Compiling rpc_server/srv_spoolss_nt.c
 
Compiling lib/util_getent.c
 
Compiling rpc_parse/parse_lsa.c
 
Compiling rpc_parse/parse_net.c
 
Compiling rpc_parse/parsen/smbmount
 
Compiling client/smbmnt.c
 
Linking bin/smbmnt
 
Compiling client/smbumount.c
 
Linking bin/smbumount
 
Compiling utils/nmblookup.c
 
Linking bin/nmblookup
 

Falls Sie während der Kompilierung auf Probleme stoßen, suchen Sie zuerst in der Samba-Dokumentation nach einer einfachen Lösung. Sie können außerdem die Samba-Mailinglisten durchsuchen und Nachrichten dorthin schicken. Mehr dazu finden Sie am Ende von Kapitel 12 und auf der Samba-Homepage. Die meisten Kompilierungsprobleme sind systembezogen und fast immer leicht zu beheben.

Sie haben nun die Dateien kompiliert und können sie in die angegebenen Verzeichnisse installieren. Verwenden Sie dazu den Befehl:

# make install
 

Wenn Sie Samba aktualisieren, werden Ihre alten Samba-Dateien mit der Erweiterung .old gesichert, so dass Sie mit dem Befehl make revert zur alten Version zurückkehren können. Nach dem Ausführen von make install sollten Sie die .old-Dateien (sofern sie existieren) an einen anderen Ort verschieben oder umbenennen. Ansonsten würden bei der nächsten Samba-Installation die bisherigen .old-Dateien ohne Warnung überschrieben, und die frühere Version ginge verloren. Wenn Sie Samba mit den Standardpfaden für Dateien konfiguriert haben, werden die neuen Dateien in den in Tabelle 2-2 angegebenen Verzeichnissen installiert. Denken Sie daran, die Installation von einem Benutzerzugang aus auszuführen, der über Schreibberechtigungen auf diesen Zielverzeichnissen verfügt. Üblicherweise ist dies beim root-Zugang der Fall.

Tabelle 2-2
Samba-Installationsverzeichnisse
Verzeichnis
Beschreibung
/usr/local/samba
Basisverzeichnis
/usr/local/samba/bin
Binaries
/usr/local/samba/lib
smb.conf, lmhosts, Konfigurationsdateien usw.
/usr/local/samba/man
Samba-Dokumentation
/usr/local/samba/private
verschlüsselte Kennwortdatei für Samba
/usr/local/samba/swat
SWAT-Dateien
/usr/local/samba/var
Samba-Protokolldateien, Sperrdateien, Suchlistenangaben, Dateien für gemeinsam genutzten Speicher, Dateien für die Prozess-IDs

Im weiteren Verlauf dieses Buches beziehen wir uns gelegentlich auf den Ort des Basisverzeichnisses als /usr/local/samba. In den meisten Konfigurationen handelt es sich dabei um das Basisverzeichnis des installierten Samba-Pakets; es kann jedoch von System zu System variieren.


Passen Sie auf, falls Sie /usr zu einer schreibgeschützten Partition gemacht haben. Sie werden Protokolle, Sperrdateien und Kennwortdateien an eine andere Stelle schreiben wollen.

Dies ist die Installation, die wir auf unserem Computer durchgeführt haben. Sie können sehen, dass wir /usr/local/samba als Basisverzeichnis für die Distribution gewählt haben:

# make install 2>&1 | tee make-install.log
 
Using FLAGS =  -O  -Iinclude -I./include -I./ubiqx -I./smbwrapper -D_LARGEFILE64
 
_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE  -DLOGFILEBASE="/usr/local/samba/va
 
r" -DCONFIGFILE="/usr/local/samba/lib/smb.conf"
 

 
(Inhalt ausgelassen)
 

 
The binaries are installed. You can restore the old binaries (if there
 
were any) using the command "make revert". You can uninstall the binaries
 
using the command "make uninstallbin" or "make uninstall" to uninstall
 
binaries, manpages and shell scripts.
 

 
(Inhalt ausgelassen)
 

 
======================================================================
 
The SWAT files have been installed. Remember to read the swat/README
 
for information on enabling and using SWAT.
 
======================================================================
 

Wenn die letzte Meldung SWAT eintrifft, haben Sie alle Dateien erfolgreich installiert. Herzlichen Glückwunsch! Sie haben nun Samba auf Ihrem System!

Ihre Installation aktualisieren

Irgendwann wird eine neue Version von Samba veröffentlicht, und Sie werden aktualisieren wollen. Das ist einfach. Wiederholen Sie einfach die Schritte, die Sie für die Installation Ihrer aktuellen Version durchgeführt haben. Laden Sie die Quelldistribution von der Samba-Website herunter und installieren Sie sie, führen Sie anschließend wie gehabt die Befehle ./configure, make und make install aus. Falls Sie vergessen haben, welche Optionen Sie mit dem configure-Skript benutzt haben, schauen Sie in die Datei source/config.status der Quelldistribution Ihrer vorherigen Version. Die ersten Zeilen dieser Datei zeigen die Optionen, die beim letzten Aufruf von configure zum Einsatz kamen.

Wenn Sie den Befehl make install ausführen, um Ihre neue Version zu installieren, werden die Dateien der vorherigen Version durch die neuen ersetzt. Danach müssen Sie die Samba-Daemons neu starten, um Ihre neue Version zum Laufen zu bringen. Im Abschnitt »Starten der Samba-Daemons« weiter hinten in diesem Kapitel erhalten Sie Anweisungen darüber, wie Sie vorzugehen haben.

Samba rekonfigurieren

Falls Sie Samba bereits kompiliert haben und nun den gleichen Quellcode mit anderen configure-Optionen neu kompilieren wollen, müssen Sie die folgenden drei Befehle im source-Verzeichnis ausführen, bevor Sie das configure-Skript erneut starten können:

# autoconf
 
# make clean
 
# rm config.cache
 

Dies stellt sicher, dass Sie aus einem sauberen Zustand heraus beginnen und Ihr vorheriger configure-Befehl keine Daten hinterlässt, die Ihre Neufassung beeinträchtigen. Jetzt können Sie ./configure und danach make und make install ausführen.

Die Suchpfade einstellen

Vermutlich wollen Sie die Befehle, die in der Samba-Distribution enthalten sind, ausführen, ohne ihre vollständigen Verzeichnispfade angeben zu müssen. Damit das funktioniert, muss das Verzeichnis, in dem sich die ausführbaren Samba-Dateien befinden - standardmäßig handelt es sich dabei um /usr/local/samba/bin - in die Umgebungsvariable PATH Ihrer Shell aufgenommen werden. Diese Umgebungsvariable wird normalerweise in einer oder mehreren Startdateien der Shell gesetzt. Im Fall der bash sind dies /etc/profile (systemweit) sowie  .bash_profile und .bashrc im Home-Verzeichnis der einzelnen Benutzer.

Um die Manpages von Samba mit Hilfe des Befehls man lesen zu können, muss das Verzeichnis, in dem sich die Manpages befinden - standardmäßig /usr/local/samba/man - in der MANPATH-Umgebungsvariablen stehen. Bei Red Hat Linux wird dies erreicht, indem man die folgenden beiden Zeilen in /etc/man.config aufnimmt:

MANPATH			/usr/local/samba/man
 
MANPATH_MAP			/usr/local/samba/bin 	/usr/local/samba/man  
 

SWAT aktivieren

Das Samba Web Administration Tool (SWAT) wird als Daemon unter inetd oder xinetd ausgeführt und stellt einen formularbasierten Editor in Ihrem Webbrowser zur Verfügung, mit dem Sie die Samba-Konfigurationsdatei erzeugen und verändern können. Damit SWAT funktioniert, müssen Einträge dafür in die Konfigurationsdateien /etc/services und /etc/inetd.conf (oder /etc/xinetd.d/swat ) aufgenommen werden. Gehen Sie folgendermaßen vor, um die Einträge hinzuzufügen:

1. Prüfen Sie die Datei /etc/services; falls sie die folgende Zeile nicht enthält, fügen Sie diese am Ende der Datei ein:
swat   901/tcp
 
2. Jetzt zu inetd oder xinetd. Dabei handelt es sich um »Internet-Super-Daemons«, die das bedarfsweise Starten von Daemons erledigen, so dass diese nicht untätig im Speicher herumliegen und Systemressourcen verbrauchen. Die meisten Systeme verwenden inetd, bei einigen Versionen von Unix wird aber auch xinetd eingesetzt. Dies gilt vor allem für Red Hat Linux (Version 7 und neuer), das wir in unseren Beispielen verwenden. Sie können mit Hilfe des Befehls ps feststellen, welchen der beiden Daemons Ihr System ausführt.

Fügen Sie für inetd eine Zeile in die Datei /etc/inetd.conf ein. (In der Manpage der inetd.conf finden Sie das genaue Format der Datei inetd.conf, falls sich dies vom folgenden Beispiel unterscheidet.) Vergessen Sie nicht, den Pfad zum SWAT-Binary zu ändern, falls Sie dies an einer anderen Stelle als im voreingestellten Verzeichnis /usr/local/samba installiert haben:

swat   stream  tcp  nowait  root  /usr/local/samba/bin/swat  swat
 

Zwingen Sie nun inetd, seine Konfigurationsdatei neu einzulesen, indem Sie ein SIGHUP-(Hangup-)Signal senden:

# /bin/kill -HUP -a inetd
 

Beachten Sie, dass wir eine Version des kill-Befehls verwenden, die die Option -a unterstützt, damit wir den Prozess mit seinem Namen angeben können. Bei FreeBSD und Linux können Sie den Befehl killall2 einsetzen:

# killall -HUP inetd
 

Wenn Sie Linux oder FreeBSD benutzen und Ihre Version von kill keine Option -a besitzt, müssen Sie den Befehl ps einsetzen, um die Prozess-ID zu ermitteln und diese an kill zu übergeben:

# ps ax | grep inetd
 
  780 ?        S      0:00 inetd
 
 1981 pts/4    S      0:00 grep inetd                                         
 
# kill -HUP 780
 

Benutzt Ihr System xinetd, fügen Sie eine Datei namens swat in Ihr /etc/xinetd.d-Verzeichnis ein, die Folgendes enthält:

# description: swat is the Samba Web Administration Tool, which
 
#       allows an administrator to configure Samba using a web
 
#       browser interface, with the URL http://localhost:901
 
service swat.
 
{
 
        socket_type             = stream
 
        wait                    = no
 
        protocol                = tcp
 
        only_from               = localhost
 
        user                    = root
 
        log_on_failure          += USERID
 
        server                  = /usr/local/samba/bin/swat
 
        port                    = 901
 
        disable                 = no
 
}
 

Anschließend muss ein Signal3 an xinetd gesendet werden, damit dieser seine Konfigurationsdateien erneut einliest:

# /bin/kill -HUP -a xinetd
 

Und das war es schon für die Installation. Bevor Sie Samba starten können, müssen Sie jedoch eine Konfigurationsdatei dafür erstellen.

Eine grundlegende Samba-Konfigurationsdatei

Der Schlüssel zur Konfiguration von Samba ist die Konfigurationsdatei smb.conf. Diese Datei kann sehr einfach oder auch außerordentlich kompliziert sein, und im Rest dieses Buches geht es darum, Sie mit dieser Datei vertraut zu machen. Wir zeigen Ihnen erst einmal, wie Sie einen einzigen Dateidienst einrichten, mit dem Sie die Samba-Daemons starten und sehen können, dass alles nach Plan läuft. In späteren Kapiteln werden Sie lernen, wie Sie Samba für kompliziertere und interessantere Aufgaben konfigurieren.

Der Installationsvorgang erstellt nicht automatisch eine smb.conf-Konfigurationsdatei, auch wenn die Samba-Distribution mehrere Muster dieser Datei enthält. Um die Server-Software zu testen, verwenden Sie aber die folgende Datei, die Sie mit einem Texteditor erzeugen können. Sie sollte smb.conf heißen und im Verzeichnis /usr/local/samba/lib liegen:4

[global]
 
	workgroup = METRAN 
 
[test] 
 
	comment = Bitte nur zu Testzwecken verwenden
 
	path = /usr/local/samba/tmp
 
	read only = no
 
	guest ok = yes
 

Diese kurze Konfigurationsdatei weist den Samba-Server an, das Verzeichnis /usr/local/ samba/tmp auf dem Server als SMB-Freigabe namens test anzubieten. Der Server wird außerdem zu einem Teil der Arbeitsgruppe METRAN, in der sich auch jeder Client befinden muss. Falls Sie bereits einen Namen für Ihre Arbeitsgruppe gewählt haben, verwenden Sie im vorangegangenen Beispiel diesen Namen an Stelle von METRAN. Wenn Sie Ihr Symba-System an ein existierendes Netzwerk anschließen und den Arbeitsgruppennamen wissen müssen, können Sie einen anderen Systemadministrator fragen oder auf einem Windows-System in der Arbeitsgruppe folgende Schritte ausführen:

Wir werden die Freigabe [test] im nächsten Kapitel verwenden, um die Windows-Clients einzurichten. Jetzt können Sie die Konfiguration erst einmal beenden, indem Sie auf Ihrem Unix-Server folgende Befehle als root-Benutzer ausführen:

# mkdir /usr/local/samba/tmp
 
# chmod 777 /usr/local/samba/tmp
 

Sie könnten auch eine oder zwei Dateien in das Verzeichnis /usr/local/samba/tmp kopieren, damit Sie etwas haben, anhand dessen Sie überprüfen können, dass alles funktioniert, wenn Ihre Windows-Systeme fertig konfiguriert sind.

Wir müssen noch darauf hinweisen, dass diese Konfiguration aus Sicht der Systemsicherheit die schlechteste aller möglichen ist. Im Moment wollen wir Samba jedoch nur testen, deshalb lassen wir die Sicherheitsaspekte noch außer Acht. Außerdem kann es Schwierigkeiten mit verschlüsselten Kennwörtern bei Windows-Clients geben; diese Konfiguration wird hier am wenigsten Probleme bereiten.

Verschlüsselte Kennwörter

Wenn Ihre Windows-Clients Windows 98 oder Windows NT 4 Service Pack 3 oder höher (einschließlich Windows 2000 und Windows XP) verwenden und Sie eine Samba-Version vor 3.0 einsetzen, müssen Sie folgenden Eintrag in den [global]-Abschnitt der Samba-Konfigurationsdatei aufnehmen:

[global]
 
	encrypt passwords = yes
 

Außerdem müssen Sie das Programm smbpasswd (üblicherweise im Verzeichnis /usr/local/samba/bin/ ) verwenden, um die Kombinationen aus Benutzername und Kennwort für die einzelnen Benutzer von Samba in die Datenbank mit verschlüsselten Kennwörtern einzugeben. Wenn Sie zum Beispiel wollen, dass der Unix-Benutzer steve Freigaben von einem Client-System nutzen kann, müssten Sie folgenden Befehl eingeben:

# smbpasswd -a steve
 
New SMB password:
 
Retype new SMB password:
 
Added user steve.
 

Wird der erste Benutzer eingefügt, gibt das Programm eine Meldung aus, die besagt, dass die Datenbank der verschlüsselten Kennwörter nicht existiert. Keine Angst, die Datenbank wird dann erzeugt. Stellen Sie sicher, dass die Benutzername-Kennwortkombinationen, die Sie in die Datenbank eingeben, mit denjenigen auf der Windows-Client-Seite übereinstimmen. Sie müssen smbpasswd für jeden Client-Benutzer ausführen.

Bei Samba 3.0 sind die Kennwörter standardmäßig verschlüsselt, der Parameter encrypt passwords = yes in der Konfigurationsdatei ist daher optional. Sie müssen jedoch trotzdem den Befehl smbpasswd ausführen, um Benutzer in die Datei mit den verschlüsselten Kennwörtern aufzunehmen.

SWAT verwenden

Das Anlegen einer Konfigurationsdatei ist mit SWAT noch einfacher als das Schreiben der Datei von Hand. Sie starten SWAT, indem Sie mit Ihrem Webbrowser eine Verbindung zu http://localhost:901 herstellen und sich als root mit dem root-Passwort anmelden (siehe Abbildung 2-1).
Abbildung 2-1
SWAT-Anmeldung
Abbildung 2-2
Die Seite »Global Variables« des SWAT

Nach dem Anmelden klicken Sie auf den Button GLOBALS im oberen Bereich des Bildschirms. Sie sollten dann die Seite Global Variables sehen, die in Abbildung 2-2 gezeigt wird.

Beachten Sie, dass SWAT in diesem Beispiel den Namen der Arbeitsgruppe der von Ihnen erzeugten smb.conf-Datei entnommen hat. (Hat es das nicht getan, müssen Sie zurückgehen und diesen Schritt korrekt ausführen.) Stellen Sie sicher, dass das security-Feld auf USER gesetzt ist.

Falls Sie Samba 2.2 ausführen und Ihre Windows-Clients wenigstens mit Windows 98 oder Windows NT 4 SP 3 oder neueren Versionen laufen, suchen Sie im Abschnitt Security Options nach encrypt passwords. Setzen Sie diese Option auf Yes.

Die einzige weitere Option aus dem Menü, die Sie noch ändern müssen, ist diejenige, die angibt, welches System im lokalen Netzwerk die NetBIOS-Adressen auflöst; dieses System wird als WINS-Server bezeichnet. Setzen Sie ganz unten auf der Seite das Feld wins support auf Yes, es sei denn, Sie haben bereits einen WINS-Server in Ihrem Netzwerk. Ist dies der Fall, schreiben Sie stattdessen die IP-Adresse des WINS-Servers in das wins server-Feld. Kehren Sie anschließend an den Anfang der Seite zurück und drücken Sie den Button Commit Changes, um die Änderungen in die Datei smb.conf zu schreiben.
Abbildung 2-3
Die »Share Parameters«-Seite von SWAT

Klicken Sie als Nächstes auf das Symbol SHARES. Sie sollten eine Seite sehen, die Abbildung 2-3 ähnelt. Wählen Sie test (rechts neben dem Button Choose Share) und klicken Sie auf den Button Choose Share. Die Seite Share Parameters sollte daraufhin erscheinen, wie in Abbildung 2-3 dargestellt. Die Felder comment und path sind mit den entsprechenden Angaben aus Ihrer smb.conf-Datei ausgefüllt.

Falls Sie auf der GLOBALS-Seite angegeben haben, dass Sie verschlüsselte Kennwörter benutzen wollen, klicken Sie auf den Button PASSWORD. Im oberen Bereich des Fensters sehen Sie den Abschnitt Server Password Management. Geben Sie Ihren Unix-Benutzernamen und das Kennwort in die leeren Felder ein und klicken Sie auf den Button Add New User. Dies funktioniert genauso wie das Programm smbpasswd und erzeugt einen Eintrag in der Datei /usr/local/samba/private/smbpasswd, der Ihnen die Authentifizierung von einem Windows-Client aus erlaubt.

Klicken Sie nun auf den Button VIEW. SWAT zeigt Ihnen folgende smb.conf-Datei:

# Samba config file created using SWAT
 
# from localhost (127.0.0.1)
 
# Date: 2002/09/05 04:56:43
 

 
# Global parameters
 
        workgroup = METRAN
 
        encrypt passwords = Yes
 
        wins support = Yes
 

 
[test]
 
        comment = Bitte nur zu Testzwecken verwenden!
 
        path = /usr/local/samba/tmp
 
        read only = No
 

Wenn Sie diese Konfigurationsdatei angelegt haben, können Sie den nächsten Schritt überspringen, da die von SWAT erstellte Ausgabe garantiert keine Syntaxfehler enthält.

Oplocks deaktivieren

Die von Ihnen gerade erstellte smb.conf-Datei ist sicherlich gut genug für das anfängliche Einrichten und Testen. Sie können sie als Ausgangspunkt für die Entwicklung der Konfiguration Ihres richtigen Samba-Servers benutzen. Bevor Sie jedoch dorthin gelangen, wollen wir Sie auf eine Sache aufmerksam machen.

Falls Sie zu der Sorte von Administrator gehören, die sich stark um die Integrität der Daten bemüht, sollten Sie vor dem Weiterarbeiten folgende Änderung in Ihre smb.conf-Datei aufnehmen:

[global]
 
	oplocks = no
 

Benutzen Sie einen Texteditor, um die Zeile oplocks = no in den Abschnitt [global] Ihrer smb.conf-Datei zu schreiben. Bei diesem Beispiel - wie auch bei anderen Beispielen in diesem Buch - müssen Sie die Zeile [global] nicht noch einmal in Ihre Konfigurationsdatei aufnehmen. Wir wollen damit lediglich verdeutlichen, in welchen Abschnitt der Parameter gehört.

Der Parameter oplocks = no deaktiviert opportunistische Sperren von Clients. Die Leistungsfähigkeit wird dadurch zwar deutlich verringert, andererseits verhindern Sie damit, dass allzu lässige Windows-Clients und/oder unzuverlässige Netzwerk-Hardware Dateien auf dem Samba-Server beschädigen.

Wir werden opportunistische Sperren (Oplocks) im Abschnitt »Sperren und Oplocks« in Kapitel 8 genauer behandeln und empfehlen Ihnen, die dahinter stehenden Ideen zu verstehen, bevor Sie einen Produktions-Server mit Samba aufsetzen, der Datenbankdateien oder andere wertvolle Daten vorhält.

Die Konfigurationsdatei testen

Wenn Sie Ihre Konfigurationsdatei nicht mit SWAT erstellt haben, sollten Sie sie auf Syntaxfehler hin überprüfen und diese beseitigen. Es mag albern klingen, eine nur acht Zeilen große Konfigurationsdatei mit einem Programm zu prüfen, aber es ist eine gute Übung für die »richtigen« Dateien, die wir später schreiben werden.

Das Prüfprogramm testparm untersucht eine smb.conf-Datei auf Syntaxfehler hin und meldet diese zusammen mit den Diensten, die auf Ihrem System aktiviert sind. Wir zeigen Ihnen dies an einem Beispiel. Sie werden beobachten, dass wir in aller Eile den Begriff workgroup als workgrp geschrieben haben (die Ausgabe des Prüfprogramms ist häufig lang, so dass wir empfehlen, sie mit dem Befehl tee in einer Datei aufzuzeichnen):

Load smb config files from smb.conf
 
Unknown parameter encountered: "workgrp"
 
Ignoring unknown parameter "workgrp"
 
Processing section "[test]"
 
Loaded services file OK.
 
Press Enter to see a dump of your service definitions
 
# Global parameters
 
[global]
 
	workgroup = WORKGROUP
 
	netbios name = 
 
	netbios aliases = 
 
	server string = Samba 2.2.6
 
	interfaces = 
 
	bind interfaces only = No
 

 
(Inhalt ausgelassen)
 

 
[test]
 
	comment = Bitte nur zu Testzwecken verwenden!
 
	path = /usr/local/samba/tmp
 
	read only = No
 

Die interessanten Teile sind der Anfang und das Ende. Im oberen Teil der Ausgabe sehen Sie Hinweise für alle möglichen Syntaxfehler in der Konfigurationsdatei, und unten führt die Ausgabe die Dienste auf, die der Server anzubieten gedenkt. Ein Hinweis: Stellen Sie sicher, dass Sie und der Server die gleichen Erwartungen haben.

Firewall-Konfiguration

Wie alle anderen Dienste, die über TCP/IP laufen, können auch die SMB-Netzwerkdienste, die Samba anbietet, über das Internet erreicht werden, es sei denn, die Firewall Ihrer Einrichtung ist richtig konfiguriert. Folgende Ports werden von Samba für den SMB-Netzwerkbetrieb und SWAT verwendet:

Port 137
Wird für die NetBIOS-Netzwerksuche benutzt.
Port 138
Wird für den NetBIOS-Namensdienst benutzt.
Port 139
Wird für die Datei- und Druckerfreigabe und andere Operationen benutzt.
Port 445
Wird von Windows 2000/XP benutzt, wenn NetBIOS over TCP/IP deaktiviert ist.
Port 901
Wird von SWAT benutzt.

Die Internet-Firewall Ihrer Organisation sollte wenigstens alle Ports in der obigen Liste für den Verkehr in beiden Richtungen sperren. Glauben Sie nicht, dass es ausreicht, nur eingehende Verbindungen zu unterbinden; es gibt Cracks, die Windows-Clients so austricksen, dass diese über das SMB-Protokoll Daten aus dem lokalen Netzwerk in das Internet schicken, selbst wenn ein lokales Netzwerk private IP-Adressen verwendet, die von Routern nicht weitergeleitet werden. Falls Sie SMB-Verkehr über das Internet an entfernte Standorte schicken wollen, ist es am besten, ein virtuelles privates Netzwerk (VPN) einzusetzen. Nähere Informationen zu diesem Thema finden Sie im O'Reilly-Buch Virtual Private Networks.

Darüber hinaus wollen Sie möglicherweise auf dem Samba-Host eine Firewall einrichten, um dafür zu sorgen, dass die SMB-Pakete im Netzwerk Ihrer Einrichtung nicht weiter reisen als nötig. Beispielsweise kann Port 901 für entfernte Zugriffe gesperrt werden, so dass SWAT nur auf dem Samba-Host ausgeführt werden kann. Falls Sie mit Samba nur einen Bruchteil der Client-Systeme in Ihrer Einrichtung bedienen, sollten Sie es in Erwägung ziehen, SMB-Pakete (d.h. Pakete an den Ports 137-139 und 445) nur von bzw. zu diesen Clients zu erlauben.

Weitere Informationen über das Konfigurieren von Firewalls finden Sie im Buch Einrichten von Internet Firewalls von O'Reilly.

Starten der Samba-Daemons

Es gibt zwei Samba-Prozesse, smbd und nmbd, die ausgeführt werden müssen, damit Samba korrekt läuft. Für das Starten gibt es drei Möglichkeiten:

Die Daemons manuell starten

Wenn Sie es eilig haben, können Sie die Samba-Daemons manuell starten. Geben Sie als root einfach die folgenden Befehle ein:

# /usr/local/samba/bin/smbd -D
 
# /usr/local/samba/bin/nmbd -D
 

Samba läuft nun auf Ihrem System und wartet auf Verbindungen. Denken Sie jedoch daran, dass die Daemons erneut manuell gestartet werden müssen, wenn sie sich aus irgendeinem Grund (z.B. bei einem Neustart des Systems) beendet haben.

Automatischer Start

Damit die Samba-Daemons beim Hochfahren des Systems automatisch gestartet werden, müssen Sie die Befehle, die im vorherigen Abschnitt aufgeführt wurden, in Ihre Unix-Startskripten aufnehmen. Die genaue Methode hängt von der von Ihnen verwendeten Unix-Variante ab.

BSD-Unix

Bei einem BSD-Unix müssen Sie folgende Zeilen in die Datei rc.local schreiben. Diese Datei finden Sie üblicherweise in den Verzeichnissen /etc oder /etc/rc.d:

if [ -x /usr/local/samba/bin/smbd]; then
 
	echo "Starting smbd..."
 
	/usr/local/samba/bin/smbd -D
 
	echo "Starting nmbd..."
 
	/usr/local/samba/bin/nmbd -D
 
fi
 

Dieser Code ist sehr einfach: Er prüft, ob die Datei smbd existiert und Ausführungsrechte besitzt. Ist dies der Fall, werden beide Samba-Daemons beim Hochfahren des Systems gestartet.

System V-Unix

Bei System V kann es etwas komplizierter werden. Je nach Ihrer Unix-Version reicht es möglicherweise, an einer rc.local-Datei eine einfache Änderung wie bei BSD-Unix vorzunehmen. Üblicherweise verwendet System V jedoch Verzeichnisse mit Verweisen auf Skripten, die die Daemons im System steuern. Daher müssen Sie das System darüber unterrichten, wie es die Samba-Daemons starten und stoppen soll. Der erste Schritt dazu besteht darin, den Inhalt des Verzeichnisses /etc/rc.d/init.d zu modifizieren, indem etwas Ähnliches wie das folgende Shell-Skript hinzugefügt wird. Wir geben dem Skript in diesem Beispiel einmal den Namen smb :

#!/bin/sh
 

 
# Prüft, ob die Samba-Konfigurationsdatei existiert.
 
[ -f /usr/local/samba/lib/smb.conf ] || exit 0
 

 
start(  )
 
{
 
        echo -n "SMB-Dienste werden gestartet: "
 
        /usr/local/samba/bin/smbd -D
 
        ERROR=$?
 
        echo
 

 
        echo -n "NMB-Dienste werden gestartet: "
 
        /usr/local/samba/bin/nmbd -D
 
        ERROR2=$?
 
        if [ $ERROR2 -ne 0 ]
 
        then
 
                ERROR=1
 
        fi
 
        echo
 

 
        return $ERROR
 
}
 

 
stop(  )
 
{
 
        echo -n "SMB-Dienste werden beendet: "
 
        /bin/kill -TERM -a smbd
 
        ERROR=$?
 
        echo
 

 
        echo -n "NMB-Dienste werden beendet: "
 
        /bin/kill -TERM -a nmbd
 
        ERROR2=$?
 
        if [ $ERROR2 -ne 0 ]
 
        then
 
                ERROR=1
 
        fi
 
        echo
 

 
        return $ERROR
 
}
 

 
case "$1" in
 
  start)
 
        start
 
        ;;
 
  stop)
 
        stop
 
        ;;
 
  *)
 
        echo "Verwendung: $0 {start|stop}"
 
        exit 1
 
esac
 

 
exit $?
 

 

 

 

Dank dieses Skripts können Sie smbd und nmbd starten und stoppen:

# /etc/rc.d/init.d/smb start
 
SMB-Dienste werden gestartet:
 
NMB-Dienste werden gestartet:
 
# ps ax | grep mbd
 
 1268 ?        S      0:00 /usr/local/samba/bin/smbd -D
 
 1270 ?        S      0:00 /usr/local/samba/bin/nmbd -D
 
 1465 pts/2    S      0:00 grep mbd
 
# /etc/rc.d/init.d/smb stop
 
SMB-Dienste werden beendet:
 
NMB-Dienste werden beendet:
 

Falls Sie Probleme damit haben, ein Startskript für Ihr System zu schreiben, schauen Sie einmal, ob Sie eine Paket-Version von Samba finden (von Ihrem Unix-Hersteller oder der Samba-FTP-Site). Möglicherweise finden Sie dort ein Startskript, mit dem Sie erst einmal beginnen können. Normalerweise ändern sich diese Skripten von Release zu Release nicht sehr (wenn überhaupt), es sollte daher kein Problem darstellen, ein Skript einer älteren Samba-Version zu verwenden. Eine andere Möglichkeit besteht darin, einen Blick in das packaging-Verzeichnis der Samba-Quelldistribution zu werfen. In diesem Verzeichnis gibt es Unterverzeichnisse für viele Unix-Versionen mit entsprechenden Startskripten für diese Versionen. Und selbst wenn Ihre Version nicht vertreten ist, gibt es wahrscheinlich ein Startskript einer ähnlichen Version, das Sie als Ausgangspunkt nehmen können.

Abschließend müssen wir symbolische Links in die smb-Skripten in den /etc/rc.d/rcX.d-Verzeichnissen aufnehmen:

# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc3.d/S35smb
 
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc5.d/S35smb
 

 
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc0.d/K35smb
 
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc1.d/K35smb
 
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc2.d/K35smb
 
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc4.d/K35smb
 
# ln -s /etc/rc.d/init.d/smb /etc/rc.d/rc6.d/K35smb
 

Die ersten beiden Befehle, deren Link-Namen mit einem »S« beginnen, veranlassen Samba zu starten, wenn die Runlevel 3 oder 5 erreicht werden. Das sind Runlevel, in denen normalerweise NFS (Network File Sharing) aktiviert ist. Die zweite Gruppe von Befehlen, deren Link-Namen mit »K« beginnen, veranlassen Samba, sich zu beenden, wenn eines der anderen Runlevel (0, 1, 2, 4 oder 6) erreicht wird.

Die Links, die mit »S« beginnen, werden verwendet, um die Daemons zu starten. Die Links dagegen, die mit »K« beginnen, beenden sie. Wird das Runlevel geändert, werden die mit »K« beginnenden Links im entsprechenden Verzeichnis (z.B. im Verzeichnis rc3.d für Runlevel 3) ausgeführt, gefolgt von den Links, die mit »S« beginnen. Wir könnten Samba sogar neu starten, wenn zwischen den Runlevels 3 und 5 umgeschaltet wird, indem wir je einen K35smb-Link in die Verzeichnisse rc3.d und rc5.d einfügen.

Die Zahl nach dem K oder S in den Link-Namen dient dazu, die Reihenfolge einzustellen, in der die Daemons mit den Links im Verzeichnis gestartet oder beendet werden. Schauen Sie sich die Inhalte der Verzeichnisse rc3.d oder rc5.d einmal genauer an, um festzustellen, wie dies in Ihrem System eingerichtet ist. Wir benutzen 35, um dem Verhalten des Samba-RPM-Pakets von Red Hat zu entsprechen. Es ist wichtig sicherzustellen, dass beim Start von Samba bereits alle Dienste gestartet wurden, die es benötigt. Beim Beenden bietet es sich an, Samba zu beenden, bevor die Dienste beendet werden, die es benötigt. Damit vermeiden Sie endlose Fehlermeldungen in den Protokolldateien. Diese Reihenfolge ist jedoch nicht so wichtig.

Darwin und Mac OS X

Eine Installation von Samba ist der Darwin-Distribution beigelegt, die in Mac OS X enthalten ist.5 Die Samba-Daemons werden während des Hochfahrens des Systems durch das Skript /System/Library/StartupItems/Samba/Samba gestartet. Um die Ausführung dieses Skripts anzustoßen, bearbeiten Sie die Datei /etc/hostconfig und ändern den Parameter SMBSERVER, damit er folgendermaßen aussieht:

SMBSERVER=-YES-

Abbildung 2-4
Das Sharing-Feld der Systemeinstellungen von Mac OS X

Bei Mac OS X bietet die grafische Benutzeroberfläche eine Alternative zur Kommandozeile. Starten Sie das Programm Systemeinstellungen und wählen Sie das Feld Sharing (siehe Abbildung 2-4). Aktivieren Sie auf der Registerkarte Dienste die Option Windows File Sharing. Damit wird die erwähnte Änderung an der Datei /etc/hostconfig vorgenommen und das Startskript ausgeführt.

Falls Sie Samba jedoch selbst unter Mac OS X installieren wollen, sollten Sie nicht auf die Installation zurückgreifen, die mit dem Betriebssystem geliefert wurde. Wenden Sie die weiter vorn in diesem Kapitel beschriebenen Schritte an, um die Software im Verzeichnis /usr/local/samba oder einem anderen Bereich, der von Aktualisierungen des Betriebssystems nicht beeinflusst wird, zu installieren. (Denken Sie daran, mit smbpasswd Benutzer einzurichten, falls Sie verschlüsselte Kennwörter benutzen, wie ebenfalls weiter vorn beschrieben. Dieser Schritt wird durch die Einträge in /var/db/samba/hash automatisch erledigt, wenn Sie den in Mac OS X integrierten Server verwenden.) Sobald es läuft, können Sie das Samba-Startskript für Ihre Installation bearbeiten:

	#!/bin/sh
 
	# Samba starten.
 

 
	. /etc/rc.common
 

 
	if [ "${SMBSERVER:=-NO-}" = "-YES-" ]; then
 
		ConsoleMessage "SMB-Server startet"
 

 
		if [ -f /usr/local/samba/lib/smb.conf ]; then
 
			/usr/local/samba/bin/smbd -D
 
			/usr/local/samba/bin/nmbd -D
 
		fi
 
	fi
 

Bedenken Sie allerdings, dass Aktualisierungen des Betriebssystems Ihre Änderungen auslöschen können. Eine Lösung wäre es, das Skript unveränderlich zu machen:

# chflags uchg /System/Library/StartupItems/Samba/Samba
 
Testen des automatischen Starts

Falls Sie einige Minuten Ausfallzeit erübrigen können, starten Sie nun Ihr System neu und prüfen wieder mit dem Befehl ps, ob die Daemons smbd und nmbd laufen. Falls Sie jedoch einen Server verwalten, der durchgehend in Betrieb sein muss, empfehlen wir Ihnen, den Server in einem Wartungsfenster neu zu starten und den Test durchzuführen. Anderenfalls könnte es passieren, dass Sie beim Start des Systems nach dem nächsten unplanmäßigen Ausfall vom mysteriösen Ausbleiben der SMB-Netzwerkdienste überrascht werden!

Start über inetd

Der inetd 6-Daemon ist der Internet-»Super-Daemon« von Unix. Er lauscht an den Ports, die in /etc/services definiert sind, und führt bei einer eingehenden Anforderung das entsprechende, in /etc/inetd.conf aufgeführte Programm aus. Der Vorteil dieser Methode ist, dass eine große Anzahl von Daemons zwar bereitsteht, um auf Abfragen zu reagieren, aber nicht alle gleichzeitig laufen müssen. Stattdessen wartet inetd an ihrer Stelle auf Verbindungsanforderungen und startet bei Bedarf den entsprechenden Daemon. Der Nachteil ist eine etwas höhere Systembelastung beim Anlegen eines neuen Daemon-Prozesses sowie die Tatsache, dass Sie zwei Dateien statt einer bearbeiten müssen, um alles einzurichten. Der inetd-Daemon ist praktisch, wenn Sie nur einen oder zwei Samba-Benutzer haben oder Ihr Computer bereits zu viele Daemons ausführt. Es ist außerdem einfacher, eine Aktualisierung durchzuführen, ohne eine bestehende Verbindung zu unterbrechen.

Wenn Sie die Samba-Daemons über inetd starten wollen, öffnen Sie zuerst die Datei /etc/services in einem Texteditor. Fügen Sie die folgenden beiden Zeilen hinzu, falls diese noch nicht existieren sollten:

netbios-ssn     139/tcp
 
netbios-ns      137/udp
 

Bearbeiten Sie nun die Datei /etc/inetd.conf. Suchen Sie nach den folgenden beiden Zeilen und fügen Sie sie hinzu, falls sie noch nicht existieren. Wenn es bereits smbd- und nmbd-Zeilen in der Datei gibt, bearbeiten sie diese so, dass sie auf die neuen, von Ihnen installierten Dateien smbd und nmbd verweisen. Ihre Unix-Variante verwendet möglicherweise in dieser Datei eine etwas andere Syntax; ziehen Sie in solchen Fällen die bestehenden Einträge sowie die Manpage der inetd.conf  als Leitfaden heran:

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

Beenden Sie schließlich alle laufenden smbd- und nmbd-Prozesse und senden Sie dem inetd-Prozess ein Hangup-(HUP-)Signal, damit er seine Konfigurationsdatei neu einliest:

# /bin/kill -TERM -a smbd
 
# /bin/kill -TERM -a nmbd
 
# /bin/kill -HUP -a inetd
 

Danach sollte Samba ausgeführt werden.

Wie wir bereits angemerkt haben, liefern Red Hat und möglicherweise einige andere Unix-Hersteller xinetd an Stelle von inetd. Falls Sie xinetd benutzen, müssen Sie eine Konfigurationsdatei in das Verzeichnis /etc/xinetd.d setzen.

Die Samba-Daemons testen

Sie sind mit der Einrichtung des Samba-Servers fast fertig. Jetzt müssen Sie nur noch sicherstellen, dass alles so funktioniert, wie Sie das erwarten. Hier leistet das Programm smbclient gute Dienste. Dieses Programm stellt fest, welche Freigaben ein Server für das Netzwerk zur Verfügung stellt. Ist alles korrekt eingerichtet, sollten Sie Folgendes tun können:

# /usr/local/samba/bin/smbclient -U% -L localhost
 
added interface ip=172.16.1.1 bcast=172.16.1.255 nmask=255.255.255.0
 
Domain=[METRAN] OS=[Unix] Server=[Samba 2.2.6]
 

 
        Sharename      Type      Comment
 
        ---------      ----      -------
 
        test           Disk      Bitte nur zu Testzwecken verwenden
 
        IPC$           IPC       IPC Service (Samba 2.2.6)
 
        ADMIN$         Disk      IPC Service (Samba 2.2.6)
 
        
 
        Server               Comment
 
        ---------            -------
 
        TOLTEC               Samba 2.2.6 auf toltec
 

 
        Workgroup            Master
 
        ---------            -------
 
        METRAN               TOLTEC
 

Keine Panik, falls ein Problem auftritt! Versuchen Sie, die Daemons manuell zu starten, und prüfen Sie die Ausgaben des Systems oder die Debug-Dateien unter /usr/local/samba/ var/log.smb, um die Ursache festzustellen. Falls Sie an ein ernsteres Problem glauben, lesen Sie Kapitel 12. Dort finden Sie Hinweise zur Fehlersuche bei den Samba-Daemons.

Wenn Ihre Konfiguration läuft - herzlichen Glückwunsch! Sie haben jetzt den Samba-Server erfolgreich mit einer Verzeichnisfreigabe eingerichtet. Diese Konfiguration ist zunächst einfach, aber wir können sie erst mal im nächsten Kapitel verwenden, um die Windows 95/98/Me- und NT/2000/XP-Clients einzurichten und zu testen. Anschließend wird es richtig interessant, weil wir Dienste hinzufügen, wie etwa Home-Verzeichnisse, Drucker und Sicherheitsmerkmale, sowie die Integration des Servers in eine größere Windows-Domäne vornehmen.

1Ausführbare Dateien von gcc sind für fast jeden modernen Computer erhältlich. Eine Liste der Sites mit gcc und anderer GNU-Software finden Sie unter http://www.gnu.org/.
2Verwechseln Sie dies nicht mit dem Solaris-Befehl killall, der als Teil der Shutdown-Sequenz des Systems ausgeführt wird!
3Je nach der von Ihnen verwendeten Version von xinetd und der Art und Weise, wie dieser kompiliert wurde, müssen Sie an Stelle des HUP-Signals ein USR1-Signal oder ein anderes Signal senden. In der Manpage für xinetd (8) auf Ihrem System finden Sie Näheres.
4Falls Sie Samba nicht selbst kompiliert, sondern als Binary heruntergeladen haben, schauen Sie in die Dokumentation des Pakets, um festzustellen, wo sich die Datei smb.conf befinden könnte. Sie können auch das Programm testparm ausführen und in der ersten Zeile der Ausgabe nach dem Standort von smb.conf suchen. Wurde Samba auf Ihrem Unix-System vorinstalliert, befindet sich eine smb.conf-Datei wahrscheinlich irgendwo auf Ihrem System.
5In diesem Buch betrachten wir Darwin Version 6.0 und OS X Version 10.2.
6Bei frühen Releases von Samba 2.2 gab es Berichte über zeitweilig auftretende Fehler beim Start über inetd. Wir geben Ihnen diese Information, damit Sie bei späteren Releases Bescheid wissen, wenn dieses Problem hoffentlich erkannt und behoben wurde.

TOC PREV NEXT INDEX

Copyright © 2003 by O'Reilly Verlag GmbH & Co.KG