Samba Grundkurs: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
| + | = Samba Server Aufbau und Test = | ||
| − | + | == 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 | *apt update | ||
*apt install samba smbclient cifs-utils -y | *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 | *ss -tulpen | grep smb | ||
*ss -tulpen | grep 445 | *ss -tulpen | grep 445 | ||
| Zeile 20: | Zeile 20: | ||
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 | *nano /etc/samba/smb.conf | ||
| Zeile 40: | Zeile 40: | ||
*[[Optionen Samba Grundkurs 1]] | *[[Optionen Samba Grundkurs 1]] | ||
| − | + | === Verzeichnis anlegen === | |
| − | |||
*mkdir -p /srv/samba/public | *mkdir -p /srv/samba/public | ||
*chmod 777 /srv/samba/public | *chmod 777 /srv/samba/public | ||
| − | + | === Dienst neu starten === | |
*systemctl restart smbd | *systemctl restart smbd | ||
| − | ==Test (Public Share)== | + | == Test (Public Share) == |
| − | + | === Freigaben anzeigen === | |
*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 | *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 | *useradd -m -s /bin/bash -G sambashare martha | ||
*passwd martha | *passwd martha | ||
| − | + | === Samba-Benutzer hinzufügen === | |
*smbpasswd -a martha | *smbpasswd -a martha | ||
| − | + | ||
| + | === Kit User hinzufügen <nowiki>(Password: kit)</nowiki> === | ||
*smbpasswd -a kit | *smbpasswd -a kit | ||
| Zeile 96: | Zeile 95: | ||
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 | *nano /etc/samba/smb.conf | ||
| Zeile 109: | Zeile 108: | ||
</pre> | </pre> | ||
*[[Optionen Samba Grundkurs 2]] | *[[Optionen Samba Grundkurs 2]] | ||
| − | + | ||
| + | === Verzeichnis vorbereiten === | ||
*mkdir -p /srv/samba/secure | *mkdir -p /srv/samba/secure | ||
*chown root:sambashare /srv/samba/secure | *chown root:sambashare /srv/samba/secure | ||
*chmod 750 /srv/samba/secure | *chmod 750 /srv/samba/secure | ||
| − | + | === Dienst neu starten === | |
*systemctl restart smbd | *systemctl restart smbd | ||
| − | ==Test (Authentifiziert)== | + | == Test (Authentifiziert) == |
| − | + | === martha === | |
*smbclient //localhost/secure -U martha%123Start$ | *smbclient //localhost/secure -U martha%123Start$ | ||
| − | + | ||
| + | === kit === | ||
*smbclient //localhost/secure -U kit%kit | *smbclient //localhost/secure -U kit%kit | ||
| − | ==Home-Verzeichnisse== | + | == Home-Verzeichnisse == |
| − | + | === Konfiguration aktivieren === | |
*nano /etc/samba/smb.conf | *nano /etc/samba/smb.conf | ||
| Zeile 134: | Zeile 135: | ||
</pre> | </pre> | ||
*[[Optionen Samba Grundkurs 3]] | *[[Optionen Samba Grundkurs 3]] | ||
| − | + | ||
| + | === Dienst neu starten === | ||
*systemctl restart smbd | *systemctl restart smbd | ||
| − | ==Test Home== | + | == Test Home == |
*smbclient //localhost/martha -U martha%123Start$ | *smbclient //localhost/martha -U martha%123Start$ | ||
*smbclient //localhost/martha -U kit%kit | *smbclient //localhost/martha -U kit%kit | ||
| − | ==Sicherheitsmassnahmen== | + | == Sicherheitsmassnahmen == |
*ss -tulpen | egrep "137|138|139|445" | *ss -tulpen | egrep "137|138|139|445" | ||
| − | == = Samba Ports und Dienste Erklärung Überblick == | + | === Samba Ports und Dienste Erklärung === |
| + | ==== Überblick ==== | ||
*Die Ausgabe zeigt offene Netzwerk-Ports und die dazugehörigen Samba-Dienste (smbd und nmbd). | *Die Ausgabe zeigt offene Netzwerk-Ports und die dazugehörigen Samba-Dienste (smbd und nmbd). | ||
| − | == UDP 137 == | + | ==== UDP 137 ==== |
*NetBIOS Name Service (nmbd) | *NetBIOS Name Service (nmbd) | ||
| − | |||
| − | == UDP 138 == | + | ==== UDP 138 ==== |
*NetBIOS Datagram Service (nmbd) | *NetBIOS Datagram Service (nmbd) | ||
| − | |||
| − | == TCP 139 == | + | ==== TCP 139 ==== |
*NetBIOS Session Service (smbd) | *NetBIOS Session Service (smbd) | ||
| − | |||
| − | == TCP 445 == | + | ==== TCP 445 ==== |
*Direct SMB über TCP (smbd) | *Direct SMB über TCP (smbd) | ||
| − | |||
| − | == nmbd == | + | ==== nmbd ==== |
| − | *Dienst für NetBIOS | + | *Dienst für NetBIOS |
| − | |||
| − | == smbd == | + | ==== smbd ==== |
*Hauptdienst für Datei- und Druckfreigaben | *Hauptdienst für Datei- und Druckfreigaben | ||
| − | |||
| − | == Interpretation | + | ==== Interpretation ==== |
| − | *NetBIOS | + | *NetBIOS aktiv, SMB modern + legacy parallel |
| − | |||
| − | |||
| − | == Fazit == | + | ==== Fazit ==== |
| − | * | + | *Mischbetrieb aktiv |
| − | |||
| − | ==NetBIOS deaktivieren (modernes Setup)== | + | == NetBIOS deaktivieren (modernes Setup) == |
| − | + | === Konfiguration anpassen === | |
*nano /etc/samba/smb.conf | *nano /etc/samba/smb.conf | ||
| − | |||
<pre> | <pre> | ||
| Zeile 191: | Zeile 184: | ||
</pre> | </pre> | ||
*[[Optionen Samba Grundkurs 4]] | *[[Optionen Samba Grundkurs 4]] | ||
| − | + | ||
| + | === Dienst neu starten === | ||
*systemctl restart smbd | *systemctl restart smbd | ||
| − | ==Port-Check danach== | + | == Port-Check danach == |
*ss -tulpen | grep smb | *ss -tulpen | grep smb | ||
*ss -tulpen | grep 139 | *ss -tulpen | grep 139 | ||
;Erklärung | ;Erklärung | ||
| − | + | Nur noch Port 445 aktiv. | |
| − | ==Debian Client Mount== | + | == Debian Client Mount == |
| − | + | === Mountpunkt erstellen === | |
*mkdir /mnt/smb | *mkdir /mnt/smb | ||
| − | + | === Mount durchführen === | |
*mount -t cifs //SERVER-IP/secure /mnt/smb -o username=user1 | *mount -t cifs //SERVER-IP/secure /mnt/smb -o username=user1 | ||
| − | ==Test== | + | == Test == |
*ls /mnt/smb | *ls /mnt/smb | ||
| − | ==Typische Fehleranalyse== | + | == Typische Fehleranalyse == |
| − | + | === Verbindung testen === | |
*smbclient -L SERVER-IP -U user1 | *smbclient -L SERVER-IP -U user1 | ||
| − | + | === Namensauflösung prüfen === | |
*ping SERVER-IP | *ping SERVER-IP | ||
| − | + | === Firewall prüfen === | |
*ss -tulpen | grep 445 | *ss -tulpen | grep 445 | ||
| − | + | === Live-Logs === | |
*journalctl -u smbd -f | *journalctl -u smbd -f | ||
| − | ==Optional: Windows Client== | + | == Optional: Windows Client == |
\\SERVER-IP\public | \\SERVER-IP\public | ||
\\SERVER-IP\secure | \\SERVER-IP\secure | ||
| − | ==Fazit== | + | == 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 == | |
| + | === Gruppe anlegen === | ||
*groupadd smbgruppe | *groupadd smbgruppe | ||
| − | + | === Benutzer hinzufügen === | |
*usermod -aG smbgruppe user1 | *usermod -aG smbgruppe user1 | ||
| − | + | === Verzeichnis vorbereiten === | |
*mkdir -p /srv/samba/group | *mkdir -p /srv/samba/group | ||
*chown root:smbgruppe /srv/samba/group | *chown root:smbgruppe /srv/samba/group | ||
*chmod 770 /srv/samba/group | *chmod 770 /srv/samba/group | ||
| − | + | === Konfiguration === | |
*nano /etc/samba/smb.conf | *nano /etc/samba/smb.conf | ||
| Zeile 258: | Zeile 253: | ||
</pre> | </pre> | ||
| − | + | === Dienst neu starten === | |
*systemctl restart smbd | *systemctl restart smbd | ||
| − | ==Test== | + | == Test == |
*smbclient //localhost/group -U user1 | *smbclient //localhost/group -U user1 | ||
;Erklärung | ;Erklärung | ||
| − | Zugriff | + | Gruppenbasierter Zugriff. |
| − | ==ACLs | + | == ACLs == |
| − | + | === Installation === | |
*apt install acl -y | *apt install acl -y | ||
| − | + | === ACL setzen === | |
*setfacl -m u:user1:rwx /srv/samba/group | *setfacl -m u:user1:rwx /srv/samba/group | ||
| − | + | === Default ACL === | |
*setfacl -d -m u:user1:rwx /srv/samba/group | *setfacl -d -m u:user1:rwx /srv/samba/group | ||
| − | + | === Anzeigen === | |
*getfacl /srv/samba/group | *getfacl /srv/samba/group | ||
| − | + | == Samba + ACL == | |
| − | |||
| − | |||
| − | ==Samba + ACL | ||
| − | |||
*nano /etc/samba/smb.conf | *nano /etc/samba/smb.conf | ||
| Zeile 298: | Zeile 289: | ||
</pre> | </pre> | ||
| − | + | == Force Group == | |
| − | |||
| − | |||
| − | == | ||
| − | |||
*nano /etc/samba/smb.conf | *nano /etc/samba/smb.conf | ||
| Zeile 317: | Zeile 304: | ||
</pre> | </pre> | ||
| − | + | == Setgid == | |
| − | |||
| − | |||
| − | ==Setgid | ||
| − | |||
*chmod g+s /srv/samba/group | *chmod g+s /srv/samba/group | ||
| − | + | == Fehleranalyse == | |
| − | + | === Zugriff verweigert === | |
| − | |||
| − | == | ||
| − | |||
*chmod 700 /srv/samba/group | *chmod 700 /srv/samba/group | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
*chmod 770 /srv/samba/group | *chmod 770 /srv/samba/group | ||
| − | == | + | === Benutzer fehlt === |
| − | |||
*deluser user1 smbgruppe | *deluser user1 smbgruppe | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
*usermod -aG smbgruppe user1 | *usermod -aG smbgruppe user1 | ||
| − | == | + | === Samba User fehlt === |
| − | |||
*smbpasswd -x user1 | *smbpasswd -x user1 | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
*smbpasswd -a user1 | *smbpasswd -a user1 | ||
| − | == | + | === Dienst gestoppt === |
| − | |||
*systemctl stop smbd | *systemctl stop smbd | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
*systemctl start smbd | *systemctl start smbd | ||
| − | ==Debug | + | == Debug == |
| − | |||
*smbstatus | *smbstatus | ||
| − | |||
| − | |||
*smbstatus -p | *smbstatus -p | ||
| − | |||
| − | |||
*testparm | *testparm | ||
| − | |||
| − | |||
*ss -tulpen | grep 445 | *ss -tulpen | grep 445 | ||
| − | ==Mount mit Credentials | + | == Mount mit Credentials == |
| − | |||
*nano /root/.smbcred | *nano /root/.smbcred | ||
| Zeile 389: | Zeile 338: | ||
</pre> | </pre> | ||
| − | |||
*chmod 600 /root/.smbcred | *chmod 600 /root/.smbcred | ||
| − | |||
*mount -t cifs //SERVER-IP/group /mnt/smb -o credentials=/root/.smbcred | *mount -t cifs //SERVER-IP/group /mnt/smb -o credentials=/root/.smbcred | ||
| − | ==Persistenter Mount== | + | == Persistenter Mount == |
| − | + | *nano /etc/fstab | |
<pre> | <pre> | ||
//SERVER-IP/group /mnt/smb cifs credentials=/root/.smbcred,iocharset=utf8 0 0 | //SERVER-IP/group /mnt/smb cifs credentials=/root/.smbcred,iocharset=utf8 0 0 | ||
</pre> | </pre> | ||
Version vom 1. April 2026, 12:01 Uhr
Samba Server Aufbau und Test
Ziel
- Ein einfacher Samba-Server wird schrittweise aufgebaut und getestet – von Public Share bis Home-Verzeichnis inkl. Debugging.
Installation
Pakete installieren
- apt update
- apt install samba smbclient cifs-utils -y
Dienststatus prüfen
- systemctl status smbd
Netzwerk-Check (vorher)
- ss -tulpen | grep smb
- ss -tulpen | grep 445
- 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
- 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
- mkdir -p /srv/samba/public
- chmod 777 /srv/samba/public
Dienst neu starten
- systemctl restart smbd
Freigaben anzeigen
- smbclient -L localhost -N
- smbclient //localhost/public -N
Testdatei erstellen
- put /etc/hostname test.txt
Debug zwischendurch
Logs beobachten
- 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$)
- useradd -m -s /bin/bash -G sambashare martha
- passwd martha
Samba-Benutzer hinzufügen
- smbpasswd -a martha
Kit User hinzufügen (Password: kit)
- smbpasswd -a kit
- Erklärung
Samba verwaltet eigene Passwörter. Linux-User + Samba-User sind getrennt → daher zwei Passwörter.
Konfiguration erweitern
- nano /etc/samba/smb.conf
[secure] path = /srv/samba/secure browsable = yes writable = yes guest ok = no valid users = user1
Verzeichnis vorbereiten
- mkdir -p /srv/samba/secure
- chown root:sambashare /srv/samba/secure
- chmod 750 /srv/samba/secure
Dienst neu starten
- systemctl restart smbd
Test (Authentifiziert)
martha
- smbclient //localhost/secure -U martha%123Start$
kit
- smbclient //localhost/secure -U kit%kit
Home-Verzeichnisse
Konfiguration aktivieren
- nano /etc/samba/smb.conf
[homes] comment = Home Directories browseable = no writable = yes
Dienst neu starten
- systemctl restart smbd
Test Home
- smbclient //localhost/martha -U martha%123Start$
- smbclient //localhost/martha -U kit%kit
Sicherheitsmassnahmen
- 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 (modernes Setup)
Konfiguration anpassen
- nano /etc/samba/smb.conf
[global] disable netbios = yes smb ports = 445
Dienst neu starten
- systemctl restart smbd
Port-Check danach
- ss -tulpen | grep smb
- ss -tulpen | grep 139
- Erklärung
Nur noch Port 445 aktiv.
Debian Client Mount
Mountpunkt erstellen
- mkdir /mnt/smb
Mount durchführen
- mount -t cifs //SERVER-IP/secure /mnt/smb -o username=user1
Test
- ls /mnt/smb
Typische Fehleranalyse
Verbindung testen
- smbclient -L SERVER-IP -U user1
Namensauflösung prüfen
- ping SERVER-IP
Firewall prüfen
- ss -tulpen | grep 445
Live-Logs
- 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
- groupadd smbgruppe
Benutzer hinzufügen
- usermod -aG smbgruppe user1
Verzeichnis vorbereiten
- mkdir -p /srv/samba/group
- chown root:smbgruppe /srv/samba/group
- chmod 770 /srv/samba/group
Konfiguration
- nano /etc/samba/smb.conf
[group] path = /srv/samba/group browsable = yes writable = yes guest ok = no valid users = @smbgruppe
Dienst neu starten
- systemctl restart smbd
Test
- smbclient //localhost/group -U user1
- Erklärung
Gruppenbasierter Zugriff.
ACLs
Installation
- apt install acl -y
ACL setzen
- setfacl -m u:user1:rwx /srv/samba/group
Default ACL
- setfacl -d -m u:user1:rwx /srv/samba/group
Anzeigen
- getfacl /srv/samba/group
Samba + ACL
- 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
Force Group
- 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
Setgid
- chmod g+s /srv/samba/group
Fehleranalyse
Zugriff verweigert
- chmod 700 /srv/samba/group
- chmod 770 /srv/samba/group
Benutzer fehlt
- deluser user1 smbgruppe
- usermod -aG smbgruppe user1
Samba User fehlt
- smbpasswd -x user1
- smbpasswd -a user1
Dienst gestoppt
- systemctl stop smbd
- systemctl start smbd
Debug
- smbstatus
- smbstatus -p
- testparm
- ss -tulpen | grep 445
Mount mit Credentials
- nano /root/.smbcred
username=user1 password=DEINPASSWORT
- chmod 600 /root/.smbcred
- mount -t cifs //SERVER-IP/group /mnt/smb -o credentials=/root/.smbcred
Persistenter Mount
- nano /etc/fstab
//SERVER-IP/group /mnt/smb cifs credentials=/root/.smbcred,iocharset=utf8 0 0