11.8    Windows-Netzwerkfreigaben

Wenn man nichts anderes kennt, verspürt man als Nächstes vielleicht den Wunsch, einen eigenen »Windows-Fileserver« unter Linux aufzusetzen. Dazu müssen zunächst der Samba-Daemon smbd sowie der nmbd, eine Art DNS für NETBIOS, installiert, konfiguriert und gestartet werden. Die Samba-Software ist dabei für alle wichtigen Distributionen als Paket verfügbar und zum Teil standardmäßig installiert. Eine eigene Konfiguration ist aber trotzdem notwendig, um den Dienst sinnvoll nutzen zu können.

Zum allgemeinen Verständnis sollten Sie sich veranschaulichen, dass Samba eine Software ist, die versucht, zu übersetzen. Dieses Übersetzen ist immer dann nötig, wenn zwei Welten miteinander kommunizieren möchten – in diesem Fall die Windows-Welt mit Linux. So kennt das SMB/CIFS-Protokoll für gesharte Ordner aus der Windows-Welt nicht das klassische Unix-Rechtesystem, außerdem gibt es mit NETBIOS ein historisch gewachsenes System zur Übersetzung von »Rechnernamen« in IP-Adressen, das DNS zumindest ergänzt.

11.8.1    Die smb.conf-Konfigurationsdatei

Die smb.conf (meist liegt sie unter /etc/samba) ist die wichtigste Samba-Konfigurationsdatei. Die Datei ist in sogenannte Sektionen unterteilt. Zwingend vorgeschrieben ist dabei nur die [global]-Sektion, die generelle Einstellungen betrifft; alle anderen Sektionen beschreiben Drucker bzw. Dateifreigaben. Sehen wir uns eine beispielhafte global-Sektion an:

[global]
workgroup = WORKGROUP
server string = Samba Server
netbios name = fileshare
dns proxy = no
security = user
log level = 2
log file = /var/log/samba/%m.log

Listing 11.46     smb.conf – global-Sektion

Zuerst wird mit workgroup der Name der Windows-Domäne bzw. der Workgroup festgelegt. Prinzipiell kann ein Linux-Samba-Server in eine bestehende Active-Directory-Umgebung eingebunden werden, wie sie oft in Firmennetzwerken existiert – oder sogar selbst als Domaincontroller für ein solches Netzwerk agieren. Für eine einfache Freigabe im Heimnetzwerk (ohne zentrale Authentifizierung) können Sie workgroup auf einen beliebigen Wert setzen.

Mittels server string können Sie eine Beschreibung des Servers festlegen, und netbios name ist der NETBIOS-Rechnername. Setzen Sie hier am besten den lokalen Rechnernamen, wie er auch von hostname auf der Kommandozeile ausgegeben wird:

# hostname
fileshare.local

Listing 11.47     hostname

Über die Einstellung dns proxy können Sie festlegen, ob Samba versuchen soll, NETBIOS-Namen über DNS aufzulösen. Die nächste Einstellung, security = user, konfiguriert die lokale Benutzername-Passwort-Authentifizierung. In einem komplexeren Firmen-Setup könnte Samba die Benutzer auch gegen einen zentralen Domaincontroller authentifizieren, damit sich Benutzerinnen und Benutzer mit ihrem Windows-Benutzernamen und -Passwort auch bei unserem Linux-Samba-Fileserver anmelden können.

Die nächsten Settings konfigurieren das Logging, log level setzt die Ausführlichkeit der Logeinträge, und log file soll in unserem Fall eine Logdatei pro Client (%m) anlegen.

Neben [global] gibt es zwei weitere vordefinierte Sektionsnamen: [homes] und [printers]. Über eine [homes]-Sektion kann jedem Benutzer sein Homeverzeichnis – bspw. /home/steffen – freigegeben werden. Über [printers] können lokal an den Linux-Server angeschlossene Drucker als Netzwerkdrucker für Windows-Clients freigegeben werden.

Alle anderen Sektionsnamen sind klassische Fileshares. Sehen wir uns ein einfaches Beispiel an:

[testshare]
path = /opt/shared-files
browsable = yes
read only = no
guest ok = no
valid users = @developers
hosts allow = 10.80.1.0/255.255.255.0

Listing 11.48     smb.conf – ein klassisches Fileshare

Hier wird das Fileshare testshare in seiner eigenen Sektion definiert. Hat unser Server beispielsweise die IP-Adresse 10.80.110.21, kann über die Eingabe von \ \10.80.110.21\testshare von Windows-Clients aus auf alle Ordner und Verzeichnisse unterhalb von path zugegriffen werden. In unserem Fall würden wir also /opt/shared-files im Netzwerk teilen.

Die restlichen Optionen haben mit der Security des Shares zu tun: Da es browsable ist, wird es in der Windows-Netzwerkumgebung als »verfügbares« Share angezeigt. Benutzer können Dateien nicht nur lesen, sondern auch schreiben (read only = no), und man kann sich ohne Anmeldung nicht mit diesem Share verbinden (guest ok = no).

Die Benutzer müssen auf dem Linux-System nicht nur existieren, sondern auch in der Gruppe developers sein. Letztendlich schränkt hosts allow ein, dass man sich nur aus dem genannten Netzwerk verbinden kann. Für ein einzelnes Heimnetzwerk können die beiden letzten Parameter auch weggelassen oder mit einer Raute (#) auskommentiert werden.

11.8.2    Benutzer-Setup mit smbpasswd

Da wir in obigem Beispiel security = user gewählt haben, müssen wir sicherstellen, dass die Benutzer lokal auf unserem Linux-System existieren und dass Samba auch das Passwort kennt. Aufgrund der Eigenarten des SMB/CIFS-Protokolls kann Samba nicht das »normale« Linux-Passwort des Benutzers verwenden, sondern muss eine eigene Datenbank mit Benutzerpasswörtern pflegen.

Aber legen wir zuerst einmal den Benutzer jploetner an. Er soll direkt in der richtigen Gruppe sein (developers) und ist als reiner Nutzer des Fileshares konzipiert – er muss sich nicht in das Linux-System selbst einloggen können und bekommt daher die Shell /sbin/nologin verpasst:

# useradd jploetner -g developers -s /sbin/nologin

Listing 11.49     Einen Samba-User anlegen

Wenn Sie einen schon existierenden Benutzer für Samba freischalten wollen, sollten Sie zumindest mit dem id-Befehl kontrollieren, ob der Benutzer auch wirklich existiert und sich in den richtigen Gruppen befindet:

# id jploetner
uid=1016(jploetner) gid=1001(developers) Gruppen=1001(developers)

Listing 11.50     Einen Benutzer überprüfen

In jedem Fall aber muss der Benutzer mittels smbpasswd zu den bei Samba bekannten Benutzern hinzugefügt werden (Option »-a«). Der Befehl fragt dann auch gleich nach dem Passwort für den neuen Benutzer:

# smbpasswd -a jploetner
No builtin backend found, trying to load plugin
Module 'tdbsam' loaded
New SMB password:
Retype new SMB password:
Added user jploetner.

Listing 11.51     Das Samba-Passwort für einen Benutzer festlegen

Das Samba-Passwort ist nicht mit dem Linux-Login-Passwort des Benutzers zu verwechseln – es kann, muss aber nicht gleich sein, je nachdem, wie es vom Benutzer bzw. der Benutzerin festgelegt wurde. Da die Passwortverwaltung so in größeren Firmennetzwerken schnell unübersichtlich und unhandlich wird, sollte ein Samba-Server in solchen Fällen an die lokale Windows-Domäne angebunden werden. Samba reicht Authentifizierungsanfragen dann an den Domaincontroller weiter, und das Anlegen lokaler Benutzer sowie alle Aufrufe von smbpasswd entfallen in der Folge komplett.

11.8.3    Das Share verbinden

Um das Laufwerk von einem Windows-PC aus zu verbinden, gehen Sie wie folgt vor:

Damit haben Sie Ihren vermutlich ersten Fileserver konfiguriert und mit Windows verbunden. Bei entsprechenden, wie auf den Screenshots gesetzten Optionen kann Windows das Laufwerk auch nach einem Reboot automatisch wieder korrekt mit Ihrem Samba-Server verbinden.