Samba: Windows File Sharing on RHEL (Artikel 101)
Konfiguration von Samba unter RHEL zur Bereitstellung von Dateidiensten für Windows-Clients. Integration in heterogene Netzwerke, Freigabe-Management und SELinux-Konfiguration.
# Samba on RHEL: Brückenschlag zur Windows-Welt
TL;DR / Management Summary Samba ist das Schweizer Taschenmesser für die Interoperabilität zwischen Linux und Windows. Es implementiert das SMB/CIFS Protokoll und ermöglicht es RHEL-Servern, als Dateiserver für Windows-Clients zu fungieren oder sich in ein Active Directory zu integrieren. Ein Senior Admin muss wissen, dass Samba unter RHEL eine sehr spezifische Konfiguration von SELinux und der Firewalld benötigt, da sonst Freigaben zwar sichtbar, aber nicht zugreifbar sind.
# 1. Einführung & Architektur
SMB im Linux-Kernel.
Samba besteht aus zwei Haupt-Dämons:
- smbd: Bietet Datei- und Druckdienste an (Port 445).
- nmbd: Bietet NetBIOS-Namensauflösung an (Port 137/138 - heutzutage oft optional).
graph LR
A[Windows Client] -->|SMB Port 445| B[RHEL: smbd]
B --> C{SELinux Check}
C -->|Allowed| D[Filesystem: /data/share]
B --> E[User Database: /var/lib/samba/private/passdb.tdb]
F{firewalld} -->|Allow service: samba| B
# 2. Installation & Grundkonfiguration
Schnell zur ersten Freigabe.
# Schritt 1: Pakete installieren
sudo dnf install samba samba-common samba-client
sudo systemctl enable --now smb nmb
# Schritt 2: Samba-Benutzer anlegen
Samba nutzt eine eigene Passwort-Datenbank. Der User muss aber im Linux-System existieren.
sudo smbpasswd -a sysadmin
# Schritt 3: Freigabe definieren (/etc/samba/smb.conf)
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
[shared_docs]
comment = Enterprise Shared Documents
path = /data/samba/docs
browseable = yes
writable = yes
guest ok = no
valid users = @smbgroup
# 3. Firewall & SELinux: Die RHEL-Hürden
Zugriff gewähren.
# Firewall öffnen
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
# SELinux für Samba (Kritisch!)
Dateien, die via Samba geteilt werden, benötigen ein spezielles Label.
# Pfad labeln
sudo semanage fcontext -a -t samba_share_t "/data/samba(/.*)?"
sudo restorecon -Rv /data/samba
Wenn User ihre Home-Verzeichnisse via Samba sehen sollen:
sudo setsebool -P samba_enable_home_dirs on
# 4. Day-2 Operations: AD-Integration (Ausblick)
Zentrale Authentifizierung.
In großen Umgebungen nutzt man keine lokalen Samba-User, sondern bindet RHEL ins Active Directory ein.
- Tools:
realmd,sssd,adcli. - Vorteil: Windows-Admins können Berechtigungen über gewohnte Gruppen steuern.
# 5. Troubleshooting & “War Stories”
Wenn der Explorer ‘Netzwerkpfad nicht gefunden’ meldet.
# Story 1: “Der Guest-Account Error”
Symptom: Windows-Clients können die Freigabe sehen, aber beim Doppelklick kommt “Zugriff verweigert”, ohne dass nach einem Passwort gefragt wird.
Ursache: Windows versucht es erst mit dem Gast-Account. Wenn map to guest = bad user in der global Sektion fehlt, schlägt die Verhandlung fehl.
Lösung: Fügen Sie map to guest = bad user hinzu, damit Windows zur Passworteingabe aufgefordert wird.
# Story 2: “Symlink-Sackgasse”
Symptom: Innerhalb einer Samba-Freigabe funktionieren Linux-Symlinks nicht, die auf Verzeichnisse außerhalb der Freigabe zeigen.
Ursache: Aus Sicherheitsgründen verhindert Samba das Verlassen des Freigabe-Pfads.
Lösung: Wenn nötig, in der global Sektion aktivieren (Vorsicht!):
follow symlinks = yes, wide links = yes, unix extensions = no.
# 6. Fazit & Empfehlung
- Sicherheit: Nutzen Sie immer
SMB3(Standard in RHEL 8/9). Deaktivieren Sie SMB1 (min protocol = SMB2). - Performance: Für 10G-Netzwerke nutzen Sie
socket options = TCP_NODELAYin der Config. - Wartung: Prüfen Sie regelmäßig mit
smbstatus, wer aktuell welche Dateien geöffnet hat.
# Anhang: Cheatsheet
| Aufgabe | RHEL Befehl |
|---|---|
| Syntax-Check Config | testparm |
| Aktive Verbindungen | smbstatus |
| Samba User listen | pdbedit -L -v |
| Passwort ändern | smbpasswd <user> |
| Share lokal testen | smbclient -L localhost -U <user> |
| SELinux Booleans | `getsebool -a |