Wie man Samba auf Linux installiert und konfiguriert: Ein vollständiger technischer Leitfaden
Samba ist eine Open-Source-Implementierung des SMB/CIFS (Server Message Block / Common Internet File System)-Protokolls, das Linux- und Unix-basierten Servern ermöglicht, Dateien, Drucker und andere Ressourcen mit Windows-Clients — und mit anderen Linux-Maschinen — zu teilen. Es fungiert als Brücke über Betriebssystemgrenzen hinweg und ist damit der De-facto-Standard für plattformübergreifende Netzwerk-Dateifreigabe in gemischten Umgebungen.
Als prägnante Antwort auf die Kernfrage: Die Installation von Samba unter Linux erfordert die Installation des `samba`-Pakets über den Paketmanager Ihrer Distribution, die Definition von Freigabe-Blöcken in `/etc/samba/smb.conf`, die Erstellung Samba-spezifischer Benutzeranmeldedaten mit `smbpasswd` sowie das Öffnen der Ports 137–139 und 445 in Ihrer Firewall. Die folgenden Abschnitte behandeln jeden Schritt dieses Prozesses in präzisen technischen Details.
Was Samba tatsächlich im Hintergrund tut
Samba läuft als eine Reihe von Daemons. Das Verständnis, welcher Daemon was tut, verhindert eine bedeutende Kategorie von Fehlkonfigurationsfehlern:
- `smbd` — verwaltet Datei- und Druckfreigabe, Authentifizierung und Ressourcensperrung über TCP-Ports 445 und 139.
- `nmbd` — verwaltet die NetBIOS-Namensauflösung über UDP-Ports 137 und 138. Erforderlich für das Windows-Netzwerk-Browsing (Netzwerkumgebung / „Netzwerk” im Datei-Explorer).
- `winbindd` — integriert Samba in Active Directory oder NT4-Domänen und ermöglicht die Domänenbenutzerauthentifizierung auf dem Linux-Host. Nicht erforderlich für eigenständige Dateifreigabe.
Wenn ein Windows-Client `servershare` öffnet, löst er zunächst den Servernamen über DNS oder NetBIOS (nmbd) auf und stellt dann eine SMB-Sitzung mit smbd über Port 445 her. Samba handelt den höchsten gegenseitig unterstützten SMB-Dialekt aus — SMB 3.1.1 auf modernen Systemen — und ordnet die Remote-Freigabe einem Laufwerksbuchstaben oder UNC-Pfad auf dem Client zu.
Voraussetzungen
Bestätigen Sie vor dem Fortfahren Folgendes:
- Ein Linux-Server mit Ubuntu 20.04/22.04/24.04, Debian 11/12, CentOS Stream 8/9, RHEL 8/9 oder Fedora 38+.
- Root- oder `sudo`-Zugriff.
- Eine dem Server zugewiesene statische private IP-Adresse (entscheidend für stabiles Share-Mounting).
- Grundlegende Kenntnisse von Terminal-Operationen und Dateiberechtigungen.
- Firewall-Zugriff (UFW, firewalld oder iptables), um die erforderlichen Ports zu öffnen.
Wenn Sie Samba auf einem Cloud- oder virtuellen Server bereitstellen, bietet eine VPS Hosting-Umgebung den vollständigen Root-Zugriff und die Netzwerkkontrolle, die für die Verwaltung von Daemons, Firewall-Regeln und persistenten Mounts ohne die Einschränkungen von Shared-Umgebungen erforderlich sind.
Schritt 1: Samba installieren
Verwenden Sie den für Ihre Distribution geeigneten Paketmanager. Aktualisieren Sie immer zuerst den Paketindex, um die Installation veralteter Versionen zu vermeiden.
Debian / Ubuntu:
“`bash
sudo apt-get update
sudo apt-get install samba samba-common-bin
“`
CentOS Stream / RHEL:
“`bash
sudo dnf install samba samba-client samba-common
“`
Fedora:
“`bash
sudo dnf install samba samba-client samba-common
“`
Arch Linux:
“`bash
sudo pacman -S samba
“`
Überprüfen Sie nach der Installation die installierte Version:
“`bash
smbd –version
“`
Installieren Sie auf RHEL-basierten Systemen auch `samba-client`, um das Diagnoseprogramm `smbclient` zu erhalten, das Sie in späteren Schritten für Verbindungstests verwenden werden.
Schritt 2: Sichern und Bearbeiten der Hauptkonfigurationsdatei
Die gesamte Samba-Konfiguration befindet sich in `/etc/samba/smb.conf`. Diese einzelne Datei steuert das globale Serververhalten, das Sicherheitsmodell, Share-Definitionen und Protokollierung. Erstellen Sie vor der Bearbeitung ein zeitgestempeltes Backup:
“`bash
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup.$(date +%F)
“`
Öffnen Sie die Datei zur Bearbeitung:
“`bash
sudo nano /etc/samba/smb.conf
“`
Die Datei ist in Abschnitte unterteilt. Der Abschnitt `[global]` definiert serverweite Parameter. Einzelne Share-Abschnitte (z. B. `[sambashare]`) definieren spezifische freigegebene Ressourcen.
Kritische globale Parameter zum Überprüfen
Achten Sie im Abschnitt `[global]` auf diese Einstellungen:
“`ini
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = MYSERVER
security = user
map to guest = bad user
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
panic action = /usr/share/samba/panic-action %d
server role = standalone server
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Entersnews*spassword:* %nn *Retypesnews*spassword:* %nn *passwordsupdatedssuccessfully* .
pam password change = yes
min protocol = SMB2
max protocol = SMB3
“`
Wichtiger Hinweis: Die Direktive `min protocol = SMB2` deaktiviert SMB1 explizit, das seit 2014 veraltet ist und der Angriffsvektor für Exploits wie EternalBlue (MS17-010) ist. Lassen Sie SMB1 niemals auf einem Produktionsserver aktiviert. Modernes Windows 10/11 und alle aktuellen Linux CIFS-Clients unterstützen SMB2 und SMB3 nativ.
Schritt 3: Erstellen und Vorbereiten des freigegebenen Verzeichnisses
Erstellen Sie das Verzeichnis, das über das Netzwerk freigegeben wird:
“`bash
sudo mkdir -p /srv/sambashare
“`
Legen Sie Eigentümerschaft und Berechtigungen fest. Der richtige Ansatz hängt davon ab, ob Sie Gastzugriff oder nur authentifizierten Zugriff wünschen.
Für authentifizierten Benutzerzugriff (empfohlen für die Produktion):
“`bash
sudo chown root:sambashare /srv/sambashare
sudo chmod 2770 /srv/sambashare
“`
Die Berechtigung `2770` gliedert sich wie folgt auf:
- `2` — Setgid-Bit: Neue Dateien erben die Gruppe des Verzeichnisses, was Eigentümerschaftsfragmentierung in Mehrbenutzer-Shares verhindert.
- `7` — Eigentümer (root) hat Lesen, Schreiben, Ausführen.
- `7` — Gruppe (sambashare) hat Lesen, Schreiben, Ausführen.
- `0` — Andere haben keinen Zugriff.
Für Gast-/öffentlichen Zugriff (nur Heimlabor oder internes LAN):
“`bash
sudo chown nobody:nogroup /srv/sambashare
sudo chmod 0777 /srv/sambashare
“`
Verwenden Sie `0777` nicht auf internetfähigen Servern. Gast-Shares mit weltweiten Schreibberechtigungen sind nur in isolierten, vertrauenswürdigen Netzwerken angemessen.
Schritt 4: Systemgruppe und Benutzer erstellen
Erstellen Sie für authentifizierte Shares eine dedizierte Linux-Gruppe, die Ihrer Samba-Freigabe zugeordnet ist:
“`bash
sudo groupadd sambashare
“`
Fügen Sie den Linux-Benutzer hinzu, der auf die Freigabe zugreifen wird:
“`bash
sudo useradd -M -s /sbin/nologin sambauser
sudo usermod -aG sambashare sambauser
“`
Das Flag `-M` überspringt die Erstellung eines Home-Verzeichnisses (dies ist ein Dienstkonto, kein interaktiver Benutzer). Das Flag `-s /sbin/nologin` verhindert, dass das Konto für SSH- oder Konsolen-Anmeldungen verwendet wird — ein kritischer Sicherheitshärtungsschritt, den die meisten Anleitungen auslassen.
Registrieren Sie nun den Benutzer in Sambas eigener Passwortdatenbank (getrennt von `/etc/shadow`):
“`bash
sudo smbpasswd -a sambauser
sudo smbpasswd -e sambauser
“`
Das Flag `-a` fügt den Benutzer hinzu; das Flag `-e` aktiviert das Konto. Samba pflegt seinen eigenen Anmeldedatenspeicher unter `/var/lib/samba/private/passdb.tdb` (oder `smbpasswd`-Datei, abhängig von der Einstellung `passdb backend`). Ein Benutzer kann in Linux existieren, ohne in Sambas Datenbank zu sein, und umgekehrt — er muss in beiden registriert sein.
Schritt 5: Die Freigabe in smb.conf definieren
Fügen Sie den folgenden Block am Ende von `/etc/samba/smb.conf` hinzu. Zwei Konfigurationen werden gezeigt: eine für authentifizierten Zugriff, eine für Gastzugriff.
Authentifizierte Freigabe (Produktionsempfehlung)
“`ini
[sambashare]
path = /srv/sambashare
comment = Authenticated Network Share
browsable = yes
writable = yes
read only = no
guest ok = no
valid users = @sambashare
create mask = 0660
directory mask = 2770
force group = sambashare
“`
Parameter-Erklärung:
- `valid users = @sambashare` — das Präfix `@` bedeutet „jedes Mitglied der Linux-Gruppe namens sambashare.” Dies ist skalierbarer als das Auflisten einzelner Benutzernamen.
- `create mask = 0660` — neue Dateien werden mit rw-rw—-Berechtigungen erstellt, was weltlesbare Dateien verhindert.
- `directory mask = 2770` — neue Unterverzeichnisse erben das Setgid-Bit und Gruppenberechtigungen.
- `force group = sambashare` — erzwingt, dass alle Dateioperationen die Gruppe sambashare verwenden, unabhängig von der primären Gruppe des verbindenden Benutzers.
Gast-Freigabe (Heimlabor / internes LAN)
“`ini
[public]
path = /srv/sambashare
comment = Public Network Share
browsable = yes
writable = yes
read only = no
guest ok = yes
guest account = nobody
create mask = 0664
directory mask = 0775
“`
Schritt 6: Konfiguration validieren
Führen Sie vor dem Neustart eines Dienstes den integrierten Konfigurations-Parser aus:
“`bash
testparm
“`
`testparm` liest `smb.conf`, meldet Syntaxfehler und gibt die effektive Konfiguration nach Anwendung der Standardwerte aus. Achten Sie auf `WARNING`-Zeilen — sie weisen oft auf veraltete Parameter oder Sicherheitsfehlkonfigurationen hin. Eine saubere Ausgabe endet mit:
“`
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
“`
Wenn `testparm` Fehler meldet, beheben Sie diese vor dem Fortfahren. Das Neustarten von smbd mit einer fehlerhaften Konfigurationsdatei führt dazu, dass der Dienst lautlos fehlschlägt oder auf Standardwerte zurückfällt.
Schritt 7: Samba-Daemons neu starten und aktivieren
Debian / Ubuntu:
“`bash
sudo systemctl restart smbd nmbd
sudo systemctl enable smbd nmbd
“`
CentOS / RHEL / Fedora:
“`bash
sudo systemctl restart smb nmb
sudo systemctl enable smb nmb
“`
Überprüfen Sie, ob beide Daemons laufen:
“`bash
sudo systemctl status smbd nmbd # Debian/Ubuntu
sudo systemctl status smb nmb # RHEL/Fedora
“`
Überprüfen Sie, ob die Daemons auf den richtigen Ports lauschen:
“`bash
sudo ss -tlnp | grep -E '(smbd|nmbd|445|139)'
“`
Die erwartete Ausgabe sollte `smbd` gebunden an Port 445 und 139 zeigen.
Schritt 8: Firewall-Regeln konfigurieren
Samba erfordert, dass die folgenden Ports geöffnet sind:
| Port | Protokoll | Dienst | Zweck |
|---|
| —— | ———- | ——— | ——— |
|---|
| 137 | UDP | nmbd | NetBIOS-Namensdienst |
|---|
| 138 | UDP | nmbd | NetBIOS-Datagrammdienst |
|---|
| 139 | TCP | smbd | NetBIOS-Sitzungsdienst (SMB über NetBIOS) |
|---|
| 445 | TCP | smbd | Direktes SMB (SMB2/SMB3 — primärer Port) |
|---|
UFW (Debian/Ubuntu):
“`bash
sudo ufw allow 'Samba'
sudo ufw status
“`
firewalld (CentOS/RHEL/Fedora):
“`bash
sudo firewall-cmd –permanent –add-service=samba
sudo firewall-cmd –reload
sudo firewall-cmd –list-services
“`
iptables (manuell):
“`bash
sudo iptables -A INPUT -p tcp –dport 445 -j ACCEPT
sudo iptables -A INPUT -p tcp –dport 139 -j ACCEPT
sudo iptables -A INPUT -p udp –dport 137:138 -j ACCEPT
“`
Sicherheitshinweis: Wenn Ihr Samba-Server über das Internet erreichbar ist (für Standard-Dateifreigabe nicht empfohlen), schränken Sie diese Regeln auf bestimmte Quell-IP-Bereiche mit `-s 192.168.1.0/24` oder äquivalenten Mitteln ein. Das Exponieren von SMB-Ports gegenüber dem öffentlichen Internet ist ein schwerwiegendes Sicherheitsrisiko.
Schritt 9: SELinux-Überlegungen (RHEL/CentOS/Fedora)
Auf SELinux-durchsetzenden Systemen benötigt Samba zusätzliche Kontextbezeichnungen auf freigegebenen Verzeichnissen. Ohne diese wird smbd vom Zugriff auf den Pfad blockiert, selbst wenn die Linux-Berechtigungen korrekt sind.
“`bash
sudo setsebool -P samba_enable_home_dirs on
sudo setsebool -P samba_export_all_rw on
sudo semanage fcontext -a -t samba_share_t "/srv/sambashare(/.*)?"
sudo restorecon -Rv /srv/sambashare
“`
Überprüfen Sie, ob der Kontext angewendet wurde:
“`bash
ls -lZ /srv/sambashare
“`
Die Ausgabe sollte `system_u:object_r:samba_share_t:s0` als SELinux-Kontext anzeigen. Das Überspringen dieses Schritts ist der häufigste Grund, warum Samba-Freigaben auf RHEL-Familiensystemen fehlschlagen — der Dienst scheint korrekt zu starten, aber Clients erhalten „Zugriff verweigert”-Fehler.
Schritt 10: Auf die Freigabe von Windows aus zugreifen
Auf einem Windows-Client:
- Öffnen Sie den Datei-Explorer.
- Geben Sie in der Adressleiste ein: `<server-ip>sambashare` und drücken Sie Enter.
- Geben Sie bei Aufforderung den Samba-Benutzernamen und das Passwort ein.
- Um die Verbindung dauerhaft zu machen, klicken Sie mit der rechten Maustaste auf die Freigabe und wählen Sie Netzlaufwerk verbinden.
Für skriptgesteuerte oder Unternehmensbereitstellungen verbinden Sie das Laufwerk über die Befehlszeile:
“`cmd
net use Z: 192.168.1.100sambashare /user:sambauser /persistent:yes
“`
Schritt 11: Auf die Freigabe von Linux aus zugreifen
Mit smbclient (interaktiv, zum Testen):
“`bash
smbclient //192.168.1.100/sambashare -U sambauser
“`
Dies öffnet eine FTP-ähnliche interaktive Shell. Verwenden Sie `ls`, `get`, `put` und `exit`, um zu navigieren und Dateien zu übertragen.
Dauerhaftes Einbinden der Freigabe mit CIFS:
Installieren Sie zunächst das CIFS-Dienstprogrammpaket:
“`bash
sudo apt-get install cifs-utils # Debian/Ubuntu
sudo dnf install cifs-utils # RHEL/Fedora
“`
Erstellen Sie einen Mount-Punkt und eine Anmeldedatendatei (legen Sie niemals Passwörter im Klartext in `/etc/fstab` ab):
“`bash
sudo mkdir -p /mnt/sambashare
sudo nano /etc/samba/credentials
“`
Inhalt der Anmeldedatendatei:
“`
username=sambauser
password=yourpassword
domain=WORKGROUP
“`
Sichern Sie die Anmeldedatendatei:
“`bash
sudo chmod 600 /etc/samba/credentials
sudo chown root:root /etc/samba/credentials
“`
Fügen Sie den Mount zu `/etc/fstab` für Persistenz über Neustarts hinzu:
“`
//192.168.1.100/sambashare /mnt/sambashare cifs credentials=/etc/samba/credentials,uid=1000,gid=1000,iocharset=utf8,vers=3.0,_netdev 0 0
“`
Die Option `_netdev` weist das System an, auf Netzwerkverfügbarkeit zu warten, bevor der Mount versucht wird — unerlässlich auf Servern, die Netzwerk-Shares beim Booten einbinden. Die Option `vers=3.0` erzwingt SMB3 und vermeidet den Rückfall auf ältere Dialekte.
Testen Sie den fstab-Eintrag ohne Neustart:
“`bash
sudo mount -a
“`
Vergleich der SMB-Protokollversionen
Die Wahl des richtigen SMB-Dialekts beeinflusst Leistung, Sicherheit und Kompatibilität. Die folgende Tabelle fasst die wichtigsten Unterschiede zusammen:
| SMB-Version | Jahr | Hauptmerkmale | Sicherheit | Empfohlene Verwendung |
|---|
| ————- | —— | ————– | ———- | —————– |
|---|
| SMB1 | 1983 | Grundlegende Dateifreigabe | Kritisch anfällig (EternalBlue) | Niemals verwenden — explizit deaktivieren |
|---|
| SMB2 | 2006 | Pipelining, reduzierte Gesprächigkeit, Signierung | Verbessert | Ältere Windows Vista/7-Clients |
|---|
| SMB2.1 | 2010 | Client-Oplock-Leasing | Verbessert | Windows 7/2008 R2 |
|---|
| SMB3.0 | 2012 | Multichannel, Verschlüsselung, Failover | Stark | Windows 8/2012 und später |
|---|
| SMB3.1.1 | 2015 | Pre-Auth-Integrität, AES-128-GCM | Am stärksten | Windows 10/11, modernes Linux |
|---|
Setzen Sie immer `min protocol = SMB2` in `[global]` und bevorzugen Sie `SMB3`, wo alle Clients es unterstützen. SMB3.1.1 mit Verschlüsselung (`smb encrypt = required`) ist die richtige Wahl für jede Freigabe mit sensiblen Daten.
Samba vs. NFS: Das richtige Protokoll wählen
Sowohl Samba (SMB/CIFS) als auch NFS werden häufig für Linux-basierte Netzwerk-Dateifreigabe verwendet, dienen jedoch unterschiedlichen Anwendungsfällen:
| Kriterium | Samba (SMB/CIFS) | NFS |
|---|
| ———- | —————– | —– |
|---|
| Primärer Anwendungsfall | Plattformübergreifend (Linux + Windows) | Linux-zu-Linux-Freigabe |
|---|
| Windows-Client-Unterstützung | Nativ, keine Client-Software erforderlich | Erfordert NFS-Client-Installation |
|---|
| macOS-Unterstützung | Nativ (SMB) | Unterstützt über integrierten NFS-Client |
|---|
| Authentifizierung | Benutzername/Passwort, AD-Integration | Hostbasiert (IP/Hostname) |
|---|
| Leistung (LAN) | Etwas höherer Overhead | Geringerer Overhead, schneller im LAN |
|---|
| Verschlüsselung | SMB3 unterstützt AES-Verschlüsselung | NFSv4.2 unterstützt krb5-Verschlüsselung |
|---|
| Konfigurationskomplexität | Moderat | Geringer für reine Linux-Umgebungen |
|---|
| Am besten geeignet für | Gemischte Betriebssystemumgebungen, Domänenintegration | Homogene Linux-Cluster, HPC |
|---|
Wenn Ihre Infrastruktur ausschließlich Linux ist — zum Beispiel ein Cluster von Dedicated Servers, auf denen containerisierte Workloads laufen — kann NFS eine geringere Latenz bieten. Für jede Umgebung mit Windows-Clients oder macOS-Benutzern ist Samba die richtige Wahl.
Häufige Fallstricke und Fehlerbehebung
Freigabe ist sichtbar, gibt aber „Zugriff verweigert” zurück
- Auf SELinux-Systemen: Überprüfen und wenden Sie den `samba_share_t`-Kontext wie in Schritt 9 beschrieben an.
- Linux-Berechtigungen prüfen: Der verbindende Benutzer (oder das `nobody`-Konto für Gast-Shares) muss unabhängig von Sambas eigenen ACLs Lese-/Schreibzugriff auf Dateisystemebene auf den Pfad haben.
- smbpasswd überprüfen: Der Benutzer muss mit `smbpasswd -a` hinzugefügt und mit `smbpasswd -e` aktiviert worden sein.
Freigabe ist beim Durchsuchen des Netzwerks nicht sichtbar
- Bestätigen Sie, dass `nmbd` läuft: `sudo systemctl status nmbd`.
- Stellen Sie sicher, dass `browsable = yes` in der Share-Definition gesetzt ist.
- Windows 10/11 hat den SMB1-abhängigen „Computer Browser”-Dienst deaktiviert. Verwenden Sie direkte UNC-Pfade (`ipshare`) anstatt sich auf die Netzwerkerkennung zu verlassen.
Langsame Übertragungsgeschwindigkeiten
- Erzwingen Sie SMB3 mit `vers=3.0` oder `vers=3.1.1` in den Mount-Optionen.
- Aktivieren Sie große MTU: Fügen Sie `socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072` zu `[global]` hinzu.
- Prüfen Sie, ob SMB-Multichannel verfügbar ist: `smbstatus –verbose`.
Protokolle und Diagnose
“`bash
sudo tail -f /var/log/samba/log.smbd
sudo smbstatus
sudo pdbedit -L -v # List all Samba users
“`
Samba in der Produktion: Architekturüberlegungen
Für Produktionsbereitstellungen über eine einfache Dateifreigabe hinaus sollten Sie Folgendes berücksichtigen:
Active Directory-Integration: Samba 4 kann als vollständiger Active Directory Domain Controller fungieren und LDAP, Kerberos, DNS und Gruppenrichtlinien unterstützen. Dies ist ein bedeutender architektonischer Schritt über die eigenständige Dateifreigabe hinaus und erfordert `samba-ad-dc`-Provisionierung.
Home-Verzeichnis-Freigaben: Der Meta-Dienst `[homes]` in `smb.conf` erstellt automatisch eine persönliche Freigabe für jeden authentifizierten Benutzer, die seinem Linux-Home-Verzeichnis zugeordnet ist. Dies eliminiert die Notwendigkeit, individuelle Share-Blöcke pro Benutzer zu definieren.
Druckerfreigabe: Samba integriert sich mit CUPS, um Drucker über das Netzwerk freizugeben. Die Share-Definitionen `[printers]` und `[print$]` übernehmen dies, obwohl die Druckerfreigabe mit dem Aufkommen von Cloud-Druckdiensten weniger verbreitet geworden ist.
Kontingente: Samba respektiert Linux-Dateisystemkontingente. Implementieren Sie Kontingente auf Dateisystemebene mit `quota`-Tools, und Samba wird sie transparent durchsetzen.
Für Teams, die Webanwendungen neben Dateifreigaben betreiben, bietet die Kombination von Samba mit einem VPS mit cPanel ein verwaltetes Control Panel für Web-Hosting, während der vollständige SSH-Zugriff für die Samba-Administration erhalten bleibt. Für Umgebungen, die mehrere Hosting-Dienste unter einem Dach benötigen, hilft die Überprüfung verfügbarer VPS Control Panels dabei, die richtige Verwaltungsebene für Ihren Stack zu identifizieren.
Wenn Ihr Samba-Server auch Web-Inhalte oder Anwendungsdaten hostet, stellt die Absicherung mit einem SSL-Zertifikat für alle zugehörigen weborientierten Dienste sicher, dass der gesamte Stack modernen Sicherheitsstandards entspricht.
Technische Checkliste der wichtigsten Erkenntnisse
Verwenden Sie diese Checkliste, bevor Sie Ihre Samba-Bereitstellung als produktionsbereit betrachten:
- [ ] SMB1 explizit deaktiviert über `min protocol = SMB2` in `[global]`
- [ ] Samba-Benutzer erstellt mit `smbpasswd -a` und aktiviert mit `smbpasswd -e`
- [ ] Dienstkonten verwenden `-s /sbin/nologin` zum Blockieren des Shell-Zugriffs
- [ ] Share-Verzeichnisse verwenden das Setgid-Bit (`chmod 2770`) für konsistente Gruppeneigentümerschaft
- [ ] `testparm` läuft sauber ohne Warnungen oder Fehler
- [ ] Sowohl `smbd` als auch `nmbd` sind aktiviert und laufen
- [ ] Firewall-Regeln beschränken SMB-Ports (445, 139, 137-138) auf vertrauenswürdige Quell-IPs
- [ ] SELinux-Kontext (`samba_share_t`) auf RHEL/CentOS/Fedora-Systemen angewendet
- [ ] Anmeldedatendatei für CIFS-Mounts ist `chmod 600` und gehört root
- [ ] `/etc/fstab`-Einträge verwenden die Option `_netdev` für netzwerkabhängige Mounts
- [ ] Samba-Protokolle nach der ersten Bereitstellung unter `/var/log/samba/` überprüft
- [ ] `smbstatus` bestätigt aktive Sitzungen und gesperrte Dateien nach der Bereitstellung
FAQ
Welche Ports verwendet Samba und müssen alle geöffnet sein?
Samba verwendet TCP 445 (direktes SMB, erforderlich), TCP 139 (SMB über NetBIOS, für ältere Clients benötigt) und UDP 137-138 (NetBIOS-Namensauflösung, für Netzwerk-Browsing benötigt). Für moderne Umgebungen mit Windows 10/11 oder Linux-Clients, die direkte UNC-Pfade verwenden, ist nur TCP 445 zwingend erforderlich. UDP 137-138 und TCP 139 können blockiert werden, wenn keine NetBIOS-Namensauflösung benötigt wird.
Warum funktioniert meine Samba-Freigabe von Linux aus, gibt aber von Windows aus „Zugriff verweigert” zurück?
Dies ist fast immer ein Problem mit dem Anmeldedaten-Caching auf der Windows-Seite. Windows speichert SMB-Anmeldedaten pro Sitzung. Öffnen Sie den Anmeldedaten-Manager (Systemsteuerung > Anmeldedaten-Manager > Windows-Anmeldedaten), entfernen Sie alle zwischengespeicherten Einträge für die IP des Servers und verbinden Sie sich erneut. Wenn das Problem weiterhin besteht, überprüfen Sie, ob der Benutzer in Sambas Datenbank mit `sudo pdbedit -L -v` aktiviert ist.
Was ist der Unterschied zwischen `security = user` und `security = share` in smb.conf?
`security = share` (Share-Level-Sicherheit) ist veraltet und in Samba 4 entfernt. `security = user` (Benutzer-Level-Sicherheit) ist der einzige unterstützte Modus in modernem Samba — jede Verbindung wird gegen einen bestimmten Benutzernamen und ein Passwort authentifiziert. Gastzugriff wird separat über die Direktiven `guest ok` und `map to guest` gehandhabt, nicht über den Parameter `security`.
Kann Samba auf demselben Server mit NFS koexistieren?
Ja. Samba und NFS arbeiten auf völlig unterschiedlichen Ports und Protokollen und stehen auf Netzwerkebene nicht in Konflikt. Das gleichzeitige Teilen desselben Verzeichnisses über beide Protokolle kann jedoch Dateisperrkonflikte verursachen, insbesondere bei Schreiboperationen. Wenn Sie dieselben Daten über beide Protokolle teilen müssen, verwenden Sie einen Distributed Lock Manager (DLM) oder beschränken Sie ein Protokoll auf Nur-Lese-Zugriff.
Wie füge ich mehrere Benutzer zu einer einzelnen Samba-Freigabe hinzu?
Verwenden Sie eine Linux-Gruppe. Erstellen Sie die Gruppe (`groupadd teamshare`), fügen Sie Benutzer hinzu (`usermod -aG teamshare user1`), setzen Sie die Gruppeneigentümerschaft des Share-Verzeichnisses (`chown root:teamshare /srv/share`) und referenzieren Sie die Gruppe in `smb.conf` mit `valid users = @teamshare`. Dieser Ansatz skaliert sauber — das Hinzufügen eines Benutzers zur Freigabe erfordert nur einen `usermod`-Befehl und eine `smbpasswd -a`-Registrierung, ohne Änderungen an `smb.conf`.
