Erweiterte Samba-Konfiguration

Eine einfache Datei- oder Verzeichnis-Freigabe ist mit Samba mit nur wenig Konfigurationsaufwand eingerichtet. Viele Konfigurations-Optionen sind standardmäßig optimal eingestellt.

Die folgenden Ausführungen gehen auch auf die standardmäßige Konfiguration einiger Optionen ein. Also Konfigurations-Optionen, die man eigentlich nicht mehr angeben muss. Es gibt aber Gründe, warum man den einen oder anderen Parameter vielleicht trotzdem setzen sollte. Beim Update oder Wechsel auf eine neue Samba-Version kommt es gelegentlich vor, dass standardmäßig gesetzte Optionen einen anderen Wert bekommen, weshalb die Samba-Freigaben manchmal nicht mehr wie gewohnt funktionieren.

  • Benutzer-Authentifizierung
  • Benutzerverwaltung
  • Benutzer für Samba anlegen
  • Passwort-Änderung durch den Benutzer
  • WINS-Server einrichten
  • NetBIOS-Namen festlegen
  • NetBIOS-Kommunikation

Die folgenden erweiternden Samba-Konfigurationen sind nicht als Schritt-für-Schritt-Anleitung zu verstehen, sondern sind optionale Konfigurationsmöglichkeiten.
Vorausgesetzt wird, dass die folgenden Konfigurationen als Benutzer "root" erfolgen oder als normaler Nutzer mit dem Kommandozeilenzusatz "sudo".
Vorausgesetzt wird auch, dass der Anwender weiß, wie Samba funktioniert, wie es konfiguriert und was dabei beachtet werden muss. Die Konfiguration findet üblicherweise in der zentralen Konfigurationsdatei "/etc/samba/smb.conf" statt.

Benutzer-Authentifizierung

Die Standardeinstellung bei Samba ist

security = user

Verschlüsselte Passwörter verwenden (Standardeinstellung):

encrypted passwords = yes

Benutzerverwaltung

Die folgenden Ausführungen zur Benutzerverwaltung beziehen sich auf Samba 3 und Samba 4 im Classic-Modus. Das heißt, ohne Domain-Controller.

Damit ein Zugriff auf die Samba-Freigaben möglich ist, muss jeder Samba-Benutzer ein lokales Benutzer-Konto auf dem Samba-Server und zusätzlich ein Samba-Konto haben.
Die Benutzerinformationen werden über das Benutzer-Konto verwaltet und die Zugriffsberechtigung über das Samba-Konto.
Die Verwaltung des Samba-Kontos erfolgt durch "smbpasswd" in einer Datei, durch "tdbsam" in einer lokalen Datenbank oder zentral über einen LDAP-Server. Wenn man nur einen Arbeitsgruppen-Server oder nur einen Primary Domain Controller (PDC) in einem kleinen Netzwerk einrichten will, dann ist die Verwaltung über "smbpasswd" oder "tdbsam" vollkommen in Ordnung.
Sobald man Samba in einer komplexeren Umgebung als PDC und Backup Domain Controller (BDC) nutzen möchte, dann ist LDAP als zentrale Benutzerverwaltung ein Muss.

Beim Betrieb eines einzelnen Datei-Servers wird für die lokale Benutzerverwaltung "tdbsam" empfohlen. Es handelt sich hierbei um eine einfache Datenbank mit dem Namen Trivial Database. Diese Datenbank erlaubt, im Gegensatz zur Datei-basierten Verwaltung mit "smbpasswd", dass mehrere Benutzer gleichzeitig schreibend auf die Datenbank zugreifen können. Das ist dann wichtig wenn mehrere Benutzer gleichzeitig ihr Passwort ändern wollen. Die Empfehlung lautet, für die Benutzerverwaltung "tdbsam" bis maximal 250 Benutzern zu verwenden und danach auf LDAP umzustellen.
Wenn man mehrere Samba-Server als PDC und BDC einsetzen will, dann sollte man auf alle Fälle LDAP als Benutzerverwaltung einsetzen. Das heißt aber auch, man braucht einen separaten LDAP-Server.

Prinzipiell kann man die folgende Konfiguration der Benutzerverwaltung weglassen, weil sie standardmäßig gesetzt werden.

Standardmäßig bei Samba bis Version 3.3.10:

passwd backend = smbpasswd

Standardmäßig bei Samba ab Version 3.4:

passdb backend = tdbsam

Es gibt aber einen Grund, warum man den Parameter vielleicht doch setzen sollte. Wenn man von einer alten Samba-Version (bis 3.3.10) auf eine neue Samba-Version (ab 3.4) wechselt, und der Parameter "passwd backend" nicht gesetzt ist, dann funktioniert die Benutzerverwaltung nicht mehr, wenn standardmäßig eine andere Benutzerverwaltung zur Anwendung kommt. Ist der Parameter gesetzt, dann wird die alte Benutzerverwaltung verwendet. Die ist dann zwar veraltet, aber sie funktioniert nach der Umstellung noch.

Wenn man nach der Umstellung von Samba 3 auf 4 auch die Benutzerverwaltung von "smbpasswd" auf "tdbsam" umstellen möchte, kann man das mit folgendem Kommando tun:

pdbedit -i smbpasswd -e tdbsam

Anschließend sollte man die Konfiguration von "passdb backend" anpassen und Samba neustarten.

Benutzer für Samba anlegen und verwalten

Samba hat in der Standardinstallation eine vom System getrennte Benutzerverwaltung, welche mit dem Kommando "smbpasswd" administriert wird. Das bedeutet, für jeden Benutzer, der auf eine Samba-Freigaben zugreifen können soll, muss ein Linux-Konto und ein Samba-Konto angelegt werden.
Auch dann, wenn ein Benutzer nur auf die Samba-Freigaben zugreifen können soll, aber kein klassisches Linux-Konto braucht, muss trotzdem ein Linux-Konto angelegt werden. Hier reicht ein Konto mit eingeschränkter Funktionalität.

useradd -s /bin/false -g users -m {USERNAME}

Wenn der Benutzer sich nicht auf dem Linux-System anmelden können soll, dann setzt man die Shell auf "/bin/false". Weil sich dieser Benutzer nicht lokal anmelden darf, ist die Eingabe eines Passworts an dieser Stelle nicht notwendig.

Wurde der Linux-Benutzer angelegt oder existiert bereits, dann legt man das Samba-Benutzerkonto an. Hier muss man auf alle Fälle ein Passwort vergeben, dass vom Passwort des Linux-Kontos abweichen darf. Das Passwort muss ein zweites Mal bestätigt werden.

smbpasswd -a {USERNAME}
New SMB password:
Retype new SMB password:

Das Samba-Benutzerkonto ist anschließend sofort aktiv. Wenn nicht, dann muss man den Benutzer noch aktivieren.

Aktiviert den Benutzer in der Samba-Datenbank:

smbpasswd -e {USERNAME}

Deaktiviert den Benutzer in der Samba-Datenbank:

smbpasswd -d {USERNAME}

Entfernt den Benutzer aus der Samba-Datenbank:

smbpasswd -x {USERNAME}

Passwort-Änderung durch den Benutzer

Mit dem Programm "smbpasswd" kann jeder Benutzer sein Passwort selbst ändern.

unix password sync = yes

Diese standardmäßige Einstellung in der Sektion "[global]" sieht vor, dass wenn der Benutzer sein Samba-Passwort ändert, damit auch gleich das normale Linux-Passwort geändert wird.

WINS-Server einrichten

Wenn ein Samba-Server auch als WINS-Server arbeiten soll, dann fügt man folgende Zeile in die Sektion "[global]" ein:

winssupport = yes

Diese Zeile sorgt dafür, dass der Samba-Server als WINS-Server im Netz arbeitet. Ist im LAN außerdem ein DHCP-Server vorhanden, so machen Sie diesen mit dem WINS-Server bekannt.

NetBIOS-Name festlegen

Der NetBIOS-Name dient als Adresse in der Windows-Netzwerkumgebung und muss im Netzwerk eindeutig sein. Dieser Parameter wird standardmäßig über den Hostnamen des Systems gesetzt. Er kann in der Samba-Konfiguration aber beeinflusst werden.

Den NetBIOS-Namen des Rechners in der Sektion "[global]" festlegen:

netbios name = {HOSTNAME}

Der NetBIOS-Name darf aus maximal 15 Zeichen bestehen, wobei außer Minus "-" und dem Unterstrich "_" keine Sonderzeichen erlaubt ist.

Sicherung der Samba-Konfiguration

Eine Samba-Konfiguration kann durchaus umfangreich sein, weshalb eine Sicherung empfohlen wird. Die Dateien, die gesichert werden sollten, sind die "smb.conf" und die tdb-Dateien, in denen die Benutzerdaten und weitere Informationen abgelegt sind.

Sie sichert man mit dem Kommando:

tdbbackup /var/lib/samba/*.tdb

NetBIOS-Kommunikation

Nach der Namensauflösung wird eine TCP-Verbindung zum Server aufgebaut. Dabei unterscheidet man zwischen zwei Ports. Bei der klassischen Variante, bei der die SMB-Verbindung über NetBIOS stattfindet, wird der Port 139 verwendet.
Bei der anderen Variante wird nicht NetBIOS verwendet, sondern die Verbindung direkt mit SMB über TCP aufgebaut und dabei Port 445 verwendet.
Welches Protokoll bzw. welcher Port verwendet wird, kann man mit folgendem Kommando auf dem Samba-Server prüfen.

netstat -l

Die Verwendung des Ports kann man steuern. Hierzu gibt es in der Samba-Konfiguration einen Parameter.

smb ports = xxx

Ob eine lokale Verbindung zu einem oder beiden Ports möglich ist, kann man mit Telnet testen.

telnet 139
telnet 445

Nach dem Aufruf der Kommandos zeigt "netstat" eine Verbindung auf dem entsprechenden Port an.

netstat -pn

Weitere verwandte Themen:

Teilen:

Produktempfehlungen