Windows-Freigabe mit Samba
Samba implementiert das SMB/CIFS-Protokoll unter Linux und ermöglicht damit Dateifreigaben, die Windows-, macOS- und Linux-Clients gleichermaßen einbinden können. Auf RHEL ist — wie bei WordPress — SELinux zu beachten.
Installation
Abschnitt betitelt „Installation“sudo dnf install samba samba-client samba-commonsudo systemctl enable --now smbsudo systemctl enable --now nmb # NetBIOS-Namensauflösung (optional)Freigabe-Verzeichnis vorbereiten
Abschnitt betitelt „Freigabe-Verzeichnis vorbereiten“sudo mkdir -p /srv/freigabesudo chown -R root:root /srv/freigabesudo chmod 2775 /srv/freigabe # SGID: neue Dateien erben GruppeFür eine Freigabe auf der alle Benutzer einer Gruppe schreiben dürfen:
sudo groupadd freigabe-gruppesudo chown root:freigabe-gruppe /srv/freigabesudo usermod -aG freigabe-gruppe michasmb.conf — Grundkonfiguration
Abschnitt betitelt „smb.conf — Grundkonfiguration“sudo nano /etc/samba/smb.conf[global] workgroup = WORKGROUP server string = Linux Fileserver security = user passdb backend = tdbsam printing = cups printcap name = cups
# Freigabe für eine Gruppe[Freigabe] comment = Gemeinsame Ablage path = /srv/freigabe valid users = @freigabe-gruppe read only = no browseable = yes create mask = 0664 directory mask = 2775
# Persönliches Home-Verzeichnis (optional)[homes] comment = Heimatverzeichnis valid users = %S read only = no browseable = noKonfiguration prüfen:
testparm # Syntax und Logik prüfentestparm -s # bereinigte Ausgabe ohne KommentareSamba-Benutzer anlegen
Abschnitt betitelt „Samba-Benutzer anlegen“Samba verwaltet Passwörter in einer eigenen Datenbank — unabhängig vom Linux-Systempasswort. Der Linux-Benutzer muss aber existieren:
# Linux-Benutzer anlegen (falls noch nicht vorhanden)sudo useradd -M -s /sbin/nologin micha # ohne Homedir, kein Shell-Login# oder für einen normalen Benutzer mit Login:sudo useradd -m micha
# Samba-Passwort setzensudo smbpasswd -a micha # Benutzer hinzufügen + Passwort setzensudo smbpasswd -e micha # Benutzer aktivieren (enable)sudo smbpasswd -d micha # Benutzer deaktivieren (disable)
# Alle Samba-Benutzer anzeigensudo pdbedit -LSELinux konfigurieren
Abschnitt betitelt „SELinux konfigurieren“# Samba darf auf das Freigabeverzeichnis zugreifensudo semanage fcontext -a -t samba_share_t "/srv/freigabe(/.*)?"sudo restorecon -Rv /srv/freigabe
# Kontext prüfenls -laZ /srv/freigabeNützliche SELinux-Booleans für Samba:
# Home-Verzeichnisse freigebensudo setsebool -P samba_enable_home_dirs 1
# Samba darf beliebige Dateien lesen/schreiben (weniger sicher)sudo setsebool -P samba_export_all_rw 1
# Aktuell gesetzte Samba-Booleans anzeigengetsebool -a | grep sambaFirewall
Abschnitt betitelt „Firewall“sudo firewall-cmd --permanent --add-service=sambasudo firewall-cmd --reload
# Was öffnet der samba-Dienst?firewall-cmd --info-service=samba# ports: 135/tcp 137/udp 138/udp 139/tcp 445/tcpDienste neu starten
Abschnitt betitelt „Dienste neu starten“sudo systemctl restart smb nmbsystemctl status smbVerbindung testen
Abschnitt betitelt „Verbindung testen“Vom Linux-Server selbst
Abschnitt betitelt „Vom Linux-Server selbst“smbclient -L localhost -U micha # Freigaben auflistensmbclient //localhost/Freigabe -U micha # Freigabe öffnen
# Im smbclient:smb: \> ls # Inhalt anzeigensmb: \> put datei # Datei hochladensmb: \> get datei # Datei herunterladensmb: \> exitVon einem Linux-Client einbinden
Abschnitt betitelt „Von einem Linux-Client einbinden“sudo mount -t cifs //server/Freigabe /mnt \ -o username=micha,password=...,uid=$(id -u),gid=$(id -g)
# Dauerhaft in /etc/fstab://server/Freigabe /mnt/freigabe cifs credentials=/etc/samba/credentials,uid=1000,gid=1000 0 0# /etc/samba/credentials (Rechte 600!)username=michapassword=sicheres-passwortVon Windows
Abschnitt betitelt „Von Windows“Im Explorer: \\server-ip\Freigabe oder \\server-hostname\Freigabe
Oder per Kommandozeile (cmd/PowerShell):
net use Z: \\server-ip\Freigabe /user:michaLogs und Fehlersuche
Abschnitt betitelt „Logs und Fehlersuche“journalctl -u smb -f # Samba-Logs livetail -f /var/log/samba/log.smbd # SMB-Daemon-Logtail -f /var/log/samba/log.nmbd # NetBIOS-Log
# Verbindungsversuche beobachtentail -f /var/log/samba/log.*