Linux - Netzwerk und Serveradminstration SAMBA Rocky

Aus Xinux Wiki
Version vom 14. April 2026, 17:13 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=Vorab= *Samba allgemein = SMB Server – Rocky Linux 10 = == Vorbereitungen == * VirtualBox Server-Vorlage mit neuen MAC-Adressen klonen * De…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Vorab

SMB Server – Rocky Linux 10

Vorbereitungen

  • VirtualBox Server-Vorlage mit neuen MAC-Adressen klonen
  • Der Host soll im SERVER-Netzwerk liegen
  • statische IP-Adresse nach dem Netzwerkplan setzen (nmcli / NetworkManager)
  • Hostname ändern zu smb
  • SSH-Server anpassen
  • SSH-Schlüssel des Kit Hosts für User kit hinterlegen

Netzkonfiguration SMB

Parameter Wert Erläuterung
Netzwerk (NIC) SERVER Interface-Zuweisung in VirtualBox
IP 10.2XX.1.2 Statische IP
CIDR 24 Classless Inter-Domain Routing Präfixlänge
GW 10.2XX.1.1 GATEWAY
NS 10.88.2XX.21 Resolver
FQDN smb.it2XX.int Fully Qualified Domain Name
SHORT smb Short Name
DOM it2XX.int Domain Name

Statische IP mit nmcli setzen

Unterschied zu Debian

Rocky Linux 10 nutzt NetworkManager (nmcli) – keine /etc/network/interfaces.

  • sudo nmcli con show
  • sudo nmcli con mod "Wired connection 1" ipv4.addresses 10.2XX.1.2/24
  • sudo nmcli con mod "Wired connection 1" ipv4.gateway 10.2XX.1.1
  • sudo nmcli con mod "Wired connection 1" ipv4.dns 10.88.2XX.21
  • sudo nmcli con mod "Wired connection 1" ipv4.method manual
  • sudo nmcli con up "Wired connection 1"

Ziel

  • Ein einfacher Samba-Server wird schrittweise aufgebaut und getestet – von Public Share bis Home-Verzeichnis inkl. Debugging.
  • Besonderheiten Rocky Linux 10: firewalld für Portfreigaben, SELinux für Dateikontexte.

Installation

Pakete installieren

Unterschied zu Debian

Paketmanager ist dnf statt apt.

  • sudo dnf install samba samba-client cifs-utils -y

Dienste aktivieren und starten

Unterschied zu Debian

Dienste heissen smb und nmb (nicht smbd/nmbd).

  • sudo systemctl enable --now smb nmb
  • sudo systemctl status smb

firewalld – Ports freischalten

Wichtig

Rocky Linux 10 nutzt firewalld. Ohne Freigabe blockiert die Firewall alle Samba-Verbindungen.

Samba-Dienst dauerhaft freischalten

  • sudo firewall-cmd --permanent --add-service=samba
  • sudo firewall-cmd --reload
  • sudo firewall-cmd --list-services

Firewall-Status prüfen

  • sudo firewall-cmd --list-all
Erklärung

Der samba-Dienst in firewalld beinhaltet automatisch TCP 139, TCP 445, UDP 137, UDP 138.

Einzelne Ports manuell (alternativ)

  • sudo firewall-cmd --permanent --add-port=445/tcp
  • sudo firewall-cmd --permanent --add-port=139/tcp
  • sudo firewall-cmd --reload

SELinux – Kontexte und Booleans

Wichtig

SELinux ist unter Rocky Linux 10 standardmässig aktiv (Enforcing). Ohne korrekte Kontexte werden Shares blockiert – auch wenn Linux-Rechte korrekt sind.

SELinux-Status prüfen

  • sestatus
  • getenforce

SELinux-Kontext für Samba-Verzeichnisse setzen

  • sudo semanage fcontext -a -t samba_share_t "/srv/samba/public(/.*)?"
  • sudo restorecon -Rv /srv/samba/public

SELinux Booleans

samba_enable_home_dirs – Home-Verzeichnisse

  • sudo setsebool -P samba_enable_home_dirs on

smbd_anon_write – öffentliche Freigaben

  • sudo setsebool -P smbd_anon_write on

Aktive Booleans anzeigen

  • getsebool -a | grep samba

Übersicht wichtiger Samba-Booleans

Boolean Bedeutung
samba_enable_home_dirs Zugriff auf Home-Verzeichnisse via Samba
smbd_anon_write Anonymes Schreiben erlauben
samba_export_all_ro Alle Verzeichnisse read-only exportieren
samba_export_all_rw Alle Verzeichnisse read-write exportieren

SELinux-Fehler analysieren

  • sudo ausearch -c smbd --raw | audit2why
  • sudo tail -f /var/log/audit/audit.log | grep denied

Netzwerk-Check (vorher)

  • sudo ss -tulpen | grep smb
  • sudo ss -tulpen | grep 445
  • sudo ss -tulpen | grep 139
Erklärung

Samba nutzt primär TCP 445 (modern). Port 139 (NetBIOS) ist Legacy und kann später deaktiviert werden.

Einfachste Konfiguration (Public Share)

Konfigurationsdatei bearbeiten

  • sudo nano /etc/samba/smb.conf
[global]
   workgroup = WORKGROUP
   server string = Samba Server
   security = user
   map to guest = Bad User

[public]
   path = /srv/samba/public
   browsable = yes
   writable = yes
   guest ok = yes
   read only = no

Verzeichnis anlegen

  • sudo mkdir -p /srv/samba/public
  • sudo chmod 777 /srv/samba/public

SELinux-Kontext setzen

  • sudo semanage fcontext -a -t samba_share_t "/srv/samba/public(/.*)?"
  • sudo restorecon -Rv /srv/samba/public

Dienst neu starten

  • sudo systemctl restart smb

Test (Public Share)

Freigaben anzeigen

  • smbclient -L localhost -N

Auf Share zugreifen

  • smbclient //localhost/public -N

Testdatei erstellen

  • put /etc/hostname test.txt

Debug zwischendurch

Logs beobachten

Unterschied zu Debian

Unit heisst smb (nicht smbd).

  • sudo journalctl -u smb -f

Testparm

Alle aktiven Optionen anzeigen

  • testparm

Nur effektive Konfiguration ohne Kommentare

  • testparm -s

Bestimmten Parameter prüfen

  • testparm -v | grep parametername

Alle verfügbaren Optionen anzeigen

  • testparm -v

Nur eine Freigabe anzeigen

  • testparm -s --section-name=public
Hinweis
  • testparm zeigt nur die tatsächlich gesetzten bzw. wirksamen Optionen an.
  • Mit -v werden zusätzlich alle Default-Werte angezeigt.

Benutzer anlegen

Linux-Benutzer anlegen (Password: 123Start$)

  • sudo useradd -m -s /bin/bash martha
  • sudo passwd martha
Unterschied zu Debian

Gruppe sambashare existiert nicht automatisch – bei Bedarf manuell anlegen: sudo groupadd sambashare

Samba-Benutzer hinzufügen

  • sudo smbpasswd -a martha

Kit User hinzufügen (Password: kit)

  • sudo smbpasswd -a kit
Erklärung

Samba verwaltet eigene Passwörter. Linux-User + Samba-User sind getrennt → daher zwei Passwörter.

Geschützter Share (Login erforderlich)

Konfiguration erweitern

  • sudo nano /etc/samba/smb.conf
[secure]
   path = /srv/samba/secure
   browsable = yes
   writable = yes
   guest ok = no
   valid users = martha

Verzeichnis vorbereiten

  • sudo mkdir -p /srv/samba/secure
  • sudo chown root:sambashare /srv/samba/secure
  • sudo chmod 770 /srv/samba/secure

SELinux-Kontext setzen

  • sudo semanage fcontext -a -t samba_share_t "/srv/samba/secure(/.*)?"
  • sudo restorecon -Rv /srv/samba/secure

Dienst neu starten

  • sudo systemctl restart smb

Test (Authentifiziert)

martha

  • smbclient //localhost/secure -U martha%123Start$

kit

  • smbclient //localhost/secure -U kit%kit

Home-Verzeichnisse

Konfiguration aktivieren

  • sudo nano /etc/samba/smb.conf
[homes]
   comment = Home Directories
   browseable = no
   writable = yes

SELinux Boolean aktivieren

  • sudo setsebool -P samba_enable_home_dirs on

Dienst neu starten

  • sudo systemctl restart smb

Test Home

  • smbclient //localhost/martha -U martha%123Start$
  • smbclient //localhost/martha -U kit%kit

Sicherheitsmassnahmen

  • sudo ss -tulpen | egrep "137|138|139|445"

Samba Ports und Dienste Erklärung

Überblick

  • Die Ausgabe zeigt offene Netzwerk-Ports und die dazugehörigen Samba-Dienste (smb und nmb).

UDP 137

  • NetBIOS Name Service (nmb)

UDP 138

  • NetBIOS Datagram Service (nmb)

TCP 139

  • NetBIOS Session Service (smb)

TCP 445

  • Direct SMB über TCP (smb)

nmb

  • Dienst für NetBIOS

smb

  • Hauptdienst für Datei- und Druckfreigaben

Interpretation

  • NetBIOS aktiv, SMB modern + legacy parallel

Fazit

  • Mischbetrieb aktiv

NetBIOS deaktivieren und Ports prüfen

Schritte

systemctl stop nmb

  • sudo systemctl stop nmb

systemctl disable nmb

  • sudo systemctl disable nmb

ss -4tulpen | egrep "137|138|139|445"

  • sudo ss -4tulpen | egrep "137|138|139|445"

firewalld anpassen nach NetBIOS-Deaktivierung

  • sudo firewall-cmd --permanent --remove-service=samba
  • sudo firewall-cmd --permanent --add-port=445/tcp
  • sudo firewall-cmd --reload

Ergebnis

  • NetBIOS (137/138) sollte weg sein.
  • Optional auch 139, wenn sauber konfiguriert.
  • Nur noch Port 445 aktiv → moderner SMB-Betrieb.

Warum NetBIOS abschalten

Gründe

Sicherheit

  • NetBIOS ist alt und anfälliger für Angriffe (z. B. Spoofing, Information Leakage).

Weniger Angriffsfläche

  • Ports 137/138/139 verschwinden → weniger offene Dienste im Netzwerk.

Moderne Systeme

  • Aktuelle Windows/Linux nutzen direkt SMB über Port 445.

Saubere Architektur

  • Namensauflösung läuft heute über DNS statt NetBIOS-Broadcasts.

Weniger Traffic

  • NetBIOS erzeugt unnötige Broadcasts im Netzwerk.

Fazit

  • NetBIOS ist Legacy → in modernen Netzen überflüssig und besser deaktivieren.

SMB auf Port 445 beschränken

Konfiguration anpassen

  • sudo nano /etc/samba/smb.conf
[global]
   smb ports = 445
Neu laden
  • sudo systemctl restart smb
Testen
  • sudo ss -4tulpen | egrep "137|138|139|445"
Erklärung
  • Samba lauscht nur noch auf Port 445 (Direct SMB).
  • Port 139 (NetBIOS) wird nicht mehr verwendet.
  • Zugriff erfolgt ausschließlich über moderne SMB-Verbindungen.

Rocky Linux Client Mount

Pakete installieren

Unterschied zu Debian

Paketmanager ist dnf.

  • sudo dnf install cifs-utils -y

Mountpunkt erstellen

  • sudo mkdir -p /mnt/smb

Temporärer Mount

  • sudo mount -t cifs //smb/secure /mnt/smb -o username=martha

Test

  • ls /mnt/smb

Credentials-Datei erstellen

  • sudo nano /root/.smbcred
username=martha
password=123Start$

Rechte setzen

  • sudo chmod 600 /root/.smbcred

Mount mit Credentials

  • sudo mount -t cifs //smb/secure /mnt/smb -o credentials=/root/.smbcred

Persistenter Mount (/etc/fstab)

  • sudo nano /etc/fstab
//smb/secure /mnt/smb cifs credentials=/root/.smbcred,iocharset=utf8,_netdev 0 0

Erklärung der Felder

Feld Bedeutung
//smb/secure SMB-Share (Servername + Freigabe)
/mnt/smb lokaler Mountpunkt
cifs Dateisystemtyp für SMB
credentials=/root/.smbcred Benutzername/Passwort aus Datei
iocharset=utf8 korrekte Darstellung von Umlauten
_netdev Mount erst nach Netzwerkstart
0 kein Dump (Backup irrelevant)
0 keine automatische fsck-Prüfung

Test ohne Reboot

  • sudo mount -a

Prüfung

  • ls /mnt/smb

Reboot und Test

  • sudo reboot
  • ls /mnt/smb
Erklärung
  • /etc/fstab sorgt für automatisches Mounten beim Systemstart.
  • Credentials-Datei verhindert Klartext-Passwörter in der fstab.

Typische Fehleranalyse

Verbindung testen

  • smbclient -L smb -U martha%123Start$

Namensauflösung prüfen

  • ping SERVER-IP

Firewall prüfen

  • sudo firewall-cmd --list-all
  • sudo ss -tulpen | grep 445

SELinux prüfen

  • sudo ausearch -c smbd --raw | audit2why
  • sudo tail -f /var/log/audit/audit.log | grep denied

Live-Logs

  • sudo journalctl -u smb -f

Optional: Windows Client

\\SERVER-IP\public
\\SERVER-IP\secure

Fazit

  • Public → ohne Login
  • Secure → mit Benutzer
  • Homes → automatisch pro User
  • Port 445 → Standard
  • 139/NetBIOS → abschaltbar

Unterschiede Rocky Linux 10 vs. Debian

Funktion Debian Rocky Linux 10
Paketmanager apt dnf
Dienst-Name smbd / nmbd smb / nmb
Firewall ufw / iptables firewalld
Netzwerkkonfig /etc/network/interfaces nmcli / NetworkManager
SELinux nicht aktiv aktiv (Enforcing)
Benutzerverwaltung deluser gpasswd -d / usermod
Logs journalctl -u smbd journalctl -u smb

Gruppenbasierte Freigabe

Gruppe anlegen

  • sudo groupadd smbgruppe

Benutzer hinzufügen

  • sudo usermod -aG smbgruppe kit

Verzeichnis vorbereiten

  • sudo mkdir -p /srv/samba/group
  • sudo chown root:smbgruppe /srv/samba/group
  • sudo chmod 770 /srv/samba/group

SELinux-Kontext setzen

  • sudo semanage fcontext -a -t samba_share_t "/srv/samba/group(/.*)?"
  • sudo restorecon -Rv /srv/samba/group

Konfiguration

  • sudo nano /etc/samba/smb.conf
[group]
   path = /srv/samba/group
   browsable = yes
   writable = yes
   guest ok = no
   valid users = @smbgruppe

Dienst neu starten

  • sudo systemctl restart smb

Test

  • smbclient //localhost/group -U kit%kit
  • smbclient //localhost/group -U martha%123Start$
Erklärung
  • Zugriff erfolgt nur für Mitglieder der Gruppe smbgruppe.
  • @ vor dem Gruppennamen bedeutet Gruppenfreigabe.
  • Linux-Rechte (770) und Samba valid users greifen gemeinsam.

ACLs

Installation

  • sudo dnf install acl -y

ACL setzen

  • sudo setfacl -m u:kit:rwx /srv/samba/group

Default ACL

  • sudo setfacl -d -m u:kit:rwx /srv/samba/group

Anzeigen

  • getfacl /srv/samba/group
Erklärung
  • ACLs erlauben zusätzliche Benutzerrechte unabhängig von Gruppen.
  • -m setzt Rechte für einen Benutzer.
  • -d sorgt dafür, dass neue Dateien diese Rechte automatisch erben.

Samba + ACL

  • sudo nano /etc/samba/smb.conf
[group]
   path = /srv/samba/group
   browsable = yes
   writable = yes
   guest ok = no
   valid users = @smbgruppe
   create mask = 0660
   directory mask = 0770
Erklärung
  • create mask bestimmt Rechte neuer Dateien.
  • directory mask bestimmt Rechte neuer Verzeichnisse.
  • 0660 = lesen/schreiben für Owner + Gruppe.
  • 0770 = volle Rechte für Owner + Gruppe.

Force Group

  • sudo nano /etc/samba/smb.conf
[group]
   path = /srv/samba/group
   browsable = yes
   writable = yes
   guest ok = no
   valid users = @smbgruppe
   force group = smbgruppe
   create mask = 0660
   directory mask = 0770
Erklärung
  • Alle Dateien gehören automatisch der Gruppe smbgruppe.
  • Verhindert Probleme bei unterschiedlichen Primärgruppen.
  • Wichtig bei mehreren Nutzern im gleichen Share.

Setgid

  • sudo chmod g+s /srv/samba/group
Erklärung
  • Neue Dateien übernehmen automatisch die Gruppen-ID des Verzeichnisses.
  • Ergänzt force group auf Dateisystemebene.

Fehleranalyse

Zugriff verweigert

  • sudo chmod 700 /srv/samba/group
  • sudo chmod 770 /srv/samba/group
Erklärung
  • Zu restriktive Rechte blockieren den Zugriff.
  • 770 erlaubt Zugriff für Gruppe.

SELinux blockiert

  • sudo ausearch -c smbd --raw | audit2why
  • sudo sealert -a /var/log/audit/audit.log
Erklärung
  • SELinux kann Zugriff trotz korrekter Linux-Rechte blockieren.
  • audit2why erklärt die Ursache und schlägt Lösungen vor.

Benutzer fehlt

Unterschied zu Debian

deluser gibt es nicht unter Rocky/RHEL.

  • sudo gpasswd -d user1 smbgruppe
  • sudo usermod -aG smbgruppe user1
Erklärung
  • Nur Gruppenmitglieder dürfen zugreifen.
  • Änderungen wirken erst nach neuer Anmeldung.

Samba User fehlt

  • sudo smbpasswd -x user1
  • sudo smbpasswd -a user1
Erklärung
  • Samba benötigt eigene Benutzerdatenbank.
  • Linux-User allein reicht nicht.

Dienst gestoppt

  • sudo systemctl stop smb
  • sudo systemctl start smb
Erklärung
  • Ohne smb kein Zugriff möglich.

firewalld blockiert

  • sudo firewall-cmd --list-all
  • sudo firewall-cmd --permanent --add-service=samba
  • sudo firewall-cmd --reload

Debug

  • smbstatus
  • smbstatus -p
  • testparm
  • sudo ss -tulpen | grep 445
Erklärung
  • smbstatus zeigt aktive Verbindungen und Dateien.
  • testparm prüft die Konfiguration.
  • ss zeigt offene Ports.

Persistenter Mount

  • sudo nano /etc/fstab
//SERVER-IP/group /mnt/smb cifs credentials=/root/.smbcred,iocharset=utf8 0 0
Erklärung
  • Eintrag sorgt für automatisches Mounten beim Systemstart.
  • iocharset=utf8 verhindert Probleme mit Umlauten.