Samba Grundkurs: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (37 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 == |
| − | + | === 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 === | |
*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 === | |
| − | *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 | ||
| − | + | === Dienst neu starten === | |
| − | * | + | *sudo systemctl restart smbd |
| − | |||
| − | + | == Test (Public Share) == | |
| − | + | === Freigaben anzeigen === | |
| − | |||
| − | ==Test (Public Share)== | ||
| − | |||
*smbclient -L localhost -N | *smbclient -L localhost -N | ||
| − | + | === Auf Share zugreifen === | |
*smbclient //localhost/public -N | *smbclient //localhost/public -N | ||
| − | + | === Testdatei erstellen === | |
*put /etc/hostname test.txt | *put /etc/hostname test.txt | ||
| − | ==Debug zwischendurch== | + | == Debug zwischendurch == |
| − | + | === 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 <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 | ||
| − | + | === Kit User hinzufügen <nowiki>(Password: kit)</nowiki> === | |
| − | *smbpasswd -a | + | *sudo 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 === | |
| − | *nano /etc/samba/smb.conf | + | *sudo nano /etc/samba/smb.conf |
<pre> | <pre> | ||
| Zeile 105: | Zeile 103: | ||
writable = yes | writable = yes | ||
guest ok = no | guest ok = no | ||
| − | valid users = | + | valid users = martha |
</pre> | </pre> | ||
*[[Optionen Samba Grundkurs 2]] | *[[Optionen Samba Grundkurs 2]] | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | === 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 |
| − | ==Home-Verzeichnisse== | + | == Test (Authentifiziert) == |
| − | + | === martha === | |
| − | *nano /etc/samba/smb.conf | + | *smbclient //localhost/secure -U martha%123Start$ |
| + | |||
| + | === kit === | ||
| + | *smbclient //localhost/secure -U kit%kit | ||
| + | |||
| + | == Home-Verzeichnisse == | ||
| + | === Konfiguration aktivieren === | ||
| + | *sudo nano /etc/samba/smb.conf | ||
<pre> | <pre> | ||
| Zeile 129: | Zeile 132: | ||
writable = yes | writable = yes | ||
</pre> | </pre> | ||
| + | *[[Optionen Samba Grundkurs 3]] | ||
| + | |||
| + | === 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. |
| − | ==NetBIOS deaktivieren | + | ==== Weniger Traffic ==== |
| − | + | *NetBIOS erzeugt unnötige Broadcasts im Netzwerk. | |
| − | *nano /etc/samba/smb.conf | + | |
| + | === 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] | ||
| − | |||
smb ports = 445 | smb ports = 445 | ||
</pre> | </pre> | ||
| − | ; | + | ;Neu laden |
| − | *systemctl restart smbd | + | *sudo systemctl restart smbd |
| − | + | ;Testen | |
| − | *ss - | + | *sudo ss -4tulpen | egrep "137|138|139|445" |
| − | |||
;Erklärung | ;Erklärung | ||
| − | Port 139 | + | *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 | ||
| + | |||
| + | <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 === | |
| − | *mount - | + | *sudo mount -a |
| − | == | + | === Prüfung === |
*ls /mnt/smb | *ls /mnt/smb | ||
| − | == | + | === Reboot und Test === |
| − | + | *sudo reboot | |
| − | * | + | *ls /mnt/smb |
| − | ;Namensauflösung prüfen | + | ;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 === | |
| − | *ss -tulpen | grep 445 | + | *sudo ss -tulpen | grep 445 |
| − | + | === Live-Logs === | |
| − | *journalctl -u smbd -f | + | *sudo journalctl -u smbd -f |
| − | ==Optional: Windows Client== | + | == Optional: Windows Client == |
| − | \\SERVER-IP\public | + | \\SERVER-IP\public |
| − | |||
| − | ==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 → | + | *139/NetBIOS → abschaltbar |
| − | ==Gruppenbasierte Freigabe== | + | |
| − | + | == Gruppenbasierte Freigabe == | |
| − | *groupadd smbgruppe | + | === Gruppe anlegen === |
| + | *sudo groupadd smbgruppe | ||
| − | + | === Benutzer hinzufügen === | |
| − | *usermod -aG smbgruppe | + | *sudo usermod -aG smbgruppe kit |
| − | + | === 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 === | |
| − | *nano /etc/samba/smb.conf | + | *sudo nano /etc/samba/smb.conf |
<pre> | <pre> | ||
| Zeile 213: | Zeile 352: | ||
</pre> | </pre> | ||
| − | + | === Dienst neu starten === | |
| − | *systemctl restart smbd | + | *sudo systemctl restart smbd |
| − | ==Test== | + | == Test == |
| − | *smbclient //localhost/group -U | + | *smbclient //localhost/group -U kit%kit |
| + | *smbclient //localhost/group -U martha%123Start$ | ||
;Erklärung | ;Erklärung | ||
| − | Zugriff erfolgt | + | *Zugriff erfolgt nur für Mitglieder der Gruppe smbgruppe. |
| + | *@ vor dem Gruppennamen bedeutet Gruppenfreigabe. | ||
| + | *Linux-Rechte (770) und Samba valid users greifen gemeinsam. | ||
| − | ==ACLs | + | == ACLs == |
| − | + | === Installation === | |
| − | *apt install acl -y | + | *sudo apt install acl -y |
| − | + | === ACL setzen === | |
| − | *setfacl -m u: | + | *sudo setfacl -m u:kit:rwx /srv/samba/group |
| − | + | === Default ACL === | |
| − | *setfacl -d -m u: | + | *sudo setfacl -d -m u:kit:rwx /srv/samba/group |
| − | + | === Anzeigen === | |
*getfacl /srv/samba/group | *getfacl /srv/samba/group | ||
;Erklärung | ;Erklärung | ||
| − | ACLs erlauben | + | *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 | + | == Samba + ACL == |
| − | + | *sudo nano /etc/samba/smb.conf | |
| − | *nano /etc/samba/smb.conf | ||
<pre> | <pre> | ||
| Zeile 253: | Zeile 396: | ||
</pre> | </pre> | ||
| − | ; | + | ;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 | |
| − | *nano /etc/samba/smb.conf | ||
<pre> | <pre> | ||
| Zeile 273: | Zeile 418: | ||
;Erklärung | ;Erklärung | ||
| − | Alle | + | *Alle Dateien gehören automatisch der Gruppe smbgruppe. |
| + | *Verhindert Probleme bei unterschiedlichen Primärgruppen. | ||
| + | *Wichtig bei mehreren Nutzern im gleichen Share. | ||
| − | ==Setgid | + | == Setgid == |
| − | + | *sudo chmod g+s /srv/samba/group | |
| − | *chmod g+s /srv/samba/group | ||
;Erklärung | ;Erklärung | ||
| − | Neue Dateien | + | *Neue Dateien übernehmen automatisch die Gruppen-ID des Verzeichnisses. |
| + | *Ergänzt force group auf Dateisystemebene. | ||
| − | == | + | == Fehleranalyse == |
| − | + | === Zugriff verweigert === | |
| − | *chmod | + | *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 == | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | ==Debug | ||
| − | |||
*smbstatus | *smbstatus | ||
| − | |||
| − | |||
*smbstatus -p | *smbstatus -p | ||
| − | |||
| − | |||
*testparm | *testparm | ||
| + | *sudo ss -tulpen | grep 445 | ||
| − | ; | + | ;Erklärung |
| − | *ss | + | *smbstatus zeigt aktive Verbindungen und Dateien. |
| + | *testparm prüft die Konfiguration. | ||
| + | *ss zeigt offene Ports. | ||
| − | ==Mount | + | == Persistenter Mount == |
| − | + | *sudo nano /etc/fstab | |
| − | *nano / | ||
<pre> | <pre> | ||
| − | + | //SERVER-IP/group /mnt/smb cifs credentials=/root/.smbcred,iocharset=utf8 0 0 | |
| − | |||
</pre> | </pre> | ||
| − | ; | + | ;Erklärung |
| − | * | + | *Eintrag sorgt für automatisches Mounten beim Systemstart. |
| − | + | *iocharset=utf8 verhindert Probleme mit Umlauten. | |
| − | |||
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
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.
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
Freigaben anzeigen
- smbclient -L localhost -N
- 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.
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.