Bereich:  Linux : samba : 

Was soll erreicht werden?

Vernetzte Windows9x, WindowNT oder Linux Rechner sollen auf gemeinsame Ressourcen im Netzwerk (Dateien und Drucker) zugreifen können. Dazu wird das auf TCP/IP aufsetzende SMB-Protokoll benutzt (Server Message Block). Jeder beteiligte Rechner kann solche Ressourcen zur Verfügung stellen. Eine einzelne freigegebene Ressource heißt "share" (auf deutsch "Freigabe"). Es gibt zwei Strategien, die Berechtigungen zum Zugriff auf shares zu regeln.

  1. In einem Peer-to-Peer Netzwerk, in dem es keine zentrale Benutzerverwaltung gibt, wird auf jedem Rechner für jedes share einzeln bestimmt, ob für den Zugriff auf das share ein (ebenfalls pro share zu vergebendes) Passwort erforderlich ist. Diese Strategie heißt in Microsoft-Terminologie "Zugriffssteuerung auf Freigabeebne" und in Samba-Terminologie "securtity=share".
  2. In einem serverbasierten Netzwerk verwaltet ein zentraler Server die user (Benutzer) und ihre Passwörter, und auf jedem Rechner können für jedes share die individuellen Zugriffsrechte pro user bestimmt werden (also ohne Angabe von Passwörtern pro share). Bei der Einrichtung dieser Rechte wird dann die Liste bekannter user vom Server geladen. Diese Strategie heißt in Microsoft-Terminologie "Zugriffssteuerung auf Benutzerebene" und in Samba-Terminologie "security=user" (wenn der Samba-Rechner selbst auch die user verwaltet) oder "security=domain" (wenn ein anderer Rechner im Netzwerk die user verwaltet). Ein Server, der die zentrale Benutzerverwaltung übernimmt heißt Primary Domain Controller (kurz PDC). Ob die Zugriffe auf shares auf share Ebene oder auf user Ebene gesteuert werden, wird pauschal für alle shares des Rechners einheitlich bestimmt.

Über die Benutzerverwaltung hinaus kann der PDC weitere Dienste versehen:

Samba 2.2 kann alle diese Funktionen gemeinsam oder wahlweise Teile davon wahrnehmen. In unserem Beispiel konfigurieren wir einen Samba-Server für Windows9x-Clients als PDC mit Unterstützung für roaming profiles und logon scripts, der ferner als WINS-Server (dazu später mehr) fungiert.

Seitenanfang

Schritte zur Konfiguration von samba als PDC

Zuerst muss natürlich Samba selbst (z.B. das entsprechende Paket der jeweiligen Distribution oder das neueste rpm von www.samba.org oder ...) installiert werden. Darauf wird hier nicht näher eingegangen. Dann geht es an das Estellen der zentralen Konfigurationsdatei smb.conf. Die wesentlichen Parameter der Sektion [global] in der Konfigurationsdatei smb.conf sind schnell benannt:

Damit diese Konfiguration funktioniert, müssen noch einige Verzeichnisse, Dateien und user angelegt werden:

  1. Das Verzeichnis für die Netzanmeldung ([netlogon]) wird angelegt:
    <code>> mkdir /home/samba
    > mkdir /home/samba/netlogon.</code>
  2. Die user legt man zweckmäßigerweise zunächst als Unix user an inklusive home Verzeichnis (/home/[username])
  3. Im home Verzeichnis der jeweiligen user wird ein Unterverzeichnis für das roaming profile angelegt:
    <code>> mkdir /home/[username]/profile</code>
  4. Die user werden als Sambauser bekannt gemacht:
    <code>> smbpasswd -a [username]</code>
  5. In das Verzeichnis von [netlogon] wird die mit einem DOS-Editor erstellte Batch-Datei, die als logon script fungiert, gestellt. In unserem Fall heißt sie "map.bat" und muss, damit direkt bei der Anmeldung des Clients das profile Verzeichnis gefunden wird, folgende Zeile enthalten: <code>NET USE H: /HOME</code>
  6. Nur für NT-Clients: Für jeden Rechner muss ein Maschinenkonto als Unixuser und Sambauser angelegt werden (wichtig: das $-Zeichen am Ende des Namens):
    <code>> useradd -g 100 -d /dev/null -s /bin/false [machinename]\$
    > smbpasswd -a -m [machinename]</code>
Seitenanfang

Die Datei <i>smb.conf</i>

Nach den obigen Erklärungen und anhand der Kommentare sollte es leicht sein, die folgende Konfiguration individuell anzupassen:

; Samba configuration PDC + roaming profiles
[global]
; Code-Seite und Zeichensatz für korrekte Codierung
; von Umlauten und Sonderzeichen einstellen
client code page = 850
character set = ISO8859-1
; IP-Adresse und Netzmaske der Geräte, an denen Samba
; zur Verfügung stehen soll, angeben.
interfaces = 192.168.0.1/255.255.255.0
; netbios name = Computername im SMB-Netz
netbios name = duke
; workgroup = Arbeitsgruppe bzw. Domäne im SMB-Netz
workgroup = arbeitsgruppe
; Samba läuft als WindowsInternetNameServer.
wins support = yes
; Der Client soll den PDC auch finden können.
browseable = yes
name resolve order = lmhosts hosts bcast
; Falls unbekannte Benutzernamen übermittelt werden,
; sollen öffentliche shares mit dem Gastkonto genutzt
; werden können. Dieses (in diesem Fall "nobody") muss
; als Unix-User existieren.
guest account = nobody
map to guest = Bad User
; Windows98 und NT verschlüsseln die SMB-Passwörter.
; Um den Unix-User "dummy" der User-Liste von Samba hinzu-
; zufügen, führt man folgendes Kommando aus:
; smbpasswd -a dummy
; und gibt dann das SMB-Passwort ein. Die Datei steht
; in /etc.
encrypt passwords = yes
smb passwd file = /etc/smbpasswd
; Samba soll die "Zugriffssteuerung auf Benutzerebene"
; verwalten.
security = user
; Samba soll die "Anmeldung an Windows NT-Domäne"
; ermöglichen.
domain logons = yes
; Wenn eine "Anmeldung an Windows NT-Domäne" erfolgt,
; kann ein Batch-Skript ausgeführt werden. Dieses File
; steht dann im Pfad des Shares [netlogon] und muss
; DOS-Zeilenenden verwenden (CR/LF). Möglicher Eintrag:
; NET USE H: /HOME
; Mit map.bat kann man also Laufwerke mappen u.ä.:
logon script = map.bat
; Wenn "roaming profiles" unterstützt werden sollen, gibt
; man hier den SMB-Pfad zu den zu speichernden Profil-
; Daten (z.B. USER.DAT) an. Bei der folgenden Konfi-
; guration muss in den home-Verzeichnissen der User ein
; Unterverzeichnis "profile" existieren.
; %N = Name des Samba-Servers, %U = Name des Users
; Ob der Client diese Option auch nutz, wird auf der
; Client-Seite eingestellt.
logon home = \\%N\%U\profile
; Browsing:
; Samba hat den höchsten OS-Level im Netz,
; ist lokaler Master-Browser, ist Domönen-Master-Browser
; und ist bevorzugter Master-Browser. Somit wird
; Samba zur "ersten" Adresse für das verwalten
; von Informationen über im Netz aktive Computer
; und Shares erklärt.
os level = 34
local master = yes
domain master = yes
preferred master = yes
; Printing:
; Läuft auf dem Samba-Server ein BSD printing system
; (lpd), dann kann man die dort definierten Drucker
; als Share freigeben (s.u. [kyocera]).
printing = bsd
printcap = /etc/printcap
load printers = yes
; ==================================================
; Hier folgen die Shares (oder auch "Freigaben"):
; Das Share [netlogon] hat eine Sonderfunktion.
; Es wird benötigt, wenn die "Anmeldung an
; Windows NT-Domäne" ermöglicht werden soll.
; Der Unix-Pfad in "path" muss natürlich existieren.
; Im Unix-Pfad stehen die Logon-Skripte.
[netlogon]
path = /home/samba/netlogon
browseable = no
guest ok = no
writeable = no
; Das Share [homes] hat eine Sonderfunktion.
; Es mappt die home-Verzeichnisse der user auf
; ihre jeweiligen Namen. Meldet sich der User
; "dummy" an, dann gibt es ein Share namens [dummy]
; mit dem Unix-Pfad "/home/dummy".
[homes]
browseable = no
guest ok = no
writeable = yes
; Eine öffentliche Freigabe für einen Drucker.
; Der Unix-Pfad zum spool-Verzeichnis muss existieren.
[kyocera]
path = /var/spool/samba
printer name = kyocera
browseable = yes
guest ok = yes
writeable = no
printable = yes
print command = lpr -r -h -P %p %s
; Ein öffentliches Verzeichnis, auf das jeder Zugriff hat.
[public]
path = /public
browseable = yes
guest ok = yes
writeable = yes

Seitenanfang

Konfiguration der Clients

Auf der Client Seite ist nicht viel zu tun: Unter Start --> Einstellungen --> Systemsteuerung --> Netzwerk --> Client für Microsoft-Netzwerke --> Eigenschaften wählt man "An Windows NT-Domäne anmelden" und trägt den Namen der Windows NT-Domäne ein (smb.conf Paramteter workgroup). Unter Start --> Einstellungen --> Systemsteuerung --> Netzwerk -->TCP/IP für [device] --> WINS-Konfiguration trägt man die IP Adresse des Samba-Servers ein. Bei der nächsten Anmeldung am System erscheint ein Fenster mit drei Textfeldern: Benutzername, Kennwort und Domäne. Das Feld Domäne enthält bereits den zuvor konfigurierten Namen der Samba workgroup. Für Benutzername und Kennwort wählt man die Werte des oben eingerichteten Samba users.

Nach der Anmeldung sollten Fenster erscheinen, die Auskunft über den Fortgang der Anmeldung geben (Profil laden, Skript ausführen). Bei der ersten Anmeldung am Server erscheint eine zusätzliche Meldung über das Anlegen des profiles, die nur quittiert werden muss. Bei der ersten Anmeldung am System (Windows Seite) erscheint eine Meldung zur Bestätigung des Kennworts als Windows Kennwort, die nach erneuter Eingabe des Passworts ebenfalls nur quittiert werden muss. Beim Browsing (Durchsuchen des Netzwerks etwa mit dem Windows Explorer) ist besondere Vorsicht geboten: Oft werden Fehlermeldung ausgegeben ("Netzwerk kann nicht durchsucht werden" etc.), die nicht sachhaltig sind. Falls ein Samba-Server nicht sofort im Windows Explorer erscheint, heißt das noch nicht, dass der Zugriff nicht funktionieren würde. Trägt man in das Textfeld der Adresse-Leiste den vollständigen Pfad zum gewünschten share ein (z.B. \\duke\public), dann erscheint meistens das gewünschte share im Explorer.

Seitenanfang

Diagnosemöglichkeiten bei Problemen

Folgende Checkliste kann bei der Fehlerdiagnose helfen (under construction):

  1. Ist die TCP/IP Konfiguration in Ordnung?
    Test mit <code>> ping</code> in beide Richtungen muss laufen.
  2. Ist die Datei smb.conf in Ordnung?
    Test mit <code>> testparm</code>. Ausgabe darf keine Fehlermeldungen enthalten.
  3. Laufen die Samba deamons?
    Test mit <code>> rcsmb status</code> (SuSE)
  4. Browsing vom Client aus:
    Start --> Suchen --> Computer --> [server-netbios-name] oder
    \\[server-netbios-name]\[share-name] in Adresse-Leiste des Windows Explorer oder
    NET USE X: \\[server-netbios-name]\[share-name] am DOS-Prompt
Seitenanfang