Samba Grundkurs: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(34 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 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.
  
==Installation==
+
== Installation ==
;Installation der benötigten Pakete
+
=== Pakete installieren ===
*apt update
+
*sudo apt update
*apt install samba smbclient cifs-utils -y
+
*sudo apt install samba smbclient cifs-utils -y
  
;Dienststatus prüfen
+
=== Dienststatus prüfen ===
 
*systemctl status smbd
 
*systemctl status smbd
  
==Netzwerk-Check (vorher)==
+
== Netzwerk-Check (vorher) ==
*ss -tulpen | grep smb
+
*sudo ss -tulpen | grep smb
*ss -tulpen | grep 445
+
*sudo ss -tulpen | grep 445
*ss -tulpen | grep 139
+
*sudo ss -tulpen | grep 139
  
 
;Erklärung
 
;Erklärung
 
Samba nutzt primär TCP 445 (modern). Port 139 (NetBIOS) ist Legacy und kann später deaktiviert werden.
 
Samba nutzt primär TCP 445 (modern). Port 139 (NetBIOS) ist Legacy und kann später deaktiviert werden.
  
==Einfachste Konfiguration (Public Share)==
+
== Einfachste Konfiguration (Public Share) ==
;Konfigurationsdatei bearbeiten
+
=== Konfigurationsdatei bearbeiten ===
*nano /etc/samba/smb.conf
+
*sudo nano /etc/samba/smb.conf
  
 
<pre>
 
<pre>
Zeile 40: Zeile 38:
 
*[[Optionen Samba Grundkurs 1]]
 
*[[Optionen Samba Grundkurs 1]]
  
 +
=== Verzeichnis anlegen ===
 +
*sudo mkdir -p /srv/samba/public
 +
*sudo chmod 777 /srv/samba/public
  
;Verzeichnis anlegen
+
=== Dienst neu starten ===
*mkdir -p /srv/samba/public
+
*sudo systemctl restart smbd
*chmod 777 /srv/samba/public
 
  
;Dienst neu starten
+
== Test (Public Share) ==
*systemctl restart smbd
+
=== Freigaben anzeigen ===
 
 
==Test (Public Share)==
 
;Freigaben anzeigen
 
 
*smbclient -L localhost -N
 
*smbclient -L localhost -N
  
;Auf Share zugreifen
+
=== Auf Share zugreifen ===
 
*smbclient //localhost/public -N
 
*smbclient //localhost/public -N
  
;Testdatei erstellen
+
=== Testdatei erstellen ===
 
*put /etc/hostname test.txt
 
*put /etc/hostname test.txt
  
==Debug zwischendurch==
+
== Debug zwischendurch ==
;Logs beobachten
+
=== Logs beobachten ===
*journalctl -u smbd -f
+
*sudo journalctl -u smbd -f
  
= Testparm =
+
== Testparm ==
 
+
=== Alle aktiven Optionen anzeigen ===
== Alle aktiven Optionen anzeigen ==
 
 
*testparm
 
*testparm
  
== Nur effektive Konfiguration ohne Kommentare ==
+
=== Nur effektive Konfiguration ohne Kommentare ===
 
*testparm -s
 
*testparm -s
  
== Bestimmten Parameter prüfen ==
+
=== Bestimmten Parameter prüfen ===
 
*testparm -v | grep parametername
 
*testparm -v | grep parametername
  
== Alle verfügbaren Optionen anzeigen ==
+
=== Alle verfügbaren Optionen anzeigen ===
 
*testparm -v
 
*testparm -v
  
== Nur eine Freigabe anzeigen ==
+
=== Nur eine Freigabe anzeigen ===
 
*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.
  
==Benutzer anlegen==
+
== Benutzer anlegen ==
;Linux-Benutzer anlegen
+
=== Linux-Benutzer anlegen <nowiki>(Password: 123Start$)</nowiki> ===
*useradd -m -s /bin/bash -G sambashare martha
+
*sudo useradd -m -s /bin/bash -G sambashare martha
*passwd martha
+
*sudo passwd martha
 +
 
 +
=== Samba-Benutzer hinzufügen ===
 +
*sudo smbpasswd -a martha
  
;Samba-Benutzer hinzufügen
+
=== Kit User hinzufügen <nowiki>(Password: kit)</nowiki> ===
*smbpasswd -a martha
+
*sudo smbpasswd -a kit
;Kit user auch zu einem Samba Nutzer machen
 
*smbpasswd -a kit
 
  
 
;Erklärung
 
;Erklärung
 
Samba verwaltet eigene Passwörter. Linux-User + Samba-User sind getrennt → daher zwei Passwörter.
 
Samba verwaltet eigene Passwörter. Linux-User + Samba-User sind getrennt → daher zwei Passwörter.
  
==Geschützter Share (Login erforderlich)==
+
== Geschützter Share (Login erforderlich) ==
;Konfiguration erweitern
+
=== Konfiguration erweitern ===
*nano /etc/samba/smb.conf
+
*sudo nano /etc/samba/smb.conf
  
 
<pre>
 
<pre>
Zeile 106: Zeile 103:
 
   writable = yes
 
   writable = yes
 
   guest ok = no
 
   guest ok = no
   valid users = user1
+
   valid users = martha
 
</pre>
 
</pre>
 
*[[Optionen Samba Grundkurs 2]]
 
*[[Optionen Samba Grundkurs 2]]
;Verzeichnis vorbereiten
 
*mkdir -p /srv/samba/secure
 
*chown root:sambashare /srv/samba/secure
 
*chmod 750 /srv/samba/secure
 
  
;Dienst neu starten
+
=== Verzeichnis vorbereiten ===
*systemctl restart smbd
+
*sudo mkdir -p /srv/samba/secure
 +
*sudo chown root:sambashare /srv/samba/secure
 +
*sudo chmod 770 /srv/samba/secure
 +
 
 +
=== Dienst neu starten ===
 +
*sudo systemctl restart smbd
  
==Test (Authentifiziert)==
+
== Test (Authentifiziert) ==
;martha
+
=== martha ===
 
*smbclient //localhost/secure -U martha%123Start$
 
*smbclient //localhost/secure -U martha%123Start$
;kit
+
 
 +
=== kit ===
 
*smbclient //localhost/secure -U kit%kit
 
*smbclient //localhost/secure -U kit%kit
  
==Home-Verzeichnisse==
+
== Home-Verzeichnisse ==
;Konfiguration aktivieren
+
=== Konfiguration aktivieren ===
*nano /etc/samba/smb.conf
+
*sudo nano /etc/samba/smb.conf
  
 
<pre>
 
<pre>
Zeile 133: Zeile 132:
 
   writable = yes
 
   writable = yes
 
</pre>
 
</pre>
 +
*[[Optionen Samba Grundkurs 3]]
  
;Dienst neu starten
+
=== Dienst neu starten ===
*systemctl restart smbd
+
*sudo systemctl restart smbd
  
==Test Home==
+
== Test Home ==
*smbclient //localhost/user1 -U user1
+
*smbclient //localhost/martha -U martha%123Start$
 +
*smbclient //localhost/martha -U kit%kit
  
==NetBIOS deaktivieren (modernes Setup)==
+
== Sicherheitsmassnahmen ==
;Konfiguration anpassen
+
*sudo ss -tulpen | egrep "137|138|139|445"
*nano /etc/samba/smb.conf
+
 
 +
=== Samba Ports und Dienste Erklärung ===
 +
==== Überblick ====
 +
*Die Ausgabe zeigt offene Netzwerk-Ports und die dazugehörigen Samba-Dienste (smbd und nmbd).
 +
 
 +
==== UDP 137 ====
 +
*NetBIOS Name Service (nmbd)
 +
 
 +
==== UDP 138 ====
 +
*NetBIOS Datagram Service (nmbd)
 +
 
 +
==== TCP 139 ====
 +
*NetBIOS Session Service (smbd)
 +
 
 +
==== TCP 445 ====
 +
*Direct SMB über TCP (smbd)
 +
 
 +
==== nmbd ====
 +
*Dienst für NetBIOS
 +
 
 +
==== smbd ====
 +
*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 nmbd ====
 +
*sudo systemctl stop nmbd
 +
 
 +
==== systemctl disable nmbd ====
 +
*sudo systemctl disable nmbd
 +
 
 +
==== ss -4tulpen | egrep "137|138|139|445" ====
 +
*sudo ss -4tulpen | egrep "137|138|139|445"
 +
 
 +
=== 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
  
 
<pre>
 
<pre>
 
[global]
 
[global]
  disable netbios = yes
 
 
   smb ports = 445
 
   smb ports = 445
 
</pre>
 
</pre>
  
;Dienst neu starten
+
;Neu laden
*systemctl restart smbd
+
*sudo systemctl restart smbd
  
==Port-Check danach==
+
;Testen
*ss -tulpen | grep smb
+
*sudo ss -4tulpen | egrep "137|138|139|445"
*ss -tulpen | grep 139
 
  
 
;Erklärung
 
;Erklärung
Port 139 sollte jetzt weg sein. Nur noch 445 aktiv → moderner Betrieb.
+
*Samba lauscht nur noch auf Port 445 (Direct SMB).
 +
*Port 139 (NetBIOS) wird nicht mehr verwendet.
 +
*Zugriff erfolgt ausschließlich über moderne SMB-Verbindungen.
  
==Debian Client Mount==
+
== Debian Client Mount (grafischer Client) ==
;Mountpunkt erstellen
 
*mkdir /mnt/smb
 
  
;Mount durchführen
+
=== Pakete installieren ===
*mount -t cifs //SERVER-IP/secure /mnt/smb -o username=user1
+
*sudo apt update
 +
*sudo apt install cifs-utils -y
  
==Test==
+
=== 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
 
*ls /mnt/smb
  
==Typische Fehleranalyse==
+
=== Credentials-Datei erstellen ===
;Verbindung testen
+
*sudo nano /root/.smbcred
*smbclient -L SERVER-IP -U user1
 
  
;Namensauflösung prüfen
+
<pre>
 +
username=martha
 +
password=123Start$
 +
</pre>
 +
 
 +
=== 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
 +
 
 +
<pre>
 +
//smb/secure /mnt/smb cifs credentials=/root/.smbcred,iocharset=utf8,_netdev 0 0
 +
</pre>
 +
 
 +
=== Erklärung der Felder ===
 +
{| class="wikitable"
 +
! 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
 
*ping SERVER-IP
  
;Firewall prüfen
+
=== Firewall prüfen ===
*ss -tulpen | grep 445
+
*sudo ss -tulpen | grep 445
  
;Live-Logs
+
=== Live-Logs ===
*journalctl -u smbd -f
+
*sudo journalctl -u smbd -f
  
==Optional: Windows Client==
+
== Optional: Windows Client ==
\\SERVER-IP\public
+
\\SERVER-IP\public
\\SERVER-IP\secure
 
  
==Fazit==
+
\\SERVER-IP\secure
 +
 
 +
== Fazit ==
 
*Public → ohne Login
 
*Public → ohne Login
 
*Secure → mit Benutzer
 
*Secure → mit Benutzer
 
*Homes → automatisch pro User
 
*Homes → automatisch pro User
 
*Port 445 → Standard
 
*Port 445 → Standard
*139/NetBIOS → meist abschaltbar
+
*139/NetBIOS → abschaltbar
==Gruppenbasierte Freigabe==
+
 
;Gruppe anlegen
+
== Gruppenbasierte Freigabe ==
*groupadd smbgruppe
+
=== Gruppe anlegen ===
 +
*sudo groupadd smbgruppe
  
;Benutzer zur Gruppe hinzufügen
+
=== Benutzer hinzufügen ===
*usermod -aG smbgruppe user1
+
*sudo usermod -aG smbgruppe kit
  
;Verzeichnis vorbereiten
+
=== Verzeichnis vorbereiten ===
*mkdir -p /srv/samba/group
+
*sudo mkdir -p /srv/samba/group
*chown root:smbgruppe /srv/samba/group
+
*sudo chown root:smbgruppe /srv/samba/group
*chmod 770 /srv/samba/group
+
*sudo chmod 770 /srv/samba/group
  
;Konfiguration erweitern
+
=== Konfiguration ===
*nano /etc/samba/smb.conf
+
*sudo nano /etc/samba/smb.conf
  
 
<pre>
 
<pre>
Zeile 217: Zeile 352:
 
</pre>
 
</pre>
  
;Dienst neu starten
+
=== Dienst neu starten ===
*systemctl restart smbd
+
*sudo systemctl restart smbd
  
==Test==
+
== Test ==
*smbclient //localhost/group -U user1
+
*smbclient //localhost/group -U kit%kit
 +
*smbclient //localhost/group -U martha%123Start$
  
 
;Erklärung
 
;Erklärung
Zugriff erfolgt jetzt gruppenbasiert statt pro Benutzer.
+
*Zugriff erfolgt nur für Mitglieder der Gruppe smbgruppe.
 +
*@ vor dem Gruppennamen bedeutet Gruppenfreigabe.
 +
*Linux-Rechte (770) und Samba valid users greifen gemeinsam.
  
==ACLs einführen==
+
== ACLs ==
;ACL-Unterstützung sicherstellen
+
=== Installation ===
*apt install acl -y
+
*sudo apt install acl -y
  
;ACL setzen (zusätzlicher Benutzer)
+
=== ACL setzen ===
*setfacl -m u:user1:rwx /srv/samba/group
+
*sudo setfacl -m u:kit:rwx /srv/samba/group
  
;Standard-ACL für neue Dateien
+
=== Default ACL ===
*setfacl -d -m u:user1:rwx /srv/samba/group
+
*sudo setfacl -d -m u:kit:rwx /srv/samba/group
  
;ACL anzeigen
+
=== Anzeigen ===
 
*getfacl /srv/samba/group
 
*getfacl /srv/samba/group
  
 
;Erklärung
 
;Erklärung
ACLs erlauben feinere Rechtevergabe zusätzlich zu klassischen Unix-Rechten.
+
*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 sinnvoll kombinieren==
+
== Samba + ACL ==
;Konfiguration erweitern
+
*sudo nano /etc/samba/smb.conf
*nano /etc/samba/smb.conf
 
  
 
<pre>
 
<pre>
Zeile 257: Zeile 396:
 
</pre>
 
</pre>
  
;Dienst neu starten
+
;Erklärung
*systemctl restart smbd
+
*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 User / Force Group==
+
== Force Group ==
;Konfiguration erweitern
+
*sudo nano /etc/samba/smb.conf
*nano /etc/samba/smb.conf
 
  
 
<pre>
 
<pre>
Zeile 277: Zeile 418:
  
 
;Erklärung
 
;Erklärung
Alle erstellten Dateien gehören immer der Gruppe → keine Rechteprobleme zwischen Nutzern.
+
*Alle Dateien gehören automatisch der Gruppe smbgruppe.
 +
*Verhindert Probleme bei unterschiedlichen Primärgruppen.
 +
*Wichtig bei mehreren Nutzern im gleichen Share.
  
==Setgid für Verzeichnis==
+
== Setgid ==
;Setgid setzen
+
*sudo chmod g+s /srv/samba/group
*chmod g+s /srv/samba/group
 
  
 
;Erklärung
 
;Erklärung
Neue Dateien erben automatisch die Gruppe des Verzeichnisses.
+
*Neue Dateien übernehmen automatisch die Gruppen-ID des Verzeichnisses.
 +
*Ergänzt force group auf Dateisystemebene.
  
==Typischer Fehler 1: Zugriff verweigert==
+
== Fehleranalyse ==
;Problem zeigen
+
=== Zugriff verweigert ===
*chmod 700 /srv/samba/group
+
*sudo chmod 700 /srv/samba/group
 +
*sudo chmod 770 /srv/samba/group
  
;Test
+
;Erklärung
*smbclient //localhost/group -U user1
+
*Zu restriktive Rechte blockieren den Zugriff.
 +
*770 erlaubt Zugriff für Gruppe.
  
;Fix
+
=== Benutzer fehlt ===
*chmod 770 /srv/samba/group
+
*sudo deluser user1 smbgruppe
 +
*sudo usermod -aG smbgruppe user1
  
==Typischer Fehler 2: Benutzer nicht in Gruppe==
+
;Erklärung
;Problem simulieren
+
*Nur Gruppenmitglieder dürfen zugreifen.
*deluser user1 smbgruppe
+
*Änderungen wirken erst nach neuer Anmeldung.
  
;Test
+
=== Samba User fehlt ===
*smbclient //localhost/group -U user1
+
*sudo smbpasswd -x user1
 +
*sudo smbpasswd -a user1
  
;Fix
+
;Erklärung
*usermod -aG smbgruppe user1
+
*Samba benötigt eigene Benutzerdatenbank.
 +
*Linux-User allein reicht nicht.
  
==Typischer Fehler 3: Samba kennt Benutzer nicht==
+
=== Dienst gestoppt ===
;Problem
+
*sudo systemctl stop smbd
*smbpasswd -x user1
+
*sudo systemctl start smbd
  
;Test
+
;Erklärung
*smbclient //localhost/secure -U user1
+
*Ohne smbd kein Zugriff möglich.
  
;Fix
+
== Debug ==
*smbpasswd -a user1
 
 
 
==Typischer Fehler 4: Dienst läuft nicht==
 
;Problem simulieren
 
*systemctl stop smbd
 
 
 
;Test
 
*smbclient -L localhost
 
 
 
;Fix
 
*systemctl start smbd
 
 
 
==Debug erweitern==
 
;Offene Dateien anzeigen
 
 
*smbstatus
 
*smbstatus
 
;Verbindungen anzeigen
 
 
*smbstatus -p
 
*smbstatus -p
 
;Konfiguration prüfen
 
 
*testparm
 
*testparm
 +
*sudo ss -tulpen | grep 445
  
;Ports prüfen
+
;Erklärung
*ss -tulpen | grep 445
+
*smbstatus zeigt aktive Verbindungen und Dateien.
 +
*testparm prüft die Konfiguration.
 +
*ss zeigt offene Ports.
  
==Mount mit Credentials-Datei==
+
== Persistenter Mount ==
;Credentials Datei erstellen
+
*sudo nano /etc/fstab
*nano /root/.smbcred
 
  
 
<pre>
 
<pre>
username=user1
+
//SERVER-IP/group /mnt/smb cifs credentials=/root/.smbcred,iocharset=utf8 0 0
password=DEINPASSWORT
 
 
</pre>
 
</pre>
  
;Rechte setzen
+
;Erklärung
*chmod 600 /root/.smbcred
+
*Eintrag sorgt für automatisches Mounten beim Systemstart.
 
+
*iocharset=utf8 verhindert Probleme mit Umlauten.
;Mount
 
*mount -t cifs //SERVER-IP/group /mnt/smb -o credentials=/root/.smbcred
 
 
 
==Persistenter Mount==
 
;nano /etc/fstab
 
 
 
<pre>
 
//SERVER-IP/group /mnt/smb cifs credentials=/root/.smbcred,iocharset=utf8 0 0
 
</pre>
 

Aktuelle Version vom 1. April 2026, 13:16 Uhr

Ziel

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

Installation

Pakete installieren

  • sudo apt update
  • sudo apt install samba smbclient cifs-utils -y

Dienststatus prüfen

  • systemctl status smbd

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

Dienst neu starten

  • sudo systemctl restart smbd

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 smbd -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

Dienst neu starten

  • sudo systemctl restart smbd

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

Dienst neu starten

  • sudo systemctl restart smbd

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 (smbd und nmbd).

UDP 137

  • NetBIOS Name Service (nmbd)

UDP 138

  • NetBIOS Datagram Service (nmbd)

TCP 139

  • NetBIOS Session Service (smbd)

TCP 445

  • Direct SMB über TCP (smbd)

nmbd

  • Dienst für NetBIOS

smbd

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

  • sudo systemctl stop nmbd

systemctl disable nmbd

  • sudo systemctl disable nmbd

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

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

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

Debian Client Mount (grafischer Client)

Pakete installieren

  • sudo apt update
  • sudo apt 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 ss -tulpen | grep 445

Live-Logs

  • sudo journalctl -u smbd -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

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 smbd

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 apt 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 deluser 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 smbd
  • sudo systemctl start smbd
Erklärung
  • Ohne smbd kein Zugriff möglich.

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.