Linux - Netzwerk und Serveradminstration SAMBA Rocky: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Vorab= *Samba allgemein = SMB Server – Rocky Linux 10 = == Vorbereitungen == * VirtualBox Server-Vorlage mit neuen MAC-Adressen klonen * De…“)
 
Zeile 3: Zeile 3:
 
*[[Samba allgemein]]
 
*[[Samba allgemein]]
  
= [[Samba|SMB]] Server – Rocky Linux 10 =
+
= [[Samba|SMB]] Server =
 +
{{#drawio:5102-smb-01}}
  
 
== Vorbereitungen ==
 
== Vorbereitungen ==
 
* VirtualBox Server-Vorlage mit neuen MAC-Adressen klonen
 
* VirtualBox Server-Vorlage mit neuen MAC-Adressen klonen
 
* Der Host soll im ''SERVER''-Netzwerk liegen
 
* Der Host soll im ''SERVER''-Netzwerk liegen
* statische IP-Adresse nach dem Netzwerkplan setzen (''nmcli'' / NetworkManager)
+
* statische IP-Adresse nach dem Netzwerkplan setzen
 
* Hostname ändern zu ''smb''
 
* Hostname ändern zu ''smb''
 
* SSH-Server anpassen
 
* SSH-Server anpassen
* SSH-Schlüssel des Kit Hosts für User ''kit'' hinterlegen
+
* SSH-Schlüssel des Kit Hosts für User ''kit'' hinterlegen
 
 
 
=== Netzkonfiguration SMB ===
 
=== Netzkonfiguration SMB ===
  
Zeile 18: Zeile 18:
 
! Parameter !! Wert !! Erläuterung
 
! Parameter !! Wert !! Erläuterung
 
|-
 
|-
| '''Netzwerk (NIC)''' || SERVER || Interface-Zuweisung in VirtualBox
+
| '''Netzwerk (NIC)''' || SERVER|| Interface-Zuweisung in VirtualBox
 
|-
 
|-
 
| '''IP''' || 10.2XX.1.2 || Statische IP
 
| '''IP''' || 10.2XX.1.2 || Statische IP
Zeile 24: Zeile 24:
 
| '''CIDR''' || 24 || Classless Inter-Domain Routing Präfixlänge
 
| '''CIDR''' || 24 || Classless Inter-Domain Routing Präfixlänge
 
|-
 
|-
| '''GW''' || 10.2XX.1.1 || GATEWAY
+
| '''GW''' || 10.2XX.1.1 || GATEWAY  
 
|-
 
|-
| '''NS''' || 10.88.2XX.21 || Resolver
+
| '''NS''' || 10.88.2XX.21 || Resolver  
 
|-
 
|-
 
| '''FQDN''' || smb.it2XX.int || Fully Qualified Domain Name
 
| '''FQDN''' || smb.it2XX.int || Fully Qualified Domain Name
 
|-
 
|-
| '''SHORT''' || smb || Short Name
+
| '''SHORT''' || smb || Short Name  
 
|-
 
|-
| '''DOM''' || it2XX.int || Domain Name
+
| '''DOM''' || it2XX.int|| Domain Name
 
|}
 
|}
 
+
;Anpassen des Templates
=== Statische IP mit nmcli setzen ===
+
*[[Anpassen des Rocky Templates]]
;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 ==
 
== Ziel ==
 
*Ein einfacher Samba-Server wird schrittweise aufgebaut und getestet – von Public Share bis Home-Verzeichnis inkl. Debugging.
 
*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 ==
 
== Installation ==
 
=== Pakete installieren ===
 
=== Pakete installieren ===
;Unterschied zu Debian
 
Paketmanager ist '''dnf''' statt apt.
 
 
 
*sudo dnf install samba samba-client cifs-utils -y
 
*sudo dnf install samba samba-client cifs-utils -y
  
=== Dienste aktivieren und starten ===
+
=== Dienststatus prüfen ===
;Unterschied zu Debian
+
*systemctl status smb
Dienste heissen '''smb''' und '''nmb''' (nicht smbd/nmbd).
 
 
 
*sudo systemctl enable --now smb nmb
 
*sudo systemctl status smb
 
  
 
== firewalld – Ports freischalten ==
 
== firewalld – Ports freischalten ==
;Wichtig
+
=== Samba-Dienst freischalten ===
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 --permanent --add-service=samba
 
*sudo firewall-cmd --reload
 
*sudo firewall-cmd --reload
*sudo firewall-cmd --list-services
 
  
=== Firewall-Status prüfen ===
+
=== Status prüfen ===
 
*sudo firewall-cmd --list-all
 
*sudo firewall-cmd --list-all
  
 
;Erklärung
 
;Erklärung
Der ''samba''-Dienst in firewalld beinhaltet automatisch TCP 139, TCP 445, UDP 137, UDP 138.
+
Der samba-Dienst in firewalld beinhaltet TCP 445, TCP 139, 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 ==
 
== SELinux – Kontexte und Booleans ==
;Wichtig
+
=== Status prüfen ===
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
 
*sestatus
 
*getenforce
 
*getenforce
  
=== SELinux-Kontext für Samba-Verzeichnisse setzen ===
+
=== Kontext für Share-Verzeichnisse setzen ===
 
*sudo semanage fcontext -a -t samba_share_t "/srv/samba/public(/.*)?"
 
*sudo semanage fcontext -a -t samba_share_t "/srv/samba/public(/.*)?"
 
*sudo restorecon -Rv /srv/samba/public
 
*sudo restorecon -Rv /srv/samba/public
  
=== SELinux Booleans ===
+
=== Wichtige 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 ===
 
 
{| class="wikitable"
 
{| class="wikitable"
 
! Boolean !! Bedeutung
 
! Boolean !! Bedeutung
Zeile 119: Zeile 80:
 
|}
 
|}
  
=== SELinux-Fehler analysieren ===
+
=== Booleans anzeigen ===
 +
*getsebool -a | grep samba
 +
 
 +
=== Fehleranalyse SELinux ===
 
*sudo ausearch -c smbd --raw | audit2why
 
*sudo ausearch -c smbd --raw | audit2why
 
*sudo tail -f /var/log/audit/audit.log | grep denied
 
*sudo tail -f /var/log/audit/audit.log | grep denied
Zeile 149: Zeile 113:
 
   read only = no
 
   read only = no
 
</pre>
 
</pre>
 +
*[[Optionen Samba Grundkurs 1]]
  
 
=== Verzeichnis anlegen ===
 
=== Verzeichnis anlegen ===
Zeile 173: Zeile 138:
 
== Debug zwischendurch ==
 
== Debug zwischendurch ==
 
=== Logs beobachten ===
 
=== Logs beobachten ===
;Unterschied zu Debian
 
Unit heisst '''smb''' (nicht smbd).
 
 
 
*sudo journalctl -u smb -f
 
*sudo journalctl -u smb -f
  
Zeile 194: Zeile 156:
 
*testparm -s --section-name=public
 
*testparm -s --section-name=public
  
;Hinweis
+
=== Hinweis ===
 
*testparm zeigt nur die tatsächlich gesetzten bzw. wirksamen Optionen an.
 
*testparm zeigt nur die tatsächlich gesetzten bzw. wirksamen Optionen an.
 
*Mit -v werden zusätzlich alle Default-Werte angezeigt.
 
*Mit -v werden zusätzlich alle Default-Werte angezeigt.
Zeile 200: Zeile 162:
 
== Benutzer anlegen ==
 
== Benutzer anlegen ==
 
=== Linux-Benutzer anlegen <nowiki>(Password: 123Start$)</nowiki> ===
 
=== Linux-Benutzer anlegen <nowiki>(Password: 123Start$)</nowiki> ===
*sudo useradd -m -s /bin/bash martha
+
*sudo useradd -m -s /bin/bash -G sambashare martha
 
*sudo passwd martha
 
*sudo passwd martha
 
;Unterschied zu Debian
 
Gruppe ''sambashare'' existiert nicht automatisch – bei Bedarf manuell anlegen: sudo groupadd sambashare
 
  
 
=== Samba-Benutzer hinzufügen ===
 
=== Samba-Benutzer hinzufügen ===
Zeile 227: Zeile 186:
 
   valid users = martha
 
   valid users = martha
 
</pre>
 
</pre>
 +
*[[Optionen Samba Grundkurs 2]]
  
 
=== Verzeichnis vorbereiten ===
 
=== Verzeichnis vorbereiten ===
Zeile 257: Zeile 217:
 
   writable = yes
 
   writable = yes
 
</pre>
 
</pre>
 +
*[[Optionen Samba Grundkurs 3]]
  
 
=== SELinux Boolean aktivieren ===
 
=== SELinux Boolean aktivieren ===
Zeile 312: Zeile 273:
 
*sudo ss -4tulpen | egrep "137|138|139|445"
 
*sudo ss -4tulpen | egrep "137|138|139|445"
  
=== firewalld anpassen nach NetBIOS-Deaktivierung ===
+
=== firewalld anpassen ===
 
*sudo firewall-cmd --permanent --remove-service=samba
 
*sudo firewall-cmd --permanent --remove-service=samba
 
*sudo firewall-cmd --permanent --add-port=445/tcp
 
*sudo firewall-cmd --permanent --add-port=445/tcp
Zeile 367: Zeile 328:
  
 
=== Pakete installieren ===
 
=== Pakete installieren ===
;Unterschied zu Debian
 
Paketmanager ist dnf.
 
 
 
*sudo dnf install cifs-utils -y
 
*sudo dnf install cifs-utils -y
  
Zeile 466: Zeile 424:
 
*Port 445 → Standard
 
*Port 445 → Standard
 
*139/NetBIOS → abschaltbar
 
*139/NetBIOS → abschaltbar
 
=== Unterschiede Rocky Linux 10 vs. Debian ===
 
{| class="wikitable"
 
! 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 ==
 
== Gruppenbasierte Freigabe ==
Zeile 599: Zeile 538:
 
*Zu restriktive Rechte blockieren den Zugriff.
 
*Zu restriktive Rechte blockieren den Zugriff.
 
*770 erlaubt Zugriff für Gruppe.
 
*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 ===
 
=== Benutzer fehlt ===
;Unterschied zu Debian
 
deluser gibt es nicht unter Rocky/RHEL.
 
 
 
*sudo gpasswd -d user1 smbgruppe
 
*sudo gpasswd -d user1 smbgruppe
 
*sudo usermod -aG smbgruppe user1
 
*sudo usermod -aG smbgruppe user1
Zeile 634: Zeile 562:
 
*Ohne smb kein Zugriff möglich.
 
*Ohne smb kein Zugriff möglich.
  
=== firewalld blockiert ===
+
=== SELinux blockiert ===
*sudo firewall-cmd --list-all
+
*sudo ausearch -c smbd --raw | audit2why
*sudo firewall-cmd --permanent --add-service=samba
+
*sudo sealert -a /var/log/audit/audit.log
*sudo firewall-cmd --reload
+
 
 +
;Erklärung
 +
*SELinux kann Zugriff trotz korrekter Linux-Rechte blockieren.
 +
*audit2why erklärt die Ursache und schlägt Lösungen vor.
  
 
== Debug ==
 
== Debug ==

Version vom 14. April 2026, 17:20 Uhr

Vorab

SMB Server

Vorbereitungen

  • VirtualBox Server-Vorlage mit neuen MAC-Adressen klonen
  • Der Host soll im SERVER-Netzwerk liegen
  • statische IP-Adresse nach dem Netzwerkplan setzen
  • 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
Anpassen des Templates

Ziel

  • Ein einfacher Samba-Server wird schrittweise aufgebaut und getestet – von Public Share bis Home-Verzeichnis inkl. Debugging.

Installation

Pakete installieren

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

Dienststatus prüfen

  • systemctl status smb

firewalld – Ports freischalten

Samba-Dienst freischalten

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

Status prüfen

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

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

SELinux – Kontexte und Booleans

Status prüfen

  • sestatus
  • getenforce

Kontext für Share-Verzeichnisse setzen

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

Wichtige 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

Booleans anzeigen

  • getsebool -a | grep samba

Fehleranalyse SELinux

  • 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

  • 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 -G sambashare martha
  • sudo passwd martha

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

  • 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

  • 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

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.

Benutzer fehlt

  • 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.

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.

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.