![]()
Die Datei smb.conf ist sozusagen das Herzstück von Samba. Sie wird sowohl von smbd und nmbd als auch von vielen der anderen Tools benutzt, die in der Samba-Programmfamilie enthalten sind. Und obwohl sie wahrscheinlich mehr Parameter hat als Godzilla Zähne, ist sie nicht sehr schwer zu verstehen. Dieses Kapitel bietet eine vertiefte Darstellung der Datei smb.conf. Sie werden sich den allgemeinen Aufbau der Datei, Variablen, die während der Laufzeit zur Anwendung kommen, und einige der globalen Parameter ansehen, die das allgemeine Verhalten von Samba kontrollieren.
Eine Standard-smb.conf-Datei besteht aus verschiedenen Abschnitten, die jeweils mehrere Parameter enthalten. Diese Erklärung ist zwar richtig, aber nicht sehr hilfreich.
Die folgende Definition ergibt vielleicht mehr Sinn: Eine Samba-Konfigurationsdatei ist eine ASCII-Textdatei, die durch Abschnittsüberschriften logisch unterteilt ist, welche durch umschließende eckige Klammern ([ ]) gekennzeichnet sind. So wäre z.B. [footbar] eine gültige Abschnittsüberschrift. Die Namen der Abschnitte, Parameter und Werte sind nicht groß-/kleinsensitiv, es sei denn, sie gehören zum Betriebssystem, wie es für einen Verzeichnispfad der Fall ist. Jeder Abschnitt wird bis zur nächsten Abschnittsüberschrift fortgesetzt. Sambas smb.conf hat drei integrierte Abschnitte namens [global], [homes] und [printers].
Abbildung 5.1. stellt die integrierten Abschnitte und einen Beispielabschnitt dar. Weil Abschnittsüberschriften nicht groß-/kleinsensitiv sind, stehen die Bezeichnungen [global], [GLOBAL] und [Global] alle für den gleichen Abschnitt. Die vier Einstellungen - netbios name, workgroup, security und printing - stehen für globale Parameter. Daher sind sie alle im Abschnitt [global] zu finden, der bei der nächsten Abschnittsüberschrift, [homes], endet. Der letzte Abschnitt, [boss1], steht für eine Festplattenfreigabe, die für diesen Server konfiguriert wurde.
Abb. 5.1: Der generelle Aufbau von smb.conf
Der Abschnitt [global] enthält Parameter, die für die allgemeine Funktionalität des Servers von Bedeutung sind. Die Parameter netbios name und workgroup, die in Kapitel 4, »Installation und Testen der Konfiguration«, kurz beschrieben wurden, sind Beispiele für globale Parameter. Diese und andere Parameter werden später in diesem Kapitel ausführlicher dargestellt.
Der Abschnitt [homes] wurde bereits beim Beispiel-Samba-Server in Kapitel 4 kurz erwähnt. Diese spezielle Freigabe ermöglicht es Benutzern, auf ihre Home-Verzeichnisse zuzugreifen, ohne dass eine spezielle Freigabe für jeden Benutzer eingerichtet werden muss. Der Prozess läuft folgendermaßen ab:
Der dritte integrierte Abschnitt, [printers], ist [homes] ähnlich. Der Unterschied liegt in der Art der Ressource, die hier verfügbar gemacht wird. [homes] erzeugt Home-Verzeichnisse aus der /etc/passwd, während [printers] Drucker aus der /etc/printcap freigibt. Wenn Sie ein anderes Drucksystem als BSD benutzen, müssen Sie eine Hilfs-printcap-Datei für Samba erstellen, um Druckernamen zu authentifizieren. Weitere Informationen hierzu finden Sie in Kapitel 8, »Drucker«.
Jeder Abschnitt außer [global] wird als freigegebene Ressource (kurz Freigabe) angesehen, daher müssen die Abschnitte generellen Benennungskonventionen für Freigaben folgen.
Um benutzerdefinierte Freigaben einzurichten, brauchen Sie nur eine Abschnittsüberschrift, wie z.B. [foo], und die notwendigen Parameter eingeben, die in den Kapiteln 6, »Sicherheitsebenen und Passwörter«, und 7, »Dateifreigaben«, dargestellt werden. Der SMB-Client (z.B. ein Windows-PC) kann dann über den Netzwerkpfad \\Servername\FOO auf die Freigabe zugreifen. Ich habe vorher erwähnt, dass die Abschnittsüberschriften in smb.conf nicht groß-/kleinsensitiv sind. Daher beziehen sich [foo] und [FOO] auf die gleiche Freigabe. Darum kann der PC-Client \\Servername\FOO mounten, wenn die Freigabe als [foo] definiert ist.
Je nachdem wie sehr Sie es mögen, Ihre Arbeit zu dokumentieren - ich hoffe für die arme Person, die nach Ihnen kommt und Ihre Kreation übernehmen muss, dass Sie es sehr mögen -, können Sie freizügig Kommentare einfügen, indem Sie ein Semikolon (;) oder eine Raute (#) als erstes Zeichen einer Zeile einsetzen. Kommentare werden beim Zeilensprung beendet:
; Dies ist ein KommentarTabelle 5.1 ist eine Zusammenfassung der Formate für die smb.conf-Inhalte, die ich dargestellt habe.
Tabelle 5.1: Zusammenfassung der smb.conf-Formate
Eingabe |
Format |
Abschnitt |
Zeile, die einen Zeichenstring enthält, der in eckige Klammern eingeschlossen ist, z.B. [foo]. |
[global] |
Spezieller Abschnitt, der Parameter enthält, die für die generellen Samba-Einstellungen und die Einstellungen der Standardfreigaben gelten. |
[homes] |
Dynamische Freigabe, die Namen aus der /etc/passwd holt. |
[printers] |
Dynamische Freigabe, die Druckernamen aus einer spezifizierten printcap-Datei holt. |
Kommentar |
Zeile, der das Zeichen ; oder # vorangestellt ist. |
Parameter |
Konfigurationsparameter, gefolgt von = und einem Wert, z.B. writable = yes. |
Sie können in smb.conf verschiedene Variablen benutzen. Diese Makros, die durch das Zeichen % gekennzeichnet sind, werden während der Analyse der Konfigurationsdatei beim Ablauf ersetzt. Wenn z.B. Benutzer jdoe eine Anfrage für die Aufnahme einer Arbeitssitzung überträgt, analysiert Samba die smb.conf und ersetzt alle Entsprechungen der Variable %U durch jdoe. Tabelle 5.2 listet alle verfügbaren smb.conf-Variablen auf.
Tabelle 5.2: smb.conf-Variablen
Variable |
Beschreibung |
%a |
Die Architektur des entfernten Rechners. Zuverlässigkeit wird nicht hundertprozentig garantiert, aber in der Regel ist es in der Praxis gut genug. Derzeit unterstützte Werte sind Samba, WfWg, WinNT und Win95. Windows 2000 ist tatsächlich Windows NT 5.0 und wird daher als WinNT erkannt |
%d |
Die Prozess-ID des aktuellen Server-Prozesses |
%g |
Die primäre Gruppe des Benutzernamens %u |
%G |
Die primäre Gruppe des Benutzernamens %U |
%h |
Der Name des Internet-Hosts, auf dem Samba läuft |
%H |
Das Home-Verzeichnis für den Benutzernamen %u |
%I |
Die IP-Adresse des Client-Rechners in Dezimalpunktschreibweise |
%L |
Der NetBIOS-Name des Servers |
%m |
Der NetBIOS-Name des Client-Rechners |
%M |
Der Internet-Host-Name des Client-Rechners |
%N |
Der Name Ihres NIS-Home-Directory-Servers, wie er in der auto.home-Map spezifiziert ist. Wenn Sie Samba ohne AUTOMOUNT-Unterstützung kompiliert haben, ist dies das Gleiche wie %L |
%p |
Der Pfad zum Home-Verzeichnis des Benutzers, wie er in auto.home definiert ist. Es wird vorausgesetzt, dass der NIS-Map-Eintrag durch einen Doppelpunkt getrennt und als %N:%p aufgeteilt ist |
%P |
Das Root-Verzeichnis des aktuellen Dienstes |
%R |
Das Protokoll, das während der Protokollabstimmungsphase bei Verbindungsaufnahme ausgewählt wurde |
%S |
Der Name der aktuellen Freigabe |
%T |
Aktuelles Datum und Zeit |
%u |
Benutzername der aktuellen Freigabe |
%U |
Der Benutzername, den der Client bei Aufnahme der Arbeitssitzung verlangt hat. Dies ist nicht unbedingt der gleiche wie der, der benutzt wurde |
%v |
Samba-Versionsnummer |
Diese Variablen können auf vielfache Art und Weise benutzt werden. Eine Variable kann überall dort eingesetzt werden, wo ein Textstring zugelassen ist. Der folgende [global]-Parametereintrag z.B. würde Samba veranlassen, Verbindungsinformationen in eine Datei namens /var/log/log.NetBIOS-Name zu schreiben, wobei NetBIOS-Name durch den NetBIOS-Namen des Clients ersetzt wird.
log file = /var/log/log.%mHier ist noch ein Beispiel, das Samba mitteilt, abhängig vom Betriebssystem des sich verbindenden Clients ein anderes Domain-Logon-Skript zu benutzen:
logon script = %a.batDie Namen der verfügbaren Logon-Skripte wären WfW.bat, Win95.bat und WinNT.bat. Domain-Logons werden ausführlich in Kapitel 21, »Windows-9x-Domänenkontrolle«, und Anhang A, »Experimentelle PDC-Unterstützung«, dargestellt.
Um die Variablen ausführlich zu erklären, ist vielleicht die [homes]-Freigabe, die ich für das Beispiel in Kapitel 4 benutzt habe, besser geeignet:
; FreigabenameDer Eintrag valid users = %S schränkt Verbindungen auf den Benutzer ein, dessen Benutzername dem der Freigabe entspricht. Denken Sie an meine frühere Erklärung der [homes]-Freigabe. Findet Samba eine Entsprechnung des Freigabenamens in der Datei /etc/passwd, wird eine Freigabe mit den Parametern aus der [homes]-Definition erzeugt, die in den entsprechenden Benutzernamen umbenannt wird. Daher ist der einzige Benutzer, dem die Verbindung erlaubt wird, der Eigentümer des Home-Verzeichnisses.
Noch ein letztes Beispiel, bevor es weitergeht. In meinem Beruf verwalte ich etwa 30 verschiedene Samba-Server, die unter verschiedenen Betriebssystemen laufen. In der Regel werden alle Server gleichzeitig auf die gleiche Version von Samba aktualisiert, aber es gibt immer einige Ausnahmen. Um schnell die installierte Version auf einem Server feststellen zu können, hat jede smb.conf im Abschnitt [global] einen Eintrag, der dem folgenden ähnelt:
server string = samba print server for administration [%v]Mit dem Parameter server string legen Sie den Text fest, der neben dem Rechnernamen in Browse-Listen angezeigt wird, die über Tools wie die Netzwerkumgebung verfügbar sind. %v wird dynamisch auf die Version des aktuell laufenden nmbd-Prozesses aktualisiert. Um also festzustellen, welche Samba-Version auf einem Server läuft, benutze ich einfach den Befehl net view \\Servername von einem Windows-Rechner und untersuche den ausgegebenen String des Servers.
Ein schnelles grep durch die smb.conf-2.0-Manpage legt über 130 einzelne globale Parameter und etwa 100 weitere offen, die mit Freigaben zu tun haben. Die smb.conf-2.0-Manpage ist etwa 8.500 Zeilen lang. Es erübrigt sich zu sagen, dass für die Konfiguration Ihres Servers ziemlich viele Optionen zur Verfügung stehen. In diesem Abschnitt lernen Sie einige der gebräuchlichsten Optionen kennen. Ich hebe die Darstellung einiger [global]-Optionen für spätere Kapitel auf, in denen der Kontext besser zur Funktion des Parameters passt. Eine komplette Auflistung der aktuellen [global]-Parameter finden Sie, wie immer, in der smb.conf-Manpage.
Die Werte für Parameter lassen sich, mit wenigen Ausnahmen, in drei Kategorien aufteilen:
Parameter haben die Form Name = Wert, z.B.:
netbios name = EAGLENur das erste Gleichheitszeichen wird für die Analyse des Parameters und seines Werts benutzt. Der Wert beginnt beim ersten nicht leeren Zeichen nach dem Gleichheitszeichen und endet mit dem ersten Zeilenumbruch, dem kein \-Zeichen vorangestellt ist. Daher hat die folgende Einstellung die gleiche Bedeutung wie das obenstehende Beispiel:
netbios name = EAGLEnetbios name
Sie haben den Parameter netbios name oben schon kurz gesehen. Über diesen Parameter richten Sie NetBIOS-Rechnernamen des Samba-Servers ein. Wie die meisten anderen Parameter hat auch dieser einen Standardwert, nämlich den Hostnamen des Servers. Es ist möglich, diesen Parameter nicht einzurichten und den Standardwert zu benutzen, aber ich persönlich ziehe es vor, den Rechnernamen explizit zu definieren.
Standard: netbios name = Internet-Hostname des RechnersIch möchte die Themen Namensauflösung und Browsing an dieser Stelle nicht zu sehr vertiefen, aber ich habe die Erfahrung gemacht, dass es einfacher ist, wenn NetBIOS-Rechnername und Internet-Hostname gleich sind, es sei denn, Sie haben einen sehr guten Grund, verschiedene Namen zu verwenden. Wenn z.B. der Hostname des Servers eagle ist, würde ich den NetBIOS-Namen explizit wie folgt einrichten:
netbios name = EAGLE
![]()
Alle gültigen DNS-Namen, die nicht länger als 15 Zeichen sind, sind auch gültige NetBIOS-Namen. Das Gegenteil trifft nicht zu, da einige Zeichen, wie z.B. eine Tilde (~), für Rechnernamen benutzt werden können, aber nicht gültig sind, wenn es um DNS geht.
![]()
netbios aliases
In Kapitel 2, »Windows-Netzwerke«, habe ich im Abschnitt »NetBIOS-Überblick« erwähnt, dass es in einer NetBIOS-Verbindung einen »Anrufernamen« auf Seiten des Clients und einen vom Client verlangten »angerufenen« Namen gibt. Ein NetBIOS-Server antwortet nur auf Anfragen, die seinem angerufenen (called) Namen entsprechen. Der Parameter netbios aliases ermöglicht Samba, auf mehrere angerufene Namen zu antworten. Das heißt, Sie können den gleichen Server in einer Arbeitsgruppe unter mehreren Namen sehen, wenn Sie auf einem Windows-Client durch die Netzwerkumgebung browsen. Jeder Server-Name könnte verschiedene Freigaben zur Verfügung stellen, die sich alle auf dem gleichen Rechner befinden. Standardmäßig sind keine netbios aliases eingerichtet.
Standard: netbios aliases =Abbildung 5.2 zeigt einen Server in der Windows-95-Netzwerkumgebung, wenn folgende Einstellung aktiviert ist:
netbios aliases = admin acct business
![]()
Der primäre NetBIOS-Name des Samba-Servers, BILBO, erscheint ebenfalls in der Auflistung. Sie sollten beachten, dass nur der primäre Name (d.h. netbios name = ...) benutzt wird, wenn auf Anfragen für Domänen-Logons reagiert werden soll oder wenn der Server als Browse-Server konfiguriert ist.
![]()

workgroup
Der Parameter workgroup entscheidet, zu welcher Arbeitsgruppe der Server gehört, wenn er auf Anfragen von Clients reagiert. Die Zugehörigkeit zur Arbeitsgruppe beeinflusst auch andere Einstellungen wie z.B. Domänen-Logons, Domänenzugehörigkeit und Browse-Dienste.
Der Standardwert für diesen Parameter wird während der Kompilierung durch das Makro WORKGROUP eingerichtet, das in dem Makefile definiert ist.
Standard: workgroup = während Kompilierung definiertEin Arbeitsgruppenname ist ein NetBIOS-Gruppenname und muss daher den Standardnamenskonventionen folgen (siehe Kapitel 2). Ein Beispiel:
workgroup = FOWLPLAYserver string
Der Parameter server string definiert den Textstring, der im Kommentarabschnitt des Windows-Druckmanagers angezeigt wird. Er wird auch mit dem NetBIOS-Namen des Rechners angezeigt, wenn Sie z.B. in der Netzwerkumgebung durch das Netzwerk browsen. Der Parameter akzeptiert, wie andere auch, smb.conf-Variablen. So können Sie hier z.B. über die Variable %v die aktuell laufende Version von Samba überprüfen.
Die Standardeinstellung ist:
Standard: server string = Samba %vIch gebe normalerweise eine etwas umfassendere Beschreibung ein, die den Standort eines Rechners bestimmt:
server string = Drucker-Server in Abteilung Einkauf [%v]Folgendes Beispiel zeigt die Server in der aktuellen Arbeitsgruppe von einem Windows-NT-4.0-SP5-Rechner gesehen:
H:\>net viewÜber diesen Parameter können Sie den während der Kompilierung festgelegten Standardstandort der smbd-Logdateien außer Kraft setzen.
Standard: log file = bei Kompilierung eingerichtetEs gibt einige Besonderheiten für diesen Parameter. Sie sollten wissen, in welcher Reihenfolge die Dinge geordnet sind.
Weil Samba also zunächst nichts über den in der smb.conf definierten log-file-Standort weiß, schreibt es einige Startinformationen in die Logdatei, die es beim Starten kennt.

![]()
Sie können den während der Kompilierung festgelegten Standardstandort für die Logdatei von nmbd nur überschreiben, indem Sie beim Start den Parameter -l verwenden.
![]()
Dieses Beispiel erzeugt eine separate Logdatei für jeden Benutzer, der sich mit dem Server verbindet (oder versucht, sich zu verbinden):
log file = /var/log/log.%Umax log size
Der Parameter max log size nimmt als Wert eine ganze Zahl an, mit der die maximale Größe für die Logdatei in Kilobyte spezifiziert wird. Samba überprüft regelmäßig die Größe der Logdateien. Hat eine Logdatei die definierte maximale Größe überschritten, benennt Samba die Datei mit der Erweiterung .old um und erstellt eine neue. Existiert bereits eine Datei mit gleichem Namen (Logdatei.old), wird sie überschrieben. Der Standardwert ist auf 5 Mbyte gesetzt.
Standard: max log size = 5000Sie können hier einen beliebigen Wert einfügen. Der folgende Eintrag richtet die maximale Größe der Logdatei auf 2 Mbyte ein:
max log size = 2000Damit dieser Parameter in Kraft treten kann, müssen Sie während der Kompilierung die syslog-Unterstützung aktivieren:
./configure -- with-syslogDer Parameter syslog nimmt als Wert eine ganze Zahl an und gleicht die Samba-Debug-Prioritäten mit den syslog-Log-Prioritäten ab. Die Entsprechungen finden Sie in Tabelle 5.3. Nur Samba-Debug-Meldungen mit einer Priorität, die kleiner als der definierte Wert ist, werden an den syslogd-Daemon übertragen. Standardmäßig werden daher nur Debug-Meldungen mit der Priorität 0 an syslog gesendet, obwohl der Wert auf 1 eingestellt ist.
Standard: syslog = 1Tabelle 5.3 listet die verschiedenen Debug-Prioritäten und ihre syslog-Entsprechungen auf.
Tabelle 5.3: Samba-Debug-Level und entsprechende syslog-Prioritäten
Samba-Debug-Level |
syslog-Level |
0 |
LOG_ERR |
1 |
LOG_WARNING |
2 |
LOG_NOTICE |
3 |
LOG_INFO |
>3 |
LOG_DEBUG |
Sollen alle Meldungen, die der Priorität LOG_NOTICE entsprechen, an den syslogd-Prozess übertragen werden, fügen Sie folgenden Eintrag in smb.conf ein:
syslog = 3Dieser boolesche Parameter bestimmt, ob Meldungen nur an den syslog-Daemon gesendet werden und nicht an die normalen Debug-Logdateien. Dieser Parameter wird zusammen mit dem Parameter syslog verwendet und setzt voraus, dass während der Kompilierung die syslog-Unterstützung aktiviert wurde. Standardmäßig werden Debug-Einträge zusätzlich zu den syslog-Dateien auch an die Standard-smbd- und -nmbd-Logdateien übertragen. Durch folgende Einstellung können Sie Samba veranlassen, Logging-Informationen nur an den syslog-Daemon weiterzugeben:
syslog only = yesÜber den Parameter debug level, der auch log level genannt wird, können Sie den maximalen Grad (Level) der Debug-Meldungen einstellen, die auf die Festplatte geschrieben werden. Der Parameter hat einen Standardwert von 2.
Standard: debug level = 2Der Parameter debug level gilt sowohl für smbd als auch für nmbd. Sie werden Samba-Logs zu Debugging-Zwecken ausführlich in späteren Kapiteln verwenden. Hier ein Beispiel, in dem der Log-Level auf 5 eingestellt ist:
debug level = 5Je höher der Debug-Level eingestellt ist, umso ausführlicher werden Meldungen in die Log-Dateien geschrieben.

![]()
Wenn Sie über die Option -d in der Befehlszeile einen Debug-Level definieren, setzt dieser Wert die Einstellung für den Parameter debug level außer Kraft.
![]()
Mit diesem Parameter legen Sie einen Pfad für das Verzeichnis fest, in das Samba seine freigegebene Speicherdatei, Statusdatei, Browse-Liste, WINS-Datenbank (wenn WINS-Unterstützung aktiviert ist) und Lock-Dateien schreibt, die für die Implementierung des Parameters max connections verwendet werden. Der Parameter max connections wird in Kapitel 7 dargestellt, in dem Sie erfahren, wie Sie Samba für die Freigabe von Verzeichnissen konfigurieren. Der Zweck der Parameter besteht darin, die Anzahl der Benutzer einzuschränken, die sich gleichzeitig mit einer Freigabe verbinden können.
Während der Kompilierung wird normalerweise das Lock-Verzeichnis /usr/local/samba/var/locks als Standard festgelegt:
Standard: lock directory = während der Kompilierung festgelegtIn der Praxis sollten Sie die Standardeinstellung für das Lock-Verzeichnis z.B. dann ändern, wenn Sie mehreren Servern die Benutzung der gleichen Samba-Binärdateien ermöglichen möchten, indem Sie Tools auf einem NFS-gemounteten Dateisystem bereitstellen. Viele Unternehmen mounten solch ein Dateisystem in /usr/local/, um netzwerkspezifische Tools und Utilities freizugeben. Zwar können Sie Binärdateien zwischen Samba-Servern gemeinsam nutzen, aber es ist nicht möglich, ein Lock-Verzeichnis freizugeben. Daher sollten Sie für jeden Server ein lokales Verzeichnis festlegen, in das Samba die notwendigen Dateien platzieren kann.
lock directory = /var/spool/locks/sambaname resolve order
Der Parameter name resolve order entspricht der Datei /etc/nsswitch.conf auf Plattformen wie Linux, Solaris und IRIX. Mit diesem Parameter können Sie die Reihenfolge festlegen, in der versucht wird, Namen aufzulösen. Der Parameterwert ist eine durch Leerstellen getrennte Liste, für die vier Einträge zulässig sind. Tabelle 5.4 listet die möglichen Werte und Besonderheiten auf.
Tabelle 5.4: Zugelassene Einträge für den Parameter name resolve order
Wert |
Beschreibung |
lmhosts |
Die Samba-Datei lmhosts wird auf eine Entsprechung des verlangten Namens durchsucht. |
hosts |
Dieser Wert weist Samba an, eine Standard-Hostname-/IP-Adresse-Auflösung durchzuführen und dafür die auf dem System zur Verfügung stehenden Mittel zu benutzen, z.B. Durchsuchen von /etc/hosts, DNS-Anfragen oder NIS/NIS+-Entsprechungen. Bedenken Sie, dass diese Methode nur benutzt wird, wenn der aufzulösende NetBIOS-Name die Server-Ressourcenkennung (<20>) hat. |
wins |
Ist über die Parameter wins server oder wins support (siehe Kapitel 18, »WINS«) ein WINS-Server definiert, kann der NetBIOS-Name über eine Anfrage an den WINS-Server aufgelöst werden. |
bcast |
Führt die normale NetBIOS-Namensauflösung per Broadcast durch, die voraussetzt, dass sich der in Frage kommende Host im gleichen Broadcast-Subnetz befindet (oder es vielleicht einen WINS-Proxyserver gibt). |
Standardmäßig wird zuerst die lokale lmhosts-Datei durchsucht. Eine lmhosts-Datei ist die NetBIOS-Entsprechung zur Unix-Datei /etc/hosts. Danach versucht Samba, über Standardmethoden wie das Durchsuchen von /etc/hosts oder Anfragen an den DNS den Namen aufzulösen. Waren diese beiden Methoden erfolglos, kontaktiert der Server einen WINS-Server, falls in smb.conf einer spezifiziert wurde. Bleibt auch dies erfolglos, versucht Samba, den Namen über Broadcast-Anfragen aufzulösen.
Standard: name resolve order = lmhosts hosts wins bcastMit folgender Einstellung verwendet Samba für die Namensauflösung keine Broadcasts:
name resolve order = lmhosts wins hostsÜber diesen Parameter können Sie die Anzahl von Minuten festlegen, die eine Verbindung (wie z.B. ein smbd-Prozess) inaktiv sein darf, bevor sie als terminiert angesehen und abgebrochen wird. Eine Verbindung gilt dann als inaktiv, wenn keine Aktivität erkannt wird und sie keine offenen Dateien enthält. Dies kann auf einem Server hilfreich sein, der viele Verbindungen handhabt, die nicht immer benutzt werden. Meine Benutzer haben die Angewohnheit, sich einzuloggen und niemals wieder auszuloggen, selbst wenn sie in den Urlaub gehen. Die meisten Clients haben eine Funktion, die die Verbindung automatisch wiederherstellt und diese Einstellung für den Benutzer transparent macht.
Die Standardeinstellung 0 bestimmt, dass die Verbindung niemals gekappt wird.
Standard: dead time = 0Auf den Servern an meinem Arbeitsplatz habe ich diesen Wert auf 15 Minuten eingestellt:
dead time = 15Dieser Parameter definiert den absoluten Pfad zur Binärdatei smbrun, einem kleinen Programm, das vom smbd-Daemon zur Ausführung von Shell-Befehlen benutzt wird. Wenn Sie Samba über den Standardbefehl make install installiert haben, sollten Sie diesen Parameter nicht gebrauchen. Haben Sie die Samba-Binaries aber manuell an einem anderen Standort installiert als dem durch $prefix in der Makefile definierten, müssen Sie diesen Parameter einrichten. Wenn smbd die smbrun-Binärdatei nicht finden kann, protokolliert es entsprechende Debug-Meldungen in der Datei log.smb. Der Standardwert wird durch die Variable $prefix in dem Makefile bestimmt.
Standard: smbrun = während Kompilierung eingerichtetHaben Sie das Tool in ein anderes Verzeichnis installiert, wie z.B. /usr/bin, müssen Sie die Pfadangabe entsprechend ändern:
smbrun = /usr/bin/smbrunmessage command
Der Parameter message command bestimmt die Aktion, die Samba durchführt, wenn es eine WinPopup-artige Nachricht empfängt. Sie wissen von der Darstellung der NetBIOS-Namen in Kapitel 2, dass Namen mit der Ressourcenbezeichnung <03> den Messenger Server darstellen. Die WinPopup-Meldungen werden an diesen Namen gesendet. Abbildung 5.3 zeigt das WinPopup-Windows-95-Utility, das eine Nachricht an den Samba-Server mit dem Namen BILBO sendet.
Abb. 5.3: Windows 95 OSR2 WinPopup.exe sendet und empfängt Nachrichten
Standardmäßig verwirft Samba WinPopup-artige Nachrichten.
Standard: message command = noneEs gibt viele Möglichkeiten, die Nachricht zu senden. Ich habe das folgende Beispiel benutzt, um die Nachricht, die vom WinPopup-Client gesendet wurde (siehe Abbildung 5.3) auf meinem Linux-Rechner anzuzeigen (siehe Abbildung 5.4):
message command = /bin/bash -c '/usr/X11R6/bin/xterm -T "WinPopup Nachricht" \
Sie könnten auch ein Befehlszeilen-Mail-Utilitiy wie z.B. /bin/mailx benutzen, um die Nachricht über SMTP zu übertragen.
Die WinPopup-Nachricht wird mit dem globalen guest account übertragen (in der Regel der Account nobody). Der Befehl kann neben den Standardmakros zusätzliche Variablen enthalten. Diese sind in Tabelle 5.5 aufgelistet.
Tabelle 5.5: Zusätzliche Variablen für den Parameter message command
Variable |
Beschreibung |
%s |
Name der Datei, die den Textteil der Nachricht enthält. |
%t |
Name des Empfängers, an den die Nachricht gesendet wurde. Normalerweise ist dies der Name des Servers. |
%f |
Name des Clients, von dem die Nachricht stammt. |
Es gibt einige Dinge, die Sie beim Einrichten des Parameters message command beachten sollten:
Dieser Parameter akzeptiert eine Liste aller Freigabenamen, die automatisch in der Browse-Liste für den Samba-Server sichtbar sein sollen. Dies ist wahrscheinlich in Bezug auf dynamisch erzeugte Dienste wie [homes] und [printers] am sinnvollsten. Die Standardeinstellung (keine Freigaben automatisch sichtbar) würde es nicht ermöglichen, die erweiterte Version dieser Freigaben zu sehen.
Standard: auto services = noneDie folgende Einstellung lässt die Home-Verzeichnisse für die Benutzer jerryc und peteh in einer Browse-Liste auftauchen. Dieser Parameter gibt nicht mehr Zugriffsrechte auf die Dateien in der Freigabe als ein Benutzer normalerweise hat.
Nehmen wir an, dass jerryc und peteh Benutzernamen in der lokalen /etc/passwd sind und dass die [homes]-Freigabe korrekt definiert wurde. Diese Freigaben sind normalerweise nicht verfügbar, bis der Benutzer die Verbindung zum Server aufgebaut hat. Die folgende Beispieleinstellung führt dazu, dass die Freigaben in der Browse-Liste gezeigt werden, egal welcher Benutzer sich mit dem Server verbindet.
auto services = jerryc petehDas heißt jedoch nicht, dass Benutzer sich mit diesen bestimmten Freigaben verbinden können. Sie können lediglich sehen, dass die Freigaben auf dem bestimmten Server verfügbar sind.
Während der Verhandlungsphase beim Aufbau einer SMB-Verbindung sendet der Client eine Liste der Protokolldialekte, die er unterstützt. Der Server wählt daraus den höchsten aus, der ihm bekannt ist. Wenn Sie sich dies noch einmal ansehen wollen, blättern Sie zurück zu Kapitel 2.
Mit dem Parameter protocol können Sie den höchsten SMB-Dialekt spezifizieren, den Samba beherrscht. Normalerweise sollten Sie diese Option nicht verwenden, damit Samba die Protokollauswahl automatisch handhaben kann. Die Standardeinstellung ermöglicht smbd, den höchsten möglichen SMB-Dialekt, NT1, auszuwählen.
Standard: protocol = NT1In Tabelle 5.6 sind die zugelassenen Namen und eine kurze Beschreibung aufgelistet.
Tabelle 5.6: SMB-Dialekte
Name |
Beschreibung |
Die früheste Version von SMB, die keine Unterstützung für Benutzernamen bietet. | |
Im Wesentlichen eine schnellere Version von CORE. | |
Die erste moderne Version des Protokolls, die auch Unterstützung für lange Dateinamen bietet. | |
Version 2 ist eine verbesserte Version des LANMAN1-Protokolls. | |
Dies ist die aktuellste Version des in Samba implementierten Protokolls, die auch vom Windows-NT-4.0-Service-Pack-3 verwendet wird. Die Version 2 dieses Protokolls wurde mit dem Service-Pack-4 für Windows NT freigegeben. Windows-NT-SP4-Clients arbeiten auch noch korrekt mit Samba mit der Version 1 des Protokolls. |
Ist dieser Parameter auf true gesetzt, kündigt nmbd sich als Zeitserver für Windows-Clients an und ermöglicht Ihnen daher, folgenden Befehl auf einem Windows-Client über die (MS-DOS-)Eingabeaufforderung auszuführen und die entsprechenden Ergebnisse zu erhalten:
C:\WINDOWS> net timeAuch wenn Sie diesen Parameter nicht einrichten, können Sie einen bestimmten Server immer nach der aktuellen Zeit befragen, indem Sie folgenden Befehl ausführen:
C:\WINDOWS> net time \\<Servername>Standardmäßig antwortet Samba nicht auf time-server-Anfragen.
Standard: time server = noZwar gibt es relativ viele smb.conf-Parameter, aber Sie müssen nur die einrichten, die Sie verwenden wollen, bzw. die, die Sie explizit definieren wollen, wenn Sie genau so übervorsichtig sind wie ich. Das folgende Beispiel ist wahrscheinlich die einfachste funktionierende smb.conf, die ich mir vorstellen kann. Sie implementiert einen einfachen Home-Verzeichnis-Server:
[global]Es liegt an Ihnen und den Bedürfnissen Ihres Netzwerks, wie ausführlich Sie Ihre smb.conf gestalten.
Wenn ich die Samba-Konfigurationsdatei ändere, muss ich dann die beiden Samba-Daemons beenden und neu starten?
Für die meisten Änderungen an der Konfiguration müssen Sie nichts tun. Samba überprüft regelmäßig, ob die Konfigurationsdatei geändert wurde. Wenn ja, wird sie neu geladen. Aber es gibt hier einige Ausnahmen. Erstens, wenn Sie die Definition einer Freigabe ändern, können aktuell damit verbundene Benutzer die Änderungen erst sehen, wenn Sie die Verbindung beendet und die Freigabe neu gemountet haben. Zweitens, einige Änderungen erfordern, dass Samba neu gestartet wird, z.B. die Parameter netbios name oder workgroup.
Kann Samba mehr als einer Arbeitsgruppe gleichzeitig angehören?
Nein. Samba kann nur Mitglied einer Arbeitsgruppe sein.
![]()