Using Samba

Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly
1st Edition November 1999
1-56592-449-5, Order Number: 4495
416 pages, $34.95

Buy the hardcopy

Inhaltsverzeichnis


Previous: 3.3 Eine Einführung zu SMB/CIFS Kapitel 4 Next: 4.2 Besondere Sections
 

4. Disk Shares

In den vorhergehenden drei Kapiteln zeigten wir dir, wie man Samba auf einem Unix-Server installiert und Windows-Clients einrichtet, damit sie eine einfache Disk Share nützen können. Dieses Kapitel wird dir vorführen, wie Samba produktivere Rollen auf deinem Netzwerk übernehmen kann.

Samba's Dämonen, smbd und nmbd, werden von einer einzigen ASCII-Datei, smb.confkontrolliert, die über 200 einzelne Optionen enthalten kann. Diese Optionen legen fest, wie Samba im Netzwerk rundherum reagiert, alles eingeschlossen von einfachen Rechten bis zu verschlüsselten Verbindungen und NT-Domains. Die nächsten fünf Kapitel sind als Hilfe vorgesehen, dich mit dieser Datei und ihren Optionen vertraut zu machen. Einige dieser Optionen wirst du brauchen und oft verändern, andere wirst du wahrscheinlich niemals benützen - es hängt alles davon ab, wieviel Funktionalität du Samba seinen Clients zukommen lassen willst.

Dieses Kapitel stellt die Struktur der Samba Konfigurationsdatei vor und zeigt dir, wie man diese Optionen nützt, um Disk Shares zu erzeugen und zu modifizieren. Spätere Kapitel werden folgende Dinge besprechen: Browsing, wie man User konfiguriert, Security, Domains, Drucker und eine Menge anderer unzähliger Themen, die du mit Samba in deinem Netzwerk einbauen kannst.

4.1 Die Samba Konfigurationsdatei kennen lernen

Hier ist ein Beispiel für eine Samba Konfigurationsdatei. Wenn du je mit einer Windows .INI -Datei gearbeitet hast, sollte dir die Struktur der smb.conf -Datei sehr bekannt erscheinen:

[global] 
	log level = 1 
	max log size = 1000
	socket options = TCP_NODELAY IPTOS_LOWDELAY 
	guest ok = no
[homes] 
	browseable = no
	map archive = yes
[printers] 
	path = /usr/tmp
	guest ok = yes
	printable = yes
	min print space = 2000
[test]
	browseable = yes
	read only = yes
	guest ok = yes
	path = /export/samba/test

Obwohl du den Inhalt noch nicht verstehen dürftest, ist diese Konfigurationsdatei gut herzunehmen, wenn du in Eile bist. (Wenn nicht, werden wir in Kürze eine neue von Grund auf bauen.) Kurz gesagt, diese Konfigurationsdatei legt ein grundlegendes Fehlerprotokoll in einer vorgegebenen Logdatei an, die 1 MB nicht überschreitet, optimiert TCP/IP Socket-Verbindungen zwischen Sambaserver und irgendwelchen SMB-Clients und gestattet Samba, eine Plattenfreigabe für jeden User einzurichten, der einen Standard Unix-Account auf dem Server besitzt. Außerdem wird jeder der auf dem Server registrierten Drucker öffentlich verfügbar, wie eine einzige read-only Share, die auf das Verzeichnis /export/samba/test gemappt wird. Der letzte Teil dieser Datei ist der Platten-Share ähnlich, die du verwendet hast, um Samba im Kapitel 2, Samba auf einem Unix-System installieren, zu testen.

4.1.1 Struktur der Konfigurationsdatei

Schauen wir diese Konfigurationsdatei anders an, diesmal von einer höheren Ebene:

[global] 
	...
[homes] 
	...
[printers] 
	...
[test] 
	...

Die Namen innerhalb der eckigen Klammern beschreiben einzelne Sections der smb.conf -Datei; jede Section benennt die share (oder den Dienst), auf welche/welchen die Section verweist. Die [test] und die [homes] -Section z.B. sind beide einzelne Platten-Shares; sie enthalten Optionen, die auf bestimmte Verzeichnisse auf dem Sambaserver mappen. Die [printers] -Share enthält Optionen, die auf verschiedene Drucker auf dem Server mappen. Alle in der smb.conf -Datei definierten Sections, mit Ausnahme der [global] -Section, stehen als Platten- oder Druckerfreigabe den auf dem Sambaserver angeschlossenen Clients zur Verfügung.

Die restlichen Zeilen sind individuelle Optionen zur Konfiguration einzig für die betreffende Share. Diese Optionen werden fortgesetzt, bis eine neue Section mit eckigen Klammen angetroffen wird oder das Ende der Datei erreicht ist. Jede Option folgt einem einfachen Format:

option = value

Optionen in der smb.conf -Datei werden gesetzt, indem ihnen ein Wert zugewiesen wird. Wir sollten dich vorneweg warnen, dass einige Namen von Optionen in Samba schlecht gewählt wurden. Zum Beispiel: read only ist selbsterklärend und typisch für viele neue Samba-Optionen. public ist eine ältere Option und unklar; sie hat jetzt ein weniger verwirrendes Synonym guest ok (Gäste dürfen zugreifen). Wir beschreiben einige der bekannteren historischen Namen in diesem Kapitel in Abschnitten, die jede Hauptaufgabe hervorheben. Zusätzlich enthält Anhang C, Samba Konfigurationsoptionen, Quick Referenz einen alphabetischen Index aller Konfigurationsmöglichkeiten und deren Bedeutung.

4.1.1.1 Leerzeichen, Anführungszeichen und Beistriche

Man muss sich einen wichtigen Punkt bei den Konfigurationsmöglichkeiten merken: alle Leerzeichen in value sind bedeutungsvoll. Überlege dir z.B. die folgende Option:

volume = The Big Bad Hard Drive Number 3543

Samba streicht die Abstände zwischen dem letzten e in volume und dem ersten T in The. Diese Leerzeichen sind unerheblich. Der Rest der Leerzeichne ist signifikant und wird von Samba beim Lesen der Datei erkannt und behalten. Leerzeichen in Namen von Optionen sind nicht signifikant (wie in guest ok), aber wir empfehlen dir, der Konvention zu folgen und Leerzeichen zwischen Wörtern in Optionsnamen zu setzen.

Wenn du dich sicherer fühlst, den Wert einer Konfigurationsoption unter Anführungszeichen zu setzen, so kannst du das tun. Samba ignoriert diese Anführungszeichen, wenn es darauf stößt. Benütze niemals Anführungszeichen um eine Option selbst; Samba behandelt das als Fehler.

Schließlich kannst du Leerzeichen verwenden, um eine Serie von Werten in einer Liste zu trennen, oder du kannst Beistriche setzen. Diese beiden Optionen sind gleichwertig:

netbios aliases = sales, accounting, payroll
netbios aliases = sales accounting payroll

Jedoch, bei manchen Werten musst du eine Form der Trennung wählen - in einigen Fällen Leerzeichen, in anderen Beistriche.

4.1.1.2Großschreibung

Großschreibung ist nicht wichtig in der Samba Konfigurationsdatei, ausgenommen an Orten, wo es das zugrunde liegende Betriebssystem verwirren würde. Nehmen wir z.B. an, dass du die folgende Option in eine Share aufgenommen hast, welche auf /export/samba/simple zeigt:

PATH = /EXPORT/SAMBA/SIMPLE

Samba hätte kein Problem mit einer kompletten Großschreibung der Variablen path. Jedoch, wenn es versucht, sich mit dem gegebenen Verzeichnis zu verbinden, würde es nicht erfolgreich sein, weil das Unix-Dateisystem im zugrunde liegenden Betriebssystem nach Groß- und Kleinschreibung differenziert. Folglich würde der angeführte Pfad nicht gefunden und die Clients könnten keine Verbindung zur Share bekommen.

4.1.1.3 Zeilen-Fortsetzung

Du kannst eine Zeile in der Samba Konfigurationsdatei fortsetzen, indem du den Backlash verwendest, wie folgt:

comment = Die erste Freigabe, welche die Haupt-Kopien\
          des neuen Produkts Teamworks-Software enthält.

Wegen des Backslash werden diese zwei Zeile von Samba als eine Zeile behandelt. Die zweite Zeile beginnt mit dem ersten Zeichen, das Samba antrifft, das kein Leerzeichen ist, in diesem Fall das o in of.

4.1.1.4 Kommentare

Du kannst Kommentare in die smb.conf -Datei einfügen, wenn du vor eine Zeile entweder ein Doppelkreuz (#) oder ein Semicolon (;) setzt. Beide Zeichen sind äquivalent. Die ersten drei Zeilen im folgenden Beispiel würden als Kommentare betrachtet:

#  Das ist die Drucker-Section. Wir haben ein Minimum an
;  Speicherplatz von 2000 eingerichtet, um Fehler zu verhindern,
;  die wir gesehen haben, als der Spooler einen Überlauf hatte.

[printers] 
	public = yes
	min print space = 2000

Samba ignoriert alle Kommentarzeilen in seiner Konfigurationsdatei; es gibt keine Einschränkungen dagegen, was in eine Kommentarzeile hinter dem führenden Doppelkreuz oder Semikolon unterbracht werden kann. Beachte, dass das Zeilen-Fortsetzungszeichen (\) nicht in einer Kommentarzeile anerkannt wird. Es wird wie der Rest der Zeile ignoriert.

4.1.1.5 Veränderungen zur Laufzeit

Du kannst die smb.conf -Datei und jede ihrer Optionen zu jeder Zeit modifizieren, solange die Samba-Dämonen arbeiten. Als Vorgabe prüft Samba die Konfigurationsdatei alle 60 Sekunden auf Änderungen. Wenn es welche findet, so werden die Änderungen sofort umgesetzt. Willst du nicht so lange warten, so kannst du ein Reload erzwingen, indem du entweder ein SIGHUP -Signal an die Prozesse smbd und nmbd sendest oder einfach die Dämonen neu startest.

Wenn z.B. der smbd -Prozess 893 war, könntest du ihn zwingen, die Konfigurationsdatei mit dem folgenden Befehl wieder einzulesen:

# kill -SIGHUP 893

Nicht alle Änderungen werden von den clients unmittelbar erkannt. Änderungen an einer Share, die z.B. gerade in Verwendung steht, werden nicht registriert, bis der Client sich von der Share entbindet und wieder mit ihr verbindet. Außerdem werden severspezifische Parameter, wie der Arbeitsgruppen- oder NetBIOS-Name des Servers auch nicht sofort registriert. Das bewahrt aktive Clients vor einem plötzlichen Disconnect oder der Konfrontation mit einem unerwarteten Zugriffsproblem während einer offenen Sitzung.

4.1.2 Variablen

Samba umfasst einen ganzen Satz Variablen zur Bestimmung der Merkmale des Sambaservers und der Clients, mit denen er sich verbindet. Jede dieser Variablen beginnt mit einem Prozentzeichen, gefolgt von einem einzelnen Groß- oder Kleinbuchstaben, und kann nur auf der rechten Seite einer Konfigurationsoption stehen (z.B. nach einem Gleichheitszeichen):

[pub]
    path = /home/ftp/pub/%a 

Das %a steht für die Architektur der Client-Maschine (z.B. WinNT für Windows NT, Win95 für Windows 95 oder 98, oder WfWg für Windows für Workgroups). Deswegen wird Samba Client-Maschinen mit Windows NT einen eigenen Pfad für die Share [pub] zuweisen, einen unterschiedlichen Pfad für Clients mit Windows 95 und einen anderen Pfad für Clients mit Windows für Workgroups. Mit anderen Worten, die Pfade, die jeder Client sehen würde wie seine Share, unterscheiden sich gemäß der Architektur der Clients, wie folgt:

/home/ftp/pub/WinNT
/home/ftp/pub/Win95
/home/ftp/pub/WfWg

Der Gebrauch der Variablen in dieser Art und Weise kommt gelegen, wenn du haben willst, dass verschiedene User maßgefertigte Konfigurationen anwenden, basierend auf ihren eigenen, unverwechselbaren Eigenheiten oder Bedingungen. Samba hat 19 Variablen, siehe Tabelle 4.1.


Tabelle 4.1: Samba Variablen

Variable

Definition

Client-Variablen

%a

Architektur des Clients (z.B. Samba, WfWg, WinNT, Win95, oder UNKNOWN)

%I

IP-Adresse des Clients (z.B. 192.168.220.100)

%m

NetBIOS-Name des Clients

%M

DNS-Name des Clients

User-Variablen

%g

Primäre Gruppe von %u

%G

Primäre Gruppe von %U

%H

Home-Verzeichnis von %u

%u

Gegenwärtiger Unix-Username

%U

Vom Client angeforderter Username (nicht immer von Samba verwendet)

Share-Variablen

%p

Der Pfad des Automounters zum Root-Verzeichnis der Share, wenn von %P verschieden

%P

Gegenwärtiges Root-Verzeichnis der Share

%S

Gegenwärtiger Name der Share

Server-Variablen

%d

Gegenwärtige Server-Prozess-ID

%h

DNS Hostname des Sambaservers

%L

NetBIOS-Name des Sambaservers

%N

Home-Directory-Server, von der Datei auto.map

%v

Samba-Version

Verschiedene Variablen

%R

Die festgestellte SMB-Protokoll-Ebene

%T

Das momentane Datum und die Zeit

Hier ist ein anderes Beispiel für die Verwendung von Variablen: nehmen wir an, es gäbe fünf Clients auf deinem Netzwerk, doch ein Client, fred, fordert eine ein bisschen verschiedene [homes] -Konfiguration an, wenn er sich mit dem Sambaserver verbindet. Mit Samba ist es leicht, solch ein Problem in Angriff zu nehmen:

[homes] 
	...
	include = /usr/local/samba/lib/smb.conf.%m
	...

Die include -Option verursacht hier eine eigene Konfigurationsdatei für jede einzelne NetBIOS-Maschine (%m), damit sie zusätzlich zur gegenwärtigen Datei gelesen wird. Wenn der Hostname der Client-Maschine fred ist und eine smb.conf.fred -Datei im samba_dir /lib/ -Verzeichnis existiert (oder welches Verzeichnis du für deine Konfigurationsdateien bestimmt hast), wird Samba diese Konfigurationsdatei in die gegenwärtige einfügen. Sollten irgendwelche Konfigurations-Optionen in smb.conf.fred neu formuliert worden sein, werden diese Werte die Optionen überschreiben, welche vorher in der Share angetroffen wurden. Beachte, dass wir "vorher" sagen. Wenn Optionen in der Haupt-Konfigurationsdatei nach der include -Option neu formuliert werden, wird Samba diese neu formulierten Werte für die Share annehmen, in der sie definiert werden.

Hier ist der wichtige Teil: gibt es keine solche Datei, wird Samba keinen Fehler erzeugen. Tatsächlich, es macht überhaupt nichts. Das erlaubt dir, wenn du diese Strategie verfolgst, nur eine extra Konfigurationsdatei für fred zu erzeugen, anstatt auf jeder einzelnen NetBIOS-Maschine im Netzwerk.

Maschinenspezifische Konfigurationsdateien können dazu verwendet werden, einzelne Clients speziell einzurichten und die Fehlersuche auf Samba leichter zu machen. Überlegen wir das Letztere; wenn wir einen Client mit einem Problem haben, können wir diesen Ansatz hernehmen, um ihm ein privates Logfile mit einem umfangreicheren Logging-Level zu geben. Das erlaubt uns zu sehen, was Samba macht, ohne die anderen Clients zu verlangsamen oder die Festplatte mit unsinnigen Logs zu überfluten. Merk dir, in großen Netzwerken könntest du nicht immer die Möglichkeit haben, den Server neu zu starten, um die Fehlersuche durchzuführen!

Du kannst jede der Variablen in Tabelle 4.1 verwenden, um verschiedenen Samba-Optionen spezielle Werte zu geben. Wir werden einige dieser Optionen hervorheben, wenn wir uns durch die nächsten paar Kapitel bewegen.


Previous: 3.3 Eine Einführung zu SMB/CIFS Next: 4.2 Besondere Sections
3.3 Eine Einführung zu SMB/CIFS Buch-Index (engl.) 4.2 Besondere Sections

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.