|
Samba, 2. AuflageVon Jay Ts, Robert Eckstein, and David Collier-Brown2. 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.
|
|
Kapitel 6
Die Samba-Konfigurationsdatei
In den vorangegangenen Kapiteln haben wir Ihnen gezeigt, wie Sie Samba auf einem Unix-Server installieren und Windows-Clients so einrichten, dass diese eine einfache Festplattenfreigabe nutzen können. In diesem Kapitel erfahren Sie, wie Samba produktivere Rollen in Ihrem Netzwerk übernehmen kann.
Sambas Daemons, smbd und nmbd, werden mit Hilfe einer einzigen ASCII-Datei, der Datei smb.conf, gesteuert, die mehr als 300 eindeutige Optionen (so genannte Parameter) enthalten kann. Einige dieser Optionen werden Sie häufig benutzen und verändern, andere setzen Sie möglicherweise nie ein, je nachdem, wie viele Funktionen Samba seinen Clients anbieten soll.
Dieses Kapitel stellt die Struktur der Samba-Konfigurationsdatei vor und zeigt Ihnen, wie Sie die Optionen einsetzen, mit denen Sie Festplattenfreigaben erzeugen und modifizieren. Die nachfolgenden Kapitel behandeln die Suche, die Konfiguration der Benutzer, die Sicherheit, das Drucken und andere Themen, die mit der Implementierung von Samba in Ihrem Netzwerk zu tun haben.
Die Samba-Konfigurationsdatei
Die Samba-Konfigurationsdatei, standardmäßig als smb.conf bezeichnet, besitzt das gleiche Format wie die Windows-.ini-Dateien. Falls Sie jemals mit einer .ini-Datei gearbeitet haben, werden Sie feststellen, dass smb.conf einfach zu erstellen und zu verändern ist. Und auch wenn Sie noch nie damit zu tun hatten, werden Sie das Format einfach und leicht verständlich finden. Hier ein Beispiel für eine Samba-Konfigurationsdatei:
[global] workgroup = METRAN encrypt passwords = yes wins support = yes log level = 1 max log size = 1000 read only = no [homes] browsable = no map archive = yes [printers] path = /var/tmp printable = yes min print space = 2000 [test] browsable = yes read only = yes path = /usr/local/samba/tmpDiese Konfigurationsdatei basiert auf derjenigen, die wir in Kapitel 2 erzeugt haben. Sie richtet eine Arbeitsgruppe ein, in der Samba die Benutzer mit Hilfe verschlüsselter Kennwörter und der vorgegebenen Sicherheitsmethode auf Benutzerebene authentifiziert. Samba bietet Unterstützung für einen WINS-Name-Server. Wir haben eine sehr einfache Ereignisprotokollierung konfiguriert, so dass die Protokolldatei nicht größer als 1 MByte wird. Die Freigabe [homes] wurde hinzugefügt, um es Samba zu erlauben, eine Festplattenfreigabe für das Home-Verzeichnis jedes Benutzers anzulegen, der einen normalen Unix-Zugang auf dem Server besitzt. Darüber hinaus ist jeder Drucker, der an dem Server registriert wurde, für die Allgemeinheit verfügbar. Dies gilt auch für eine schreibgeschützte Freigabe, die mit dem Verzeichnis /usr/local/samba/tmp verknüpft ist.
Die Struktur der Konfigurationsdatei
Schauen wir uns diese Konfigurationsdatei noch einmal an, dieses Mal von einer etwas höheren Warte:
[global] ... [homes] ... [printers] ... [test] ...Die Namen in den eckigen Klammern beschreiben eindeutige Abschnitte der Datei smb.conf. Jeder Abschnitt bezeichnet die Freigabe (oder den Dienst), auf den sich der Abschnitt bezieht. Die Abschnitte [test] und [homes] beispielsweise sind eindeutige Festplattenfreigaben. Sie enthalten Optionen, die für bestimmte Verzeichnisse auf dem Samba-Server gelten. Die Freigabe [printers] enthält Optionen, die sich auf die verschiedenen Drucker an dem Server beziehen. Alle in der Datei smb.conf definierten Abschnitte mit Ausnahme des Abschnitts [global] stehen den Clients, die sich am Samba-Server anmelden, als Festplatten- oder Druckerfreigabe zur Verfügung.
Die restlichen Zeilen sind einzelne Konfigurationsoptionen für diese Freigabe. Diese Optionen werden fortgesetzt, bis ein neuer Abschnitt entdeckt oder das Ende der Datei erreicht wird. Die Konfigurationsoptionen besitzen ein einfaches Format:
Option = WertDie Optionen in der Datei smb.conf werden gesetzt, indem ihnen ein Wert zugeordnet wird. Wir sollten Sie gleich zu Anfang darauf hinweisen, dass einige der Optionsnamen in Samba wirklich unglücklich gewählt wurden. So ist der Name read only beispielsweise selbsterklärend und typisch für viele der neueren Samba-Optionen. Die Option public ist älter und ein wenig vage. Inzwischen hat sie das weniger verwirrende Synonym guest ok (was bedeutet, dass Gastbenutzer auf die Freigabe zugreifen dürfen). Anhang B enthält einen alphabetischen Index aller Konfigurationsoptionen und deren Bedeutungen.
Whitespace, Anführungszeichen und Kommata
Ein wichtiger Aspekt, den Sie sich in Bezug auf die Konfigurationsoptionen merken müssen, ist die Tatsache, dass Whitespace, also Leerstellen, innerhalb eines Werts wichtig ist. Stellen Sie sich zum Beispiel folgende Option vor:
volume = The Big Bad Hard Drive Number 3543Samba entfernt alle Leerzeichen bis zum ersten T in The. Diese Whitespaces sind unwichtig. Die restlichen Whitespaces sind wichtig und werden beim Einlesen der Datei durch Samba erkannt und bewahrt. In Optionsnamen sind Leerzeichen nicht entscheidend (etwa in read only), wir empfehlen Ihnen jedoch, der Konvention zu folgen und die Leerzeichen zwischen den Wörtern der Optionen beizubehalten.
Falls Sie sich sicherer fühlen, wenn Sie Anführungszeichen am Anfang und am Ende des Werts einer Konfigurationsoption einfügen, können Sie dies tun. Samba ignoriert diese Anführungszeichen, wenn es sie bemerkt. Setzen Sie allerdings keine Anführungszeichen um einen Optionsnamen; Samba betrachtet diese als Fehler.
Normalerweise können Sie Whitespace oder Kommata verwenden, um eine Reihe von Werten in einer Liste voneinander zu trennen. Diese beiden Optionen sind äquivalent:
netbios aliases = sales, accounting, payroll netbios aliases = sales accounting payrollIn einigen Fällen müssen Sie eine bestimmte Form der Trennung benutzen - manchmal sind Leerzeichen erforderlich und manchmal Kommata.
Großschreibung
Die Großschreibung ist in der Samba-Konfigurationsdatei nicht wichtig. Eine Ausnahme bilden Stellen, an denen die Datei mit dem zu Grunde liegenden Betriebssystem kollidieren würde. Lassen Sie uns zum Beispiel annehmen, dass Sie die folgende Option in eine Freigabe aufgenommen haben, die auf /export/samba/simple verweist:
PATH = /EXPORT/SAMBA/SIMPLESamba hätte keine Probleme mit der Konfigurationsoption path, wenn diese vollständig in Großbuchstaben wäre. Wenn es jedoch versucht, eine Verbindung zu dem angegebenen Verzeichnis herzustellen, hätte dies keinen Erfolg, da das Unix-Dateisystem zwischen Groß- und Kleinbuchstaben unterscheidet. Das bedeutet, dass der aufgeführte Pfad nicht gefunden werden würde und die Clients sich nicht an der Freigabe anmelden könnten.
Zeilenfortsetzung
Sie können eine Zeile in der Samba-Konfigurationsdatei mit Hilfe eines Backslashs fortsetzen:
comment = Die erste Freigabe, die die wichtigsten Kopien \ des neuen Software-Produkts von Teamworks enthaelt.Wegen des Backslashs werden diese beiden Zeilen von Samba als eine einzige Zeile betrachtet. Die zweite Zeile beginnt bei dem ersten Nicht-Whitespace-Zeichen, das Samba entdeckt; in diesem Fall beim d von des.
Kommentare
Sie können Kommentare in die smb.conf-Konfigurationsdatei aufnehmen, indem Sie eine Zeile entweder mit einem Hash-Zeichen (#) oder einem Semikolon ( ; ) beginnen lassen. Für diesen Zweck sind die beiden Zeichen äquivalent. So würden etwa die ersten drei Zeilen des folgenden Beispiels als Kommentare betrachtet werden:
# Dies ist der Abschnitt printers. Wir haben einen freien Platz von wenigstens ; 2000 vorgesehen, um Fehler auszuschließen, die nach unserer Beobachtung ; auftreten, wenn der Spooler voll läuft. [printers] public = yes min print space = 2000Samba ignoriert alle Kommentarzeilen in seiner Konfigurationsdatei; es gibt keine Einschränkungen zu dem, was nach dem einleitenden Hash-Zeichen oder Semikolon kommt. Beachten Sie, dass das Zeilenfortsetzungszeichen (\) auf einer Kommentarzeile nicht beachtet wird. Es wird wie der Rest der Zeile ignoriert.
Samba lässt das Mischen von Kommentarzeilen und Parametern nicht zu. Setzen Sie daher Kommentare nicht auf die gleiche Zeile wie etwas anderes:
path = /d # Datenpartition des ServersSolche Fehler, bei denen der Parameterwert mit einem String definiert wird, sind meist schwierig festzustellen. Das Programm testparm beschwert sich nicht, und die einzigen Hinweise, die Sie erhalten, sind die Ausgabe von testparm, dass der Parameter path auf /d # Datenpartition des Servers gesetzt ist, und Fehler, wenn die Clients versuchen, auf die Freigabe zuzugreifen.
Änderungen zur Laufzeit
Sie können die Konfigurationsdatei smb.conf und ihre Optionen jederzeit ändern, während die Samba-Daemons laufen. Standardmäßig prüft Samba die Konfigurationsdatei alle 60 Sekunden. Findet es irgendwelche Änderungen, werden diese unmittelbar danach wirksam.
Es kann sehr bequem sein, dass Samba die Konfigurationsdatei automatisch überprüft. Das bedeutet aber auch, dass Sie beim direkten Bearbeiten der smb.conf jedes Mal sofort die Konfiguration Ihres Netzwerks ändern, sobald Sie die Datei speichern. Falls Sie mehr als nur eine kleinere Änderung vornehmen, ist es besser, wenn Sie die smb.conf in eine temporäre Datei speichern, diese bearbeiten, testparm dateiname ausführen, um sie zu prüfen, und die temporäre Datei dann zurück nach smb.conf kopieren. Auf diese Weise können Sie sicher sein, dass alle Ihre Änderungen auf einmal wirksam werden und das auch nur dann, wenn Sie sicher sind, dass Sie genau die Konfiguration erzeugt haben, die Sie auch implementieren wollten.
Falls Sie nicht auf das automatische Laden der Konfigurationsdatei warten wollen, können Sie das Neuladen erzwingen, indem Sie entweder ein Hangup-Signal an die smbd- und nmbd-Prozesse senden oder einfach die Daemons neu starten. Tatsächlich erweist es sich als eine gute Idee, die Daemons neu zu starten, da dadurch die Clients gezwungen werden, die Verbindung zu beenden und neu aufzubauen, wodurch sichergestellt wird, dass die neue Konfiguration auf alle Clients angewendet wird. Wir haben Ihnen in Kapitel 2 gezeigt, wie die Daemons neu gestartet werden. Das Senden eines Hangup-Signals (HUP) funktioniert ähnlich. Unter Linux kann dies über den folgenden Befehl erledigt werden:
# killall -HUP smbd nmbdIn diesem Fall werden nicht alle Änderungen sofort durch die Clients bemerkt. Beispielsweise werden Änderungen an einer Freigabe, die gerade in Benutzung ist, erst dann registriert, wenn der Client die Verbindung zu dieser Freigabe beendet und erneut aufbaut. Auch serverspezifische Parameter wie die Arbeitsgruppe oder der NetBIOS-Name des Servers werden nicht sofort wirksam. (Dieses Verhalten wurde absichtlich so implementiert, da es verhindert, dass aktive Clients plötzlich abgemeldet werden oder unerwartete Zugriffsprobleme auftreten, während eine Sitzung läuft.)
Variablen
Da für jeden sich anmeldenden Client eine neue Kopie des smbd-Daemons erzeugt wird, ist es möglich, jedem Client seine eigene angepasste Konfigurationsdatei zu bieten. Samba erlaubt eine beschränkte, aber dennoch nützliche Form der Variablensubstitution in der Konfigurationsdatei, um Informationen über den Samba-Server und den Client zu dem Zeitpunkt in die Konfiguration einzubinden, zu dem der Client sich anmeldet. In der Konfigurationsdatei beginnt eine Variable mit einem Prozentzeichen (%), gefolgt von einem einzelnen Groß- oder Kleinbuchstaben. Sie kann nur auf der rechten Seite einer Konfigurationsoption (d.h. nach dem Gleichheitszeichen) auftauchen. Hier ein Beispiel:
[pub] path = /home/ftp/pub/%aDie Variable %a steht für die Architektur des Client-Systems und wird so ersetzt, wie in Tabelle 6-1 gezeigt.
In diesem Beispiel weist Samba Client-Systemen einen eindeutigen Pfad für die Freigabe [pub] zu, der davon abhängt, welches Betriebssystem auf ihnen läuft. Die Pfade, die die einzelnen Clients als ihre Freigabe sehen, unterscheiden sich entsprechend der Architektur des Clients:
/home/ftp/pub/WfwG /home/ftp/pub/Win95 /home/ftp/pub/WinNT /home/ftp/pub/Win2K /home/ftp/pub/Samba /home/ftp/pub/UNKNOWNDie Benutzung von Variablen auf diese Weise ist ganz praktisch, wenn Sie wollen, dass unterschiedliche Benutzer eigene Konfigurationen auf der Grundlage ihrer eigenen Charakteristika oder Bedingungen erhalten. Samba besitzt 20 Variablen, wie Tabelle 6-2 zeigt.
Samba-Variablen Variable Definition %a Architektur des Clients (siehe Tabelle 6-1) %I IP-Adresse des Clients (z.B. 172.16.1.2) %m NetBIOS-Name des Clients %M DNS-Name des Clients %u Aktueller Unix-Benutzername %U Angeforderter Client-Benutzername (wird nicht immer von
Samba verwendet) %H Home-Verzeichnis von %u %g Primäre Gruppe von %u %G Primäre Gruppe von %U %S Name der aktuellen Freigabe %P root-Verzeichnis der aktuellen Freigabe %p Pfad des Automounters auf das root-Verzeichnis der Freigabe, falls verschieden von %P %d Prozess-ID des aktuellen Servers %h DNS-Hostname des Samba-Servers %L NetBIOS-Name des Samba-Servers %N Home-Verzeichnis-Server aus der automount-Map %v Samba-Version %R Ausgehandelte SMB-Protokollstufe %T Aktuelles Datum und Uhrzeit %$var Wert der Umgebungsvariablen var
Hier ist ein weiteres Beispiel für die Benutzung von Variablen: Nehmen Sie einmal an, dass es fünf Clients in Ihrem Netzwerk gibt, aber einer der Clients, maya, erfordert eine etwas andere [homes]-Konfiguration. Mit Samba lässt sich das leicht erledigen:
[homes] ... include = /usr/local/samba/lib/smb.conf.%m ...Die Option include sorgt dafür, dass zusätzlich zur aktuellen Datei eine separate Konfigurationsdatei für jede NetBIOS-Maschine (%m) eingelesen wird. Lautet der Hostname des Client-Systems maya und gibt es eine Datei smb.conf.maya im Verzeichnis /usr/local/samba/lib, fügt Samba diese Konfigurationsdatei in die Standardkonfigurationsdatei ein. Werden Konfigurationsoptionen in smb.conf.maya erneut angegeben, setzen diese Werte die Optionen außer Kraft, die zuvor in dieser Freigabe erkannt wurden. Beachten Sie, dass wir »zuvor« sagen. Werden Optionen in der Hauptkonfigurationsdatei nach der include-Option erneut angegeben, beachtet Samba diese neuen Werte für die Freigabe, in der sie definiert wurden.
Existiert die Datei nicht, die durch den include-Parameter angegeben wurde, liefert Samba keine Fehlermeldung. Es tut überhaupt nichts. Dies erlaubt es Ihnen, beim Einsatz dieser Strategie nur eine einzige zusätzliche Konfigurationsdatei für maya zu erzeugen, anstatt eine für jeden Client im Netzwerk anlegen zu müssen.
Client-spezifische Konfigurationsdateien können eingesetzt werden, um bestimmte Clients anzupassen. Sie können auch die Fehlersuche bei Samba erleichtern. Wenn wir beispielsweise einen Client mit einem Problem haben, können wir ihm mit Hilfe dieses Ansatzes eine eigene Protokolldatei geben, für die wir eine höhere Protokollierungsstufe einstellen. So können wir feststellen, was Samba tut, ohne alle anderen Clients zu behindern oder die Platte mit unnützen Protokollen zu verstopfen.
Sie können die Variablen in Tabelle 6-2 verwenden, um einer Vielzahl von Samba-Optionen eigene Werte zu übergeben. Wir werden im Laufe der nächsten Kapitel einige dieser Optionen näher betrachten.
Besondere Abschnitte
Nachdem wir einen ersten Einblick in die Welt der Variablen genommen haben, sollten wir über einige besondere Abschnitte der Samba-Konfigurationsdatei sprechen. Auch hier müssen Sie sich keine Sorgen machen, wenn Sie nicht jede Konfigurationsoption verstehen, die hier aufgeführt wird, wir werden in den folgenden Kapiteln näher auf sie eingehen.
Der Abschnitt [ global]
Der Abschnitt [global] taucht in praktisch jeder Samba-Konfigurationsdatei auf, obwohl er nicht zwingend erforderlich ist. Es gibt zwei Aufgaben für den Abschnitt [global]. Hier werden serverweite Einstellungen definiert. Außerdem werden alle Optionen, die für Freigaben gelten, in allen Freigabe-Definitionen als Vorgabe verwendet, es sei denn, sie werden innerhalb der Freigabe-Definition überschrieben.
Um dies zu verdeutlichen, schauen wir uns noch einmal das Beispiel vom Anfang des Kapitels an:
[global] workgroup = METRAN encrypt passwords = yes wins support = yes log level = 1 max log size = 1000 read only = no [homes] browsable = no map archive = yes [printers] path = /var/tmp printable = yes min print space = 2000 [test] browsable = yes read only = yes path = /usr/local/samba/tmpWenn ein Client eine Verbindung zur Freigabe [test] herstellt, liest Samba zuerst den Abschnitt [global] und legt die Option read only = no als globalen Standardwert für jede Freigabe fest, die es in der Konfigurationsdatei entdeckt. Dies schließt die Freigaben [homes] und [test] ein. Wenn es die Definition der [test]-Freigabe einliest, findet es die Konfigurationsoption read only = yes und überschreibt den vorgegebenen Wert aus dem Abschnitt [global] mit dem Wert yes.
Jede Option, die vor dem ersten gekennzeichneten Abschnitt auftaucht, wird als globale Option betrachtet. Dies bedeutet, dass die Abschnittsüberschrift [global] nicht unbedingt erforderlich ist. Wir empfehlen Ihnen allerdings, diese Überschrift aus Gründen der Klarheit und zur weiteren Sicherung der Kompatibilität immer zu setzen.
Der Abschnitt [ homes]
Wenn ein Client versucht, eine Verbindung zu einer Freigabe herzustellen, die nicht in der Datei smb.conf auftaucht, sucht Samba nach einer [homes]-Freigabe in der Konfigurationsdatei. Existiert eine Freigabe [homes], wird angenommen, dass der nicht aufgelöste Freigabename ein Unix-Benutzername ist. Ist dieser Benutzername in der Kennwortdatenbank auf dem Samba-Server zu finden, geht Samba davon aus, dass es sich bei dem Client um einen Unix-Benutzer handelt, der versucht, sich auf seinem Home-Verzeichnis auf dem Server anzumelden.
Stellen Sie sich beispielsweise vor, ein Client-System meldet sich zum ersten Mal auf dem Samba-Server toltec an und versucht, eine Verbindung zu einer Freigabe namens [alice] herzustellen. Es wurde keine Freigabe [alice] in der Datei smb.conf definiert, aber es gibt eine [homes]-Freigabe. Samba durchsucht also die Kennwort-Datenbankdatei und findet auf dem System einen Benutzerzugang namens alice. Anschließend vergleicht Samba das Kennwort, das vom Client angegeben wurde, mit dem Unix-Kennwort des Benutzers alice - entweder mit Hilfe der Kennwort-Datenbankdatei, falls unverschlüsselte Kennwörter verwendet werden, oder mit Sambas smbpasswd-Datei, falls verschlüsselte Kennwörter zum Einsatz kommen. Stimmen die Kennwörter überein, weiß Samba, dass es richtig geraten hat: Der Benutzer alice versucht, sich an seinem Home-Verzeichnis anzumelden. Samba erzeugt dann eine Freigabe namens [alice] für diesen Benutzer, bei der der Pfad der Freigabe auf das Home-Verzeichnis von alice gesetzt ist.
Der Einsatz des Abschnitts [homes] zum Anlegen von Benutzern (und der Umgang mit deren Kennwörtern) wird in Kapitel 9 genauer behandelt.
Der Abschnitt [printers]
Der dritte spezielle Abschnitt wird [printers] genannt und ähnelt [homes]. Versucht ein Client, eine Verbindung zu einer Freigabe aufzunehmen, die sich nicht in der Datei smb.conf befindet, und kann deren Name auch nicht in der Kennwortdatei gefunden werden, prüft Samba, ob es sich dabei um eine Druckerfreigabe handelt. Dazu liest Samba die Printer-Capabilities-Datei (normalerweise /etc/printcap), um festzustellen, ob der Name der Freigabe dort auftaucht.1 Ist dies der Fall, erzeugt Samba eine Freigabe mit dem Namen des Druckers.
Das bedeutet, dass Sie wie bei [homes] nicht für jeden Systemdrucker eine Freigabe in der Datei smb.conf verwalten müssen. Stattdessen beachtet Samba die Unix-Druckerregistrierung, wenn Sie es dazu auffordern, und stellt die registrierten Drucker den Client-Systemen zur Verfügung. Es gibt jedoch eine potenzielle Schwierigkeit: Wenn Sie einen Zugang namens fred und einen Drucker namens fred haben, findet Samba immer zuerst den Benutzerzugang, selbst wenn der Client wirklich eine Verbindung zum Drucker benötigt hat.
Das Einrichten der [printers]-Freigabe wird in Kapitel 10 näher behandelt.
Konfigurationsoptionen
Die Optionen in der Samba-Konfigurationsdatei fallen in eine von zwei Kategorien: globale Optionen oder Freigabeoptionen. Jede Kategorie bestimmt, wo eine Option in der Konfigurationsdatei auftreten kann.
Globale Optionen dürfen nur im Abschnitt [global] stehen und nirgendwo sonst. Es handelt sich hierbei um Optionen, die typischerweise das Verhalten des Samba-Servers selbst beeinflussen und keine seiner Freigaben.
Freigabeoptionen können in Freigabe-Definitionen, im Abschnitt [global] oder in beidem auftauchen. Wenn sie im Abschnitt [global] stehen, definieren sie ein Standardverhalten für alle Freigaben, allerdings kann diese Option für eine Freigabe durch einen eigenen Wert überschrieben werden.
Außerdem können Konfigurationsoptionen drei Arten von Werten annehmen. Folgende sind möglich:
Dabei handelt es sich einfach um Ja- oder Nein-Werte. Diese können durch folgende Elemente repräsentiert werden: yes, no, true, false, 1 oder 0. Bei diesen Werten spielt die Groß-/Kleinschreibung keine Rolle: YES ist identisch mit yes.
Dies ist eine dezimale, hexadezimale oder oktale Zahl. Die Standardsyntax 0xnn wird für hexadezimale Werte und 0nnn für oktale Werte verwendet.
Dies ist ein String mit Zeichen (bei denen die Groß-/Kleinschreibung beachtet werden muss), etwa ein Dateiname oder ein Benutzername.
Optionen der Konfigurationsdatei
Sie können Samba anweisen, Konfigurationsoptionen bei der Verarbeitung einzubinden oder zu ersetzen. Die Optionen dazu sind in Tabelle 6-3 zusammengefasst.
config file
Die globale Option config file gibt eine Ersatzkonfigurationsdatei an, die geladen werden soll, wenn diese Option erkannt wird. Existiert die Zieldatei, werden der Rest der aktuellen Konfigurationsdatei sowie die bisher erkannten Optionen verworfen, und Samba konfiguriert sich selbst vollständig mit den Optionen in der neuen Datei. Zusammen mit der Option config file können Variablen eingesetzt werden. Das ist ganz hilfreich, falls Sie eine spezielle Konfigurationsdatei auf der Grundlage des NetBIOS-Maschinennamens oder des Benutzers des Clients, der sich anmeldet, haben wollen.
So weist zum Beispiel die folgende Zeile Samba an, eine Konfigurationsdatei zu verwenden, die durch den NetBIOS-Namen des sich anmeldenden Clients bestimmt wird, falls eine solche Datei existiert. Ist dies der Fall, werden die in der ursprünglichen Konfigurationsdatei festgelegten Optionen ignoriert:
[global] config file = /usr/local/samba/lib/smb.conf.%mExistiert die angegebene Konfigurationsdatei nicht, wird die Option ignoriert, und Samba konfiguriert sich weiterhin auf der Grundlage der aktuellen Datei. Dadurch kann eine vorgegebene Konfigurationsdatei die meisten Clients bedienen, während gleichzeitig Ausnahmen mit angepassten Konfigurationsdateien angeboten werden können.
include
Diese Option, die früher bereits ausführlicher besprochen wurde, kopiert die Zieldatei an der festgelegten Stelle in die aktuelle Konfigurationsdatei, wie in Abbildung 6-1 gezeigt wird. Auch diese Option kann zusammen mit Variablen benutzt werden. Sie können die Option folgendermaßen einsetzen:
[global] include = /usr/local/samba/lib/smb.conf.%mExistiert die angegebene Konfigurationsdatei nicht, wird die Option ignoriert. Optionen in der mit include eingefügten Datei setzen alle Optionen außer Kraft, die vorher festgelegt wurden, nicht jedoch die später angegebenen. In Abbildung 6-1 überschreiben alle drei Optionen ihre vorherigen Werte.
Die Option include funktioniert nicht mit den Variablen %u (Benutzer), %P (root-Verzeichnis der aktuellen Freigabe) oder %S (Name der aktuellen Freigabe), da diese Werte zu dem Zeitpunkt, zu dem der Parameter include verarfbeitet wird, noch nicht gesetzt sind.
copy
Die Konfigurationsoption copy erlaubt es Ihnen, die Konfigurationsoptionen der Freigabe zu klonen, die Sie in der aktuellen Freigabe festlegen. Die Zielfreigabe muss früher in der Konfigurationsdatei auftauchen als die Freigabe, die die Kopie ausführt, zum Beispiel:
[template] writable = yes browsable = yes valid users = andy, dave, jay [data] path = /usr/local/samba copy = templateBeachten Sie, dass alle Optionen in der Freigabe, die die Anweisung copy ausgelöst hat, diejenigen aus der geklonten Freigabe außer Kraft setzen; es spielt dabei keine Rolle, ob sie vor oder nach der Anweisung copy auftreten.
Server-Konfiguration
Wir werden nun von Grund auf beginnen und eine Konfigurationsdatei für unseren Samba-Server erstellen. Zuerst führen wir drei grundlegende Konfigurationsoptionen ein, die im Abschnitt [global] der Datei smb.conf auftreten können:
[global] # Server-Konfigurationsparameter netbios name = toltec server string = Samba %v on %L workgroup = METRAN encrypt passwords = yesDiese Konfigurationsdatei ist sehr einfach; sie macht den Samba-Server unter dem NetBIOS-Namen toltec bekannt. Darüber hinaus platziert sie das System in der Arbeitsgruppe METRAN und zeigt den Clients eine Beschreibung an, die die Versionsnummer von Samba sowie den NetBIOS-Namen des Samba-Servers enthält.
Falls Sie die Zeile encrypt passwords = yes bereits in Ihrer früheren Konfigurationsdatei verwendet haben, sollten Sie dies hier ebenfalls tun.
Wenn Sie wollen, können Sie diese Konfigurationsdatei einmal ausprobieren. Erzeugen Sie mit dem zuvor gezeigten Text eine Datei namens smb.conf im Verzeichnis /usr/local/samba/lib. Starten Sie anschließend den Samba-Server neu und verwenden Sie einen Windows-Client, um die Ergebnisse zu überprüfen. Achten Sie darauf, dass sich Ihre Windows-Clients auch in der Arbeitsgruppe METRAN befinden. Wenn Sie die Netzwerkumgebung auf einem Windows-Client doppelt anklicken, sollten Sie ein Fenster sehen, das Abbildung 6-2 ähnelt. (In dieser Abbildung ist Mixtec ein weiterer Samba-Server und Zapotec ein Windows-Client.)
Sie können den server string überprüfen, indem Sie sich im Netzwerkumgebung-Fenster die Details anzeigen lassen (wählen Sie Details im Menü Ansicht). Sie sollten ein Fenster ähnlich Abbildung 6-3 sehen.
Wenn Sie das Symbol toltec anklicken würden, müsste ein Fenster auftauchen, das die Dienste anzeigt, die dieser Server anbietet. In diesem Fall wäre das Fenster völlig leer, da es auf dem Server noch keine Freigaben gibt.
Optionen zur Server-Konfiguration
Tabelle 6-4 fasst die gerade vorgestellten Optionen zur Server-Konfiguration zusammen. Alle drei Optionen gelten global, müssen also im Abschnitt [global] der Konfigurationsdatei stehen.
netbios name
Die Option netbios name erlaubt es Ihnen, den NetBIOS-Namen des Servers zu setzen, zum Beispiel:
netbios name = YORKVM1Der Vorgabewert für diese Konfigurationsoption ist der Hostname des Servers - das heißt der erste Teil seines vollqualifizierten Domänennamens. So würde beispielsweise einem System mit dem DNS-Namen ruby.ora.com standardmäßig der NetBIOS-Name RUBY gegeben werden. Sie können diese Option dazu nutzen, den NetBIOS-Namen des Systems erneut festzulegen (wie wir es getan haben). Häufiger wird sie jedoch dazu verwendet, dem Samba-Server einen NetBIOS-Namen zuzuweisen, der sich von seinem aktuellen DNS-Namen unterscheidet. Denken Sie daran, dass der zugewiesene Name den Regeln für gültige NetBIOS-Maschinennamen unterliegt, wie in Kapitel 1 ausgeführt.
Das Ändern des NetBIOS-Namens des Servers wird nur dann empfohlen, wenn Sie einen wirklich guten Grund dafür haben. Ein solcher Grund liegt vor, wenn der Hostname des Systems nicht eindeutig ist, weil das LAN über zwei oder mehr DNS-Domänen verteilt ist. Zum Beispiel ist YORKVM1 ein guter NetBIOS-Kandidat für vm1.york.example.com, um dieses System von vm1.falkirk.example.com zu unterscheiden, das den gleichen Hostnamen trägt, aber in einer anderen DNS-Domäne liegt.
Ein anderer Anwendungsfall für diese Option ist das Umsetzen von SMB-Diensten von einem ausgefallenen oder außer Betrieb gestellten System. Wenn zum Beispiel SALES der SMB-Server der Abteilung ist und plötzlich ausfällt, könnten Sie sofort netbios name = SALES auf einem Backup-Samba-Server setzen, der die Aufgabe der anderen Maschine übernimmt. Die Benutzer müssen ihre Laufwerkzuordnungen nicht auf einen anderen Server ausrichten - neue Verbindungen zu SALES gehen einfach zu dem neuen Server.
workgroup
Der Parameter workgroup legt die aktuelle Arbeitsgruppe (oder Domäne) fest, in der der Samba-Server sich selbst bekannt macht. Clients, die auf Freigaben auf dem Samba-Server zugreifen wollen, müssen sich in der gleichen NetBIOS-Gruppe befinden. Denken Sie daran, dass Arbeitsgruppen eigentlich einfach nur NetBIOS-Gruppennamen sind und den Standard-NetBIOS-Namenskonventionen folgen müssen, die in Kapitel 1 dargestellt werden.
Der Vorgabewert für diesen Parameter wird bei der Kompilierung auf WORKGROUP gesetzt. Da dies der Standardarbeitsgruppenname für jedes nicht-konfigurierte Windows- und Samba-System ist, empfehlen wir Ihnen, immer Ihren Arbeitsgruppennamen in der Samba-Konfigurationsdatei zu setzen. Wenn Sie den Arbeitsgruppennamen auswählen, vermeiden Sie es, den gleichen Namen wie bei einem Server oder Benutzer einzustellen. Dadurch beugen Sie möglichen Problemen bei der WINS-Namensauflösung vor.
server string
Der Parameter server string definiert einen Kommentar-String, der neben dem Server-Namen in der Netzwerkumgebung (in der Detailansicht) sowie im Kommentareintrag des Microsoft Windows-Druckermanagers auftaucht.2 Sie können Variablen einsetzen, um Informationen in der Beschreibung zur Verfügung zu stellen. So lautete unser Eintrag:
[global] server string = Samba %v on (%h)Der Vorgabewert für diese Option zeigt lediglich die aktuelle Version von Samba und ist äquivalent zu:
server string = Samba %vDie Konfiguration einer Plattenfreigabe
Wir erwähnten im vorangegangenen Abschnitt, dass es auf dem Server toltec keine Plattenfreigaben gibt. Lassen Sie uns daher an der Konfigurationsdatei weiterarbeiten und eine leere Festplattenfreigabe namens [data] erzeugen. Folgende Ergänzungen erledigen dies:
[data] path = /export/samba/data comment = Datenlaufwerk volume = Sample-Data-Drive writable = yesDie Freigabe [data] ist typisch für eine Samba-Plattenfreigabe. Die Freigabe wird dem Verzeichnis /export/samba/data auf dem Samba-Server zugeordnet. Wir haben außerdem einen Kommentar angegeben, der die Freigabe als Datenlaufwerk beschreibt sowie als Name für die Freigabe selbst verwendet wird.
Laut Voreinstellung erzeugt Samba eine schreibgeschützte Freigabe. Daher muss die Option writable für jede Plattenfreigabe, die schreibbar sein soll, explizit gesetzt werden.
Sie müssen außerdem das Verzeichnis /export/samba/data auf dem Samba-Server anlegen. Dazu verwenden Sie folgende Befehle:
# mkdir /export/samba/data # chmod 777 /export/samba/dataWenn Sie nun wieder eine Verbindung zum Server toltec herstellen, indem Sie in der Windows-Netzwerkumgebung auf sein Symbol doppelklicken, sehen Sie eine einzelne Freigabe mit der Bezeichnung data, wie in Abbildung 6-4 gezeigt. Diese Freigabe hat Lese-/Schreibzugriff, es können also Dateien von ihr und auf sie kopiert werden.
Optionen zur Konfiguration einer Plattenfreigabe
Die gerade vorgestellten Samba-Konfigurationsoptionen für Plattenfreigaben sind in Tabelle 6-5 aufgeführt.
path
Diese Option, die das Synonym directory besitzt, gibt den Pfadnamen für die Wurzel des freigegebenen Verzeichnisses oder Druckers an. Sie können ein beliebiges Verzeichnis auf dem Samba-Server wählen. Der Eigentümer des Samba-Prozesses muss lediglich Lese- und Schreibzugriff auf dieses Verzeichnis haben. Handelt es sich um den Pfad für eine Druckerfreigabe, sollte er auf ein temporäres Verzeichnis verweisen, in dem die Dateien zwischengespeichert werden können, bevor sie an den Zieldrucker weitergeleitet werden (gern genommen werden /tmp und /var/spool). Ist dieser Pfad für eine Plattenfreigabe gedacht, entspricht der Inhalt des Ordners, der den Freigabenamen auf dem Client repräsentiert, dem Inhalt des Verzeichnisses auf dem Samba-Server.
Das Verzeichnis, das als Wert für path festgelegt wird, kann als relativer Pfad angegeben werden. In diesem Fall liegt der Pfad relativ zu dem Verzeichnis, das durch den Parameter root directory vorgegeben wurde. Da root directory standardmäßig root (/ ) ist, bietet es sich im Allgemeinen an, absolute Pfade für den Parameter path zu verwenden, es sei denn, root directory wurde auf einen anderen als den Vorgabewert gesetzt.
comment
Die Option comment erlaubt es Ihnen, einen Kommentar einzugeben, der an den Client gesendet wird, wenn dieser versucht, die Freigabe zu durchsuchen. Der Benutzer kann den Kommentar in der detaillierten Ansicht des Freigabeordners oder über den Befehl net view an der MS-DOS-Eingabeaufforderung sehen. So könnten Sie beispielsweise einen Kommentar für eine Freigabe einfügen:
[network] comment = Netzwerklaufwerk path = /export/samba/networkVerwechseln Sie die Option comment, die die Freigaben eines Samba-Servers dokumentiert, nicht mit der Option server string, die den Server selbst dokumentiert.
volume
Diese Option erlaubt es Ihnen, den Volume-Namen der Freigabe festzulegen, der ansonsten standardmäßig auf den Namen der Freigabe lauten würde, der in der smb.conf angegeben wird.
Manche Software-Installationsprogramme prüfen den Volume-Namen der Distributions-CD-ROM, um sicherzustellen, dass sich die richtige CD-ROM im Laufwerk befindet, bevor sie versuchen, davon zu installieren. Falls Sie den Inhalt der CD-ROM in eine Netzwerkfreigabe kopieren, um davon zu installieren, können Sie diese Option einsetzen, um dafür zu sorgen, dass das Installationsprogramm den richtigen Volume-Namen sieht:
[network] comment = Netzwerklaufwerk volume = ASVP-102-RTYUIKA path = /home/samba/networkread only, writable
Die Optionen read only und writable (auch als writeable oder write ok bezeichnet) stellen in der Tat zwei Möglichkeiten dar, das Gleiche auszudrücken, allerdings von entgegengesetzten Ausgangspunkten aus. Sie können zum Beispiel eine der folgenden Optionen im Abschnitt [global] oder in einer speziellen Freigabe setzen:
read only = yes writable = noWenn beide Optionen entsprechend gesetzt sind, können Daten von der Freigabe gelesen, aber nicht auf sie geschrieben werden. Vermutlich glauben Sie jetzt, dass Sie diese Option nur brauchen, wenn Sie eine schreibgeschützte Freigabe erzeugen. Beachten Sie jedoch, dass ein Schreibschutz für Freigaben das vorgegebene Verhalten darstellt. Falls Sie Daten auf eine Freigabe schreiben wollen, müssen Sie in der Konfigurationsdatei für jede Freigabe ausdrücklich eine der folgenden Optionen festlegen:
read only = no writable = yesTreten die beiden Optionen jeweils mehr als einmal auf, beachtet Samba für die Freigabe den letzten Wert, den es erkennt.
Netzwerkoptionen für Samba
Wenn Sie Samba auf einem so genannten Multihomed-System (einem System, das sich in mehreren Subnetzen befindet) ausführen, müssen Sie es so konfigurieren, dass es alle Netzwerkschnittstellen benutzt. Ein weiterer Einsatzfall für die in diesem Abschnitt präsentierten Optionen ist die Implementierung einer größeren Sicherheit, indem Verbindungen zu bestimmten Schnittstellen erlaubt oder verboten werden.
Nehmen wir einmal an, der Samba-Server kann auf die beiden Subnetze 192.168.220.* und 134.213.233.* zugreifen. Sie müssen folgende Ergänzungen in die Konfigurationsdatei aufnehmen, um die Netzwerk-Konfigurationsoptionen hinzuzufügen:
[global] # Netzwerk-Konfigurationsoptionen hosts allow = 192.168.220. 134.213.233. hosts deny = 192.168.220.102 interfaces = 192.168.220.100/255.255.255.0 \ 134.213.233.110/255.255.255.0 bind interfaces only = yesSchauen Sie sich die Optionen hosts allow und hosts deny an. Falls Ihnen diese Optionen jetzt bekannt vorkommen, denken Sie vermutlich gerade an die Dateien hosts.allow und hosts.deny, die in den /etc-Verzeichnissen vieler Unix-Systeme zu finden sind. Die Aufgabe dieser Optionen ist identisch mit der dieser Dateien. Sie bieten eine gewisse Sicherheit, indem sie Verbindungen anderer Hosts auf der Grundlage der IP-Adressen erlauben oder verbieten. Wir könnten die Dateien hosts.allow und hosts.deny benutzen, verwenden aber stattdessen diese Methode, da es auf dem Server Dienste geben könnte, auf die Benutzer zugreifen können sollen, ohne dass wir ihnen außerdem Zugriff auf die Platten- oder Druckerfreigaben von Samba gewähren.
Mit der Option hosts allow haben wir die IP-Adresse 192.168.220 angegeben. Dies ist äquivalent zur Aussage: »Alle Hosts im Subnetz 192.168.220.« Allerdings haben wir in einer hosts deny-Zeile ausdrücklich festgelegt, dass dem System 192.168.220.102 kein Zugriff erlaubt ist.
Sie wundern sich vielleicht jetzt, wieso 192.168.220.102 ausgeschlossen wird, obwohl es sich in dem Subnetz befindet, das durch die Option hosts allow erfasst wurde. Es ist wichtig zu verstehen, wie Samba die Regeln interpretiert, die durch hosts allow und hosts deny bestimmt werden:
1. Wurden keine allow- oder deny-Optionen in smb.conf definiert, lässt Samba Verbindungen von allen Systemen zu.
2. hosts allow- oder hosts deny-Optionen, die im Abschnitt [global] der smb.conf definiert wurden, gelten für alle Freigaben, selbst wenn eine der Optionen in einer oder mehreren der Freigaben definiert wurde.
3. Wurde für eine Freigabe nur eine hosts allow-Option definiert, ist es nur den aufgeführten Hosts erlaubt, die Freigabe zu benutzen. Alle anderen werden abgewiesen.
4. Wurde für eine Freigabe nur eine hosts deny-Option definiert, kann jeder Host, der nicht auf der Liste steht, auf die Freigabe zugreifen.
5. Wurde sowohl eine hosts allow- als auch eine hosts deny-Option definiert, muss ein Host in der allow-Liste auftauchen und darf nicht in der deny-Liste stehen (in welcher Form auch immer), um auf die Freigabe zuzugreifen. Ansonsten wird der Host abgewiesen.
Achten Sie darauf, dass Sie nicht einem Host ausdrücklich den Zugriff auf eine Freigabe erlauben und dann dem gesamten Subnetz, in dem sich der Host befindet, den Zugriff verweigern.
Schauen wir uns ein weiteres Beispiel dieses letzten Elements an. Betrachten Sie folgende Optionen:
hosts allow = 111.222. hosts deny = 111.222.333.In diesem Fall ist nur den Hosts, die zu dem Subnetz 111.222.*.* gehören, der Zugriff auf die Samba-Freigaben erlaubt. Gehört ein Client jedoch zum Subnetz 111.222.333.*, wird ihm der Zugriff verweigert, obwohl die Bedingungen, die durch hosts allow formuliert wurden, erfüllt werden. Der Client muss in der hosts allow-Liste auftauchen und darf nicht auf der hosts deny-Liste stehen, um Zugriff auf eine Samba-Freigabe zu erlangen.
Die beiden anderen Optionen, die wir festgelegt haben, sind interfaces und bind interface only. Wir wollen uns zuerst die Option interfaces ansehen. Samba sendet standardmäßig Daten nur von der primären Netzwerkschnittstelle. In unserem Beispiel befindet sich dort das Subnetz 192.168.220.100. Wollten wir Daten an mehr als eine Schnittstelle senden, müssten wir mit der Option interfaces die komplette Liste angeben. Im vorangegangenen Beispiel haben wir Samba an beide Subnetze (192.168.220 und 134.213.233) gebunden, in denen das System aktiv ist, indem wir die andere Netzwerkschnittstellenadresse angegeben haben: 134.213.233.100. Besitzt Ihr Computer mehr als eine Netzwerkschnittstelle, sollten Sie diese Option immer setzen, da es keine Garantie dafür gibt, dass die primäre Schnittstelle, die Samba auswählt, auch wirklich die richtige ist.
Die Option bind interfaces only schließlich weist den nmbd-Prozess an, Broadcast-Nachrichten nur von den Subnetzen zu akzeptieren, die mit der Option interfaces festgelegt wurden. Dies unterscheidet sich von den Optionen hosts allow und hosts deny, die zwar verhindern, dass Clients Verbindungen zu Diensten herstellen, aber nicht, dass Broadcast-Meldungen empfangen werden. Die Option bind interfaces only stellt eine Möglichkeit dar, alle Datagramme aus fremden Subnetzen auszuschließen. Darüber hinaus weist sie den smbd-Prozess an, nur die Schnittstellenliste zu binden, die durch die Option interfaces vorgegeben wurde. Dies beschränkt die Anzahl der Netzwerke, die Samba bedient.
Netzwerkoptionen
Die vorgestellten Netzwerkoptionen werden in Tabelle 6-6 noch einmal zusammengefasst.
hosts allow
Die Option hosts allow (manchmal auch allow hosts geschrieben) legt die Clients fest, die die Berechtigung besitzen, auf Freigaben auf dem Samba-Server zuzugreifen. Die Clients werden als durch Kommata oder Leerzeichen getrennte Liste von den Hostnamen der Systeme oder deren IP-Adressen angegeben. Sie können eine gewisse Sicherheit erzielen, indem Sie die Subnetzadresse Ihres LANs in diese Option setzen.
Für diese Option sind folgende Formate möglich:
- Hostnamen, wie etwa ftp.example.com .
- IP-Adressen, wie etwa 130.63.9.252.
- Domänennamen, die sich von einzelnen Hostnamen dadurch unterscheiden, dass sie mit einem Punkt beginnen. Beispielsweise repräsentiert .ora.com alle Systeme innerhalb der Domäne ora.com.
- Netzgruppen, die mit einem at-Zeichen (@) beginnen, wie etwa @printerhosts. Netzgruppen stehen üblicherweise nur auf Systemen zur Verfügung, die NIS oder NIS+ ausführen. Werden Netzgruppen auf Ihrem System unterstützt, sollte es auch eine netgroups-Manpage geben, die diese näher beschreibt.
- Subnetze, die auf einen Punkt enden. Beispielsweise repräsentiert 130.63.9. alle Systeme, deren IP-Adressen mit 130.63.9 beginnen.
- Das Schlüsselwort ALL, das allen Clients den Zugriff erlaubt.
- Das Schlüsselwort EXCEPT, gefolgt von einem oder mehreren Namen, IP-Adressen, Domänennamen, Netzgruppen oder Subnetzen. So könnten Sie zum Beispiel mit hosts allow = ALL EXCEPT 192.168.110. (denken Sie an den abschließenden Punkt) festlegen, dass Samba alle Hosts mit Ausnahme derjenigen im Subnetz 192.168.110 zulässt.
Das Schlüsselwort ALL allein zu benutzen ist fast immer eine ganz schlechte Idee, weil das bedeutet, dass Cracker aus jedem Netzwerk auf Ihren Samba-Server zugreifen können.
Der Hostname localhost für die Loopback-Adresse 127.0.0.1 ist standardmäßig in die hosts allow-Liste eingeschlossen und muss nicht ausdrücklich aufgeführt werden, es sei denn, Sie haben den Parameter bind interfaces only festgelegt. Diese Adresse ist erforderlich, damit Samba ordentlich funktioniert.
Abgesehen davon gibt es keinen Vorgabewert für die Konfigurationsoption hosts allow. Falls weder die Option hosts allow noch die Option hosts deny in der Datei smb.conf festgelegt wurde, wird standardmäßig der Zugriff von allen Quellen aus erlaubt.
Wenn Sie hosts allow im Abschnitt [global] festlegen, setzt diese Definition alle hosts allow-Zeilen in den Freigabe-Definitionen außer Kraft. Dies ist das Gegenteil des üblichen Verhaltens, bei dem Parameter, die in Freigabe-Definitionen gesetzt sind, Standardwerte aus dem Abschnitt [global] überschreiben.
hosts deny
Die Option hosts deny (synonym mit deny hosts) gibt Client-Systeme an, die keine Berechtigung haben, um auf eine Freigabe zuzugreifen. Die Client-Systeme werden als durch Kommata oder Leerzeichen getrennte Liste von Hostnamen oder deren IP-Adressen festgelegt. Verwenden Sie zum Vorgeben der Clients das gleiche Format wie bei der Option hosts allow. Um beispielsweise den Zugriff auf den Server von jedem System mit Ausnahme von example.com zu verbieten, könnten Sie schreiben:
hosts deny = ALL EXCEPT .example.comEs gibt für die Konfigurationsoption hosts deny keinen Vorgabewert, allerdings wird standardmäßig der Zugriff von allen Quellen aus erlaubt, falls keine Option festgelegt wurde. Und falls Sie diese Option im Abschnitt [global] der Konfigurationsdatei angeben, werden alle hosts deny-Optionen außer Kraft gesetzt, die in den Freigaben definiert wurden. Wollen Sie den Zugriff auf bestimmte Freigaben verbieten, vermeiden Sie den Einsatz der Optionen hosts allow und hosts deny im Abschnitt [global] der Konfigurationsdatei.
Schließen Sie niemals die Loopback-Adresse (Localhost unter der IP-Adresse 127.0.0.1) in die hosts deny-Liste ein. Das Programm smbpasswd muss sich über die Loopback-Adresse als Client am Samba-Server anmelden, um das verschlüsselte Kennwort eines Benutzers zu ändern. Wenn die Loopback-Adresse deaktiviert ist, werden die lokal erzeugten Pakete, die die Änderung des verschlüsselten Kennworts anfordern, von Samba abgewiesen.
Außerdem verlangen sowohl die lokale Suchlistenbekanntgabe als auch einige Funktionen des SWAT den Zugriff auf den Samba-Server über die Loopback-Adresse und funktionieren nicht richtig, wenn diese Adresse deaktiviert ist.
interfaces
Die Option interfaces legt die Netzwerke fest, die der Samba-Server erkennen und verarbeiten soll. Diese Option ist ganz praktisch, wenn Sie einen Computer haben, der sich in mehr als einem Subnetz befindet. Wenn diese Option nicht gesetzt ist, sucht Samba beim Start nach der primären Netzwerkschnittstelle des Servers (normalerweise die erste Ethernet-Karte) und konfiguriert sich selbst so, dass es nur in diesem Subnetz arbeitet. Wurde der Server für den Einsatz in mehr als einem Subnetz konfiguriert und Sie legen diese Option nicht fest, funktioniert Samba nur in dem ersten Subnetz, das es erkennt. Sie müssen diese Option verwenden, um Samba zu zwingen, die anderen Subnetze in Ihrem Netzwerk zu bedienen.
Der Wert dieser Option ist eine oder mehrere Gruppen von IP-Adresse/Netzmaske-Paaren, wie im folgenden Beispiel:
interfaces = 192.168.220.100/255.255.255.0 192.168.210.30/255.255.255.0Sie können optional eine Bit-Maske im CIDR-Format angeben:
interfaces = 192.168.220.100/24 192.168.210.30/24Die Zahl nach dem Schrägstrich gibt die Anzahl der Bits an, die in der Netzmaske gesetzt werden. So bedeutet zum Beispiel die Zahl 24, dass die ersten 24 (von 32) Bits in der Bit-Maske gesetzt werden. Das ist identisch mit dem Wert 255.255.255.0 als Netzmaske. 16 wäre demnach äquivalent zur Netzmaske 255.255.0.0, und 8 wäre identisch mit der Netzmaske 255.0.0.0.
bind interfaces only
Die Option bind interfaces only kann verwendet werden, um die Prozesse smbd und nmbd zu zwingen, nur auf solche Adressen zu reagieren, die durch die Option interfaces festgelegt wurden. Der nmbd-Prozess ist normalerweise an die Schnittstelle für alle Adressen (0.0.0.0.) an den Ports 137 und 138 gebunden, wodurch der Empfang von Broadcast-Nachrichten von allen Absendern erlaubt ist. Sie können dieses Verhalten jedoch mit der folgenden Einstellung außer Kraft setzen:
bind interfaces only = yesDies veranlasst Samba, alle Pakete zu ignorieren (einschließlich der Broadcast-Pakete), deren Quelladressen nicht mit einer der Netzwerkschnittstellen korrespondieren, die durch die Option interfaces festgelegt wurden. Sie sollten den Einsatz dieser Option vermeiden, falls Sie temporäre Netzwerkverbindungen erlauben wollen, die zum Beispiel über SLIP oder PPP erzeugt werden. Es kommt nur selten vor, dass diese Option benötigt wird, und sie sollte auch nur von Experten verwendet werden.
Falls Sie bind interfaces only auf yes setzen, nehmen Sie die lokale Hostadresse (127.0.01) in die »interfaces«-Liste auf. Ansonsten ist smbpasswd in seinem Standardmodus nicht in der Lage, eine Verbindung zum Server aufzunehmen, um ein Kennwort zu ändern, die lokale Suchlistenbekanntgabe wird fehlschlagen, und einige Funktionen des SWAT werden nicht richtig funktionieren.
Virtuelle Server
Virtuelle Server können eingesetzt werden, um die Illusion zu erzeugen, dass im Netzwerk mehrere Server vorhanden sind, während es in Wirklichkeit nur einen gibt. Die Technik ist einfach umzusetzen: Ein System registriert einfach mehr als einen NetBIOS-Namen im Zusammenhang mit seiner IP-Adresse. Dieses Vorgehen bringt deutliche Vorteile mit sich.
Beispielsweise könnte die Buchhaltung einen buchhaltung-Server haben. Dessen Clients würden nur die Festplatten und Drucker aus der Buchhaltung sehen. Die Marketing-Abteilung könnte ihren eigenen Server namens marketing mit eigenen Berichten usw. haben. All diese Dienste würden von einem mittelgroßen Unix-Server (und einem entspannten Administrator) bereitgestellt werden. Es wäre nicht nötig, einen kleinen Server pro Abteilung zu installieren.
Konfigurationsoptionen für virtuelle Server
Samba erlaubt es einem Server, mit Hilfe der Option netbios aliases mehr als einen NetBIOS-Namen zu verwenden; Genaueres dazu in Tabelle 6-7.
netbios aliases
Die Option netbios aliases kann eingesetzt werden, um dem Samba-Server mehr als einen NetBIOS-Namen zu geben. Jeder als Wert aufgeführte NetBIOS-Name wird in der Netzwerkumgebung der Windows-Clients angezeigt. Wird eine Verbindung zu einem der Server angefordert, wird immer der gleiche Samba-Server kontaktiert.
Das könnte sich beispielsweise als praktisch erweisen, wenn Sie die Daten von drei Abteilungen auf einen einzigen Unix-Server mit größeren und schnelleren Festplatten übertragen und die alten Windows NT/2000-Server außer Dienst stellen oder umsetzen. Falls die drei Server die Bezeichnungen vertrieb, buchhaltung und admin tragen, können Sie Samba mit Hilfe der folgenden Optionen veranlassen, alle drei Server zu repräsentieren:
[global] netbios aliases = vertrieb buchhaltung admin include = /usr/local/samba/lib/smb.conf.%LIn Abbildung 6-5 sehen Sie, was die Netzwerkumgebung eines Clients darstellen würde. Wenn ein Client versucht, sich bei Samba anzumelden, gibt er den Namen des Servers an, zu dem eine Verbindung gewünscht wird. Dieser Name wird in der Konfigurationsdatei durch die Variable %L bereitgestellt. Handelt es sich bei dem angeforderten Server um vertrieb, fügt Samba die Datei /usr/local/samba/lib/smb.conf.vertrieb ein. Diese Datei könnte globale und Freigabe-Deklarationen enthalten, die ausschließlich für das Vertriebsteam vorgesehen sind:
[global] workgroup = VERTRIEB hosts allow = 192.168.10.255 [vertrieb2003] path = /usr/local/samba/vertrieb/vertrieb2003/ ...Dieses spezielle Beispiel würde außerdem die Arbeitsgruppe auf VERTRIEB setzen und die IP-Adresse so einstellen, dass nur Verbindungen aus dem Subnetz VERTRIEB zulässig sind (192.168.10). Darüber hinaus würden Freigaben aus der Vertriebsabteilung angeboten werden.
Konfigurationsoptionen für die Protokollierung
Gelegentlich müssen Sie sich darum kümmern, was Samba so treibt. Dies gilt vor allem dann, wenn Samba eine unerwartete Aktion ausführt oder vielleicht überhaupt nichts mehr tut. Um diese Informationen zu ermitteln, müssen Sie die Protokolldateien von Samba überprüfen, um genau feststellen zu können, weshalb etwas geschehen ist.
Die Samba-Protokolldateien können so kurz oder so ausführlich sein, wie Sie das wünschen. Hier ein Beispiel dafür, wie eine Samba-Protokolldatei aussehen könnte:
[2002/07/21 13:23:25, 3] smbd/service.c:close_cnum(514) maya (172.16.1.6) closed connection to service IPC$ [2002/07/21 13:23:25, 3] smbd/connection.c:yield_connection(40) Yielding connection to IPC$ [2002/07/21 13:23:25, 3] smbd/process.c:process_smb(615) Transaction 923 of length 49 [2002/07/21 13:23:25, 3] smbd/process.c:switch_message(448) switch message SMBread (pid 467) [2002/07/21 13:23:25, 3] lib/doscalls.c:dos_ChDir(336) dos_ChDir to /home/samba [2002/07/21 13:23:25, 3] smbd/reply.c:reply_read(2199) read fnum=4207 num=2820 nread=2820 [2002/07/21 13:23:25, 3] smbd/process.c:process_smb(615) Transaction 924 of length 55 [2002/07/21 13:23:25, 3] smbd/process.c:switch_message(448) switch message SMBreadbraw (pid 467) [2002/07/21 13:23:25, 3] smbd/reply.c:reply_readbraw(2053) readbraw fnum=4207 start=130820 max=1276 min=0 nread=1276 [2002/07/21 13:23:25, 3] smbd/process.c:process_smb(615) Transaction 925 of length 55 [2002/07/21 13:23:25, 3] smbd/process.c:switch_message(448) switch message SMBreadbraw (pid 467)Viele dieser Informationen sind nur für Samba-Programmierer von Belang. Wir werden jedoch die Bedeutung einiger dieser Einträge in Kapitel 12 näher betrachten.
Samba enthält sechs Optionen, die es Benutzern erlauben zu beschreiben, wie und wo Protokollierungsinformationen abgelegt werden sollen. Es handelt sich um globale Optionen, die nicht in Freigabe-Definitionen auftauchen dürfen. Hier ein Beispiel für Protokollierungsoptionen, die wir unserer Konfigurationsdatei hinzufügen:
[global] log level = 2 log file = /var/log/samba.log.%m max log size = 50 debug timestamp = yesWir haben eine eigene Protokolldatei angelegt, die Informationen bis zur Protokollierungsstufe 2 aufzeichnet. Dies ist eine relativ niedrige Protokollierungsstufe. Die Protokollierungsstufen bewegen sich im Bereich von 1 bis 10, wobei Stufe 1 nur sehr wenige Informationen bereitstellt, Stufe 10 dagegen eine Unmenge an mehr und auch weniger wichtigen Informationen sammelt. Die Stufen 2 oder 3 beliefern uns mit nützlichen Debugging-Informationen, ohne Festplattenplatz auf dem Server zu verschwenden. In der Praxis sollten Sie es vermeiden, Protokollierungsstufen einzustellen, die größer als 3 sind, es sei denn, Sie arbeiten am Samba-Quellcode.
Die Protokolldatei befindet sich dank der Konfigurationsoption log file im Verzeichnis /var/log. Wir können jedoch mit Hilfe von Variablen spezielle Protokolldateien für einzelne Benutzer oder Clients anlegen. Betrachten Sie dazu die folgende Zeile mit der Variablen %m:
log file = /usr/local/logs/samba.log.%mDas Isolieren der Protokollierungsmeldungen erweist sich beim Verfolgen eines Netzwerkfehlers vor allem dann als sinnvoll, wenn Sie wissen, dass das Problem von einem bestimmten Client-System oder Benutzer stammt.
Im Zusammenhang mit der Protokollierung müssen Sie Folgendes beachten: Eine Protokolldatei kann nicht größer als 50 KByte sein, wie durch die Option max log size festgelegt. Überschreitet eine Protokolldatei diese Größe, wird der Inhalt in eine Datei mit dem gleichen Namen und dem Suffix .old verschoben. Existiert die .old-Datei bereits, wird sie überschrieben, und der Inhalt geht verloren. Die Originaldatei wird geleert und ist nun für die Aufnahme neuer Protokollierungsinformationen bereit. Dies verhindert, dass die Festplatte während des Lebenszyklus der Samba-Daemons mit Samba-Protokolldateien vollgestopft wird.
Wir haben beschlossen, mit der Option debug timestamp die Zeitstempel der Nachrichten in das Protokoll aufzunehmen - das ist das Standardverhalten. Jede Nachricht, die in die Protokolldatei geschrieben wird, erhält dadurch einen Zeitstempel. Wären wir an dieser Information nicht interessiert, könnten wir für diese Option stattdessen den Wert no festlegen.
syslog verwenden
Vielleicht möchten Sie ja an Stelle oder zusätzlich zu der normalen Samba-Protokolldatei den System-Logger (syslog ) einsetzen. Samba bietet dafür ebenfalls Optionen. Um syslog benutzen zu können, müssen Sie allerdings zunächst sicherstellen, dass Samba mit der Konfigurationsoption configure --with-syslog kompiliert wurde. In Kapitel 2 finden Sie weitere Informationen über die Konfiguration und Kompilierung von Samba. Anhang E bietet Einzelheiten über die Option --with-syslog.
Sobald dies erledigt ist, müssen Sie Ihre /etc/syslog.conf so konfigurieren, dass sie Protokollierungsinformationen von Samba akzeptiert. Falls es noch keinen daemon.*-Eintrag in der Datei /etc/syslog.conf gibt, fügen Sie folgende Zeile hinzu:
daemon.* /var/log/daemon.logDies legt fest, dass alle Protokollierungsinformationen von System-Daemons in der Datei /var/log/daemon.log gespeichert werden. An dieser Stelle werden auch die Samba-Informationen abgelegt. Von dort können Sie einen Wert für den Parameter syslog in Ihrer Samba-Konfigurationsdatei setzen, um festzulegen, welche Protokollierungsnachrichten an syslog geschickt werden sollen. Es werden nur solche Nachrichten an syslog gesandt, deren Protokollierungsstufen niedriger sind als der Wert des syslog-Parameters. Wenn Sie zum Beispiel Folgendes einstellen:
syslog = 3legen Sie fest, dass alle Protokollierungsnachrichten der Stufe 2 oder niedriger an syslog sowie an die Samba-Protokolldateien geschickt werden. (Die Zuordnungen zu den syslog-Prioritäten werden im kommenden Abschnitt »syslog« beschrieben.) Um das Beispiel fortzusetzen, lassen Sie uns annehmen, dass wir die Option log level auf 4 gesetzt haben. Die Protokollierungsnachrichten der Stufen 2 und 1 werden sowohl an syslog als auch an die Samba-Protokolldateien gesandt. Nachrichten der Stufen 3 oder 4 werden an die Samba-Protokolldateien geschickt, nicht jedoch an syslog. Überschreitet der syslog-Wert den log level-Wert, wird nichts an syslog geschickt.
Wollen Sie festlegen, dass Nachrichten nur an syslog gesandt werden - und nicht an die normalen Samba-Protokolldateien -, können Sie diese Option in die Konfigurationsdatei aufnehmen:
syslog only = yesIst dies der Fall, werden alle Protokollierungsinformationen über dem in der Option syslog festgelegten Wert abgewiesen, wie bei der Option log level.
Konfigurationsoptionen für die Protokollierung
Tabelle 6-8 zeigt alle Konfigurationsoptionen für die Protokollierung, die Samba verwenden kann.
log file
Samba schreibt Protokollierungsinformationen standardmäßig in Textdateien im Verzeichnis /usr/local/samba/var. Die Option log file kann verwendet werden, um die Datei an einer anderen Stelle abzulegen. Um beispielsweise die Samba-Protokollierungsinformationen in /usr/local/logs/samba.log zu speichern, könnten Sie Folgendes verwenden:
[global] log file = /usr/local/logs/samba.logMittels Variablenersetzung können Sie Protokolldateien für einzelne Benutzer oder Clients anlegen.
Beim Start der Daemons können Sie den Wert für den Ablageort der Datei mit der Kommandozeilen-Option -l überschreiben. Dies setzt jedoch nicht die Option log file außer Kraft. Wenn Sie diesen Parameter setzen, werden die ersten Protokollierungsinformationen an die Datei geschickt, die nach -l angegeben wurde (oder an die Standarddatei, die im Samba-makefile festgelegt wurde), bis die Daemons die Datei smb.conf verarbeitet haben und wissen, dass sie die Daten an eine neue Datei weiterleiten sollen.
log level
Die Option log level legt die Menge der Daten fest, die protokolliert werden sollen. Normalerweise ist diese Option auf 0 oder 1 gesetzt. Haben Sie jedoch ein spezielles Problem, könnten Sie sie auf 3 setzen, wodurch die notwendigen Informationen geliefert werden, um ein Problem zu verfolgen. Protokollierungsstufen, die größer als 3 sind, liefern Informationen, die vorrangig für Entwickler gedacht sind, die interne Fehler suchen, und verlangsamen den Server merklich. Wir empfehlen Ihnen deshalb für den normalen Betrieb Werte, die kleiner als 3 sind.
max log size
Die Option max log size legt in KByte die maximale Größe der Protokolldatei fest, die Samba anlegt. Überschreitet die Protokolldatei diese Größe, wird die aktuelle Datei mit der Erweiterung .old versehen (wobei eine eventuell vorhandene Datei dieses Namens gelöscht wird), und eine neue Protokolldatei mit dem Originalnamen wird angelegt, zum Beispiel:
[global] log file = /usr/local/logs/samba.log.%m max log size = 1000Überschreitet hier eine Protokolldatei die eingestellte Größe von 1 MByte, benennt Samba die Protokolldatei in samba.log. maschinenname.old um und legt eine neue Protokolldatei an. Gibt es bereits eine Datei mit der Erweiterung .old, löscht Samba diese. Wir empfehlen Ihnen, diese Option in Ihren Konfigurationsdateien auf jeden Fall einzustellen, da bei der Fehlerprotokollierung (selbst bei niedrigen Stufen) schnell große Datenmengen zusammenkommen und Ihren verfügbaren Festplattenplatz belegen. Diese Option verhindert, dass unachtsame Administratoren plötzlich entdecken müssen, dass der meiste Platz auf einer Festplatte oder Plattenpartition von einer einzigen Samba-Protokolldatei belegt wird.
debug timestamp oder timestamp logs
Falls Sie einmal ein Netzwerkproblem verfolgen und feststellen, dass die Zeitinformation in den Samba-Protokollierungszeilen Ihnen im Weg sind, können Sie sie deaktivieren, indem Sie der Option timestamp logs oder ihrer synonymen Option debug timestamp den Wert no geben. Eine normale Samba-Protokolldatei präsentiert ihre Ausgabe beispielsweise in der folgenden Form:
12/31/01 12:03:34 toltec (172.16.1.1) connect to server network as user jayBeim Wert no für diese Option würde die Ausgabe ohne den Zeitstempel erscheinen:
toltec (172.16.1.1) connect to server network as user jaysyslog
Die Option syslog veranlasst Samba, die Protokollierungsnachrichten an den Unix-System-Logger zu schicken. Die Art der aufzuzeichnenden Protokollierungsinformationen wird über einen numerischen Wert festgelegt. Wie bei der Option log level ist dies eine Zahl zwischen 0 und 10. Protokollierungsinformationen mit einem Wert, der niedriger ist als die angegebene Zahl, werden an den System-Logger gesandt. Informationen, deren Protokollierungsstufe größer oder gleich der syslog-Stufe ist, aber niedriger als log level, werden weiterhin an die normalen Protokolldateien von Samba geschickt. Ein Beispiel:
[global] log level = 3 syslog = 1Damit werden alle Protokollierungsinformationen der Stufe 0 an die normalen Samba-Protokolle und den System-Logger geschickt, während Informationen mit den Stufen 1, 2 und 3 nur an die normalen Samba-Protokolle gesandt werden würden. Stufen über 3 werden überhaupt nicht protokolliert. Alle Nachrichten, die an den System-Logger geschickt werden, werden auf eine Prioritätsstufe abgebildet, die der syslogd-Daemon versteht, wie in Tabelle 6-9 dargestellt. Der Standardwert ist 1.
syslog-Prioritätenkonvertierung Protokollierungsstufe syslog-Priorität 0 LOG_ERR 1 LOG_WARNING 2 LOG_NOTICE 3 LOG_INFO 4 und höher LOG_DEBUG
Wollen Sie syslog verwenden, müssen Sie bei der Kompilierung von Samba die Konfigurationsoption configure --with-syslog einsetzen und Ihre /etc/syslog.conf entsprechend konfigurieren. (Beachten Sie auch den Abschnitt »syslog verwenden« weiter oben in diesem Kapitel.)
syslog only
Die Option syslog only weist Samba an, seine eigenen Protokolldateien überhaupt nicht zu verwenden, sondern nur den System-Logger einzusetzen. Um dies zu aktivieren, geben Sie die folgende Option im Abschnitt [global] der Samba-Konfigurationsdatei an:
[global] syslog only = yes1Je nach Ihrem verwendeten System handelt es sich bei dieser Datei nicht um /etc/printcap. Sie können den Befehl testparm verwenden, der in Samba enthalten ist, um die Parameter-Definitionen auszulesen und den Wert der Konfigurationsoption printcap name zu ermitteln. Der zugewiesene Wert ist der Standardwert, der bei der Konfiguration und Kompilierung von Samba gewählt wurde. Dieser Wert sollte richtig sein.
2Wir meinen damit das Fenster, das sich öffnet, wenn Sie auf ein Druckersymbol in der Drucker-Systemsteuerung doppelklicken.