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 servernmblookup -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.