Die zentrale Konfiguration von SAMBA erfolgt in der Datei smb.conf, die distributionsabhängig an unterschiedlichen Orten sich befinden kann. Änderungen an dieser Datei bemerkt SAMBA selbständig, man braucht also nach Änderungen den Dienst i.d.R. nicht neustarten.
Der Aufbau dieser Datei ist simpel:
Es gibt einzelne Sektionen, die die für diese Sektion gültigen Optionen beinhaltet. Ich möchte dies an einem Beispiel erklären:
Zuerst einmal [global]
# Global parameters [global] security = user encrypt passwords = Yes workgroup = SGS browsable = Yes browse list = Yes netbios name = pinguin interfaces = 192.168.1.1/255.255.255.0 lo bind interfaces only = yes # read bmpx = Yes max xmit = 8192 # nach 10 Minuten werden Verbindungen ohne offene Files als geschlossen betrachtet deadtime = 10 keepalive = 30 read size = 8192 socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192 # wichtig: unser Logon-Script. Relativ zu [netlogon]! # Wichtig: DOS-Datei mit DOS-Zeilenenden! logon script = LOGON.BAT # für uns wichtig domain logons = Yes # damit gewinnt SAMBA gegen eNTen os level = 64 # JA!, wir sind der Master-Browser! preferred master = Yes domain master = Yes local master = Yes # Ja!, wir sind auch WINS-Server wins support = Yes create mask = 0600 character set = iso8859-1 client code page = 850 logon drive = y: # angeblich braucht Access folgendes: oplocks = yes strict locking = yes printcap name = /etc/printcap load printers = yes
Damit ist der grundlegende Serverdienst konfiguriert - kommen wir nun an die eigentlichen Shares:
Das Rechner-Verzeichnis ist eine Sache, die ich mir eingerichtet habe, dazu später mehr.
[netlogon] comment = Netzwerk-Login # preexec = echo \"%u connected to %S from %m (%I)\" >> /tmp/samba.log path = /usr/local/samba/netlogon [machine] comment = Netzwerk-Login path = /usr/local/samba/netlogon/%m
Man kann seine Konfiguration mittels testparm aus dem SAMBA-Paket testen. Damit können Syntaxfehler leicht gefunden werden, natürlich keine logischen Fehler wie falsche Rechte.
Über das Logon-Script, welches bei einer Domänen-Anmeldung auf dem Client ausgeführt wird, kann man auf den Clients diverse Dinge tun, u.a. Uhrzeit stellen und Laufwerke zu Shares mappen. Achtung: um Win2000-Clients mit der Uhrzeit versorgen zu können, muß man in den lokalen Sicherheitseinstellungen authentifizierten Benutzern das Recht zur Uhrzeiteinstellung einräumen.
net time \\pinguin /set /yes net use X: /d net use X: \\pinguin\machine call X:\machine.bat net use X: /d net use W: \\pinguin\Arbeitsvorbereitung net use X: \\pinguin\Allgemein net use Y: \\pinguin\homes call y:\user.bat
Der 2. Befehl unmountet ein evtl. vorhandenes gemapptes Share an X:, um dort das Share "machine" zu mappen.
Dieses Share ist in der smb.conf als /usr/local/samba/netlogon/%m
definiert, das Makro %m
wird mit dem NetBIOS-Namen des Clients erweitert. Ich habe für einige Rechner spezielle Mappings, z.B. für
Rechner, an denen ein Scanner angeschlossen ist. Daher rufe ich mit dem 4. Befehl dann eine rechnerspezifische
Startdatei auf.
Weiter rufe ich eine Userspezifische Batch-Datei auf. Dies enthält dann z.B. für unterschiedliche Mitarbeiter unterschiedliche Mappings von Laufwerken. So erreiche ich, daß sich z.B. ein Mitarbeiter auch an einen Rechner eines anderen anmelden kann und dennoch seine gewohnten Laufwerke gemappt vorfindet.
Zu beachten ist bei diesen Startdateien, daß diese auf dem Client durchgeführt werden, also müssen sie dort korrekt lesbar sein. Daher Achtung, wenn man diese auf dem Server editiert, es müssen die DOS-typischen Zeilenumbrüche vorhanden sein.(vi: set ff=dos)
Wie im Beispiel gesehen, können diverse Makros verwendet werden. Hier einige dieser Makros:
%u Username %m NetBios-Name des Clients %I IP-Adresse von Client %d PID des Serverprozesses %a Betriebssystemversion vom Client %T aktuelle Datum und Uhrzeit
[homes] #preexec = echo \"%u connected to %S from %m (%I)\" >> /tmp/samba.log comment = Heimatverzeichnis veto files = .* writeable = Yes browseable = No # Achtung: folgendes ist wichtig für Win200 ab SP2 zur Ablage der Profile nt acl support = no
Manchmal ist z.B. ein für alle frei zugängliches Verzeichnis recht nett. Ich nenne ein solches Share "Allgemein":
[Allgemein] comment = Allgemein path = /usr/local/samba/Allgemein read only = no public = yes guest ok = yes create mask = 0666 directory mask = 0777
Oder ich möchte ein Verzeichnis, was nur von einer Mitarbeitergruppe ansprechbar ist:
[Objekt] comment = Objektteam Heynitz path = /usr/local/samba/Objektteam read only = no create mask = 0660 directory mask = 0770 force group = objekt valid users = @objekt
Da bei uns das 'normale' lpr-System läuft, gestaltet sich die Freigabe der Drucker recht einfach:
[printers] comment = All Printers path = /var/spool/lpd browseable = yes public = yes guest ok = yes printable = yes
Damit werden alle dem Server bekannten Drucker (/etc/printcap) auch unter SAMBA sichtbar.
Win2000 kann echt zickig sein und erfreut oft mit sinnfreien Fehlermeldungen. Daher sollten einige Dinge beachtet werden:
root# /usr/sbin/useradd -g 100 -d /dev/null -c "machine nickname" -s /bin/false machine_name$ root# passwd -l machine_name$ root# smbpasswd -a -m machine_name
SWAT Samba Web Administration Tool richtet sich vor allem an Anwender, die (noch) ihre Probleme mit der Kommandozeile haben.
SWAT ermöglicht, via Web-Oberfläche die vielfältigen Optionen der SAMBA-Konfiguration auf einfache Art und Weise zu beeinflussen.
Eine weitere Möglichkeit der grafischen Administration von SAMBA stellt WebMin bereit.
Da ich weder SWAT noch WebMin nutze, gehe ich auf diese Programme nicht weiter ein.
Normalerweise läuft SAMBA auf Anhieb. Falls es dennoch Probleme geben sollte, sollte man in dieser Reihenfolge auf Fehlersuche gehen:
testparm
ist das einfach zu testen, es sucht in dem einkompiliertem Standardverzeichnis nach der
smb.conf
und prüft ihren Inhalt.ping
unter Verwendung der IP-Adresse.ping
, nun aber mit den Rechnernamen.smbclient -L server
nmblookup -B server __SAMBA__
testet die NetBios-Namensauflösung und sollte die IP des Servers
liefernnmblookup -B IP-des-Client '*' nmblookup -B IP-des-Client ClientBeide Abfragen sollten mindestens die IP des Clients liefern, wenn nicht, sind die Clients nicht richtig konfiguriert.