Linux - Netzwerk und Serveradminstration SAMBA: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
|||
| (9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
=Vorab= | |||
*[[Samba allgemein]] | |||
= [[Samba|SMB]] Server = | = [[Samba|SMB]] Server = | ||
{{#drawio:5102-smb-01}} | {{#drawio:5102-smb-01}} | ||
| Zeile 6: | Zeile 10: | ||
* Der Host soll im ''SERVER''-Netzwerk liegen | * Der Host soll im ''SERVER''-Netzwerk liegen | ||
* statische IP-Adresse nach dem Netzwerkplan setzen (''/etc/network/interfaces'') | * statische IP-Adresse nach dem Netzwerkplan setzen (''/etc/network/interfaces'') | ||
* Hostname ändern zu '' | * 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 | === Netzkonfiguration SMB === | ||
{| class="wikitable" style="background-color: #f2f2f2;" | {| class="wikitable" style="background-color: #f2f2f2;" | ||
! Parameter !! Wert !! Erläuterung | ! Parameter !! Wert !! Erläuterung | ||
|- | |- | ||
| '''Netzwerk (NIC)''' || | | '''Netzwerk (NIC)''' || SERVER|| Interface-Zuweisung in VirtualBox | ||
|- | |- | ||
| '''IP''' || 10.2XX.1.2 || Statische IP | | '''IP''' || 10.2XX.1.2 || Statische IP | ||
| Zeile 32: | Zeile 36: | ||
;Anpassen des Templates | ;Anpassen des Templates | ||
*[[Anpassen des Debian Templates]] | *[[Anpassen des Debian Templates]] | ||
== 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) == | |||
===Wir fangen von ganz vorne an=== | |||
*sudo -i | |||
*cd /etc/samba | |||
*mv smb.conf smb.conf.org | |||
=== Konfigurationsdatei bearbeiten === | |||
*sudo nano /etc/samba/smb.conf | |||
<pre> | |||
[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 | |||
</pre> | |||
*[[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 === | |||
*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 <nowiki>(Password: 123Start$)</nowiki> === | |||
*sudo useradd -m -s /bin/bash -G sambashare martha | |||
*sudo passwd martha | |||
=== Samba-Benutzer hinzufügen === | |||
*sudo smbpasswd -a martha | |||
=== Kit User hinzufügen <nowiki>(Password: kit)</nowiki> === | |||
*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 | |||
<pre> | |||
[secure] | |||
path = /srv/samba/secure | |||
browsable = yes | |||
writable = yes | |||
guest ok = no | |||
valid users = martha | |||
</pre> | |||
*[[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 | |||
== 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 | |||
<pre> | |||
[homes] | |||
comment = Home Directories | |||
browseable = no | |||
writable = yes | |||
</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 == | |||
===Auf Verschlüsselung umschalten=== | |||
smb encrypt = required | |||
=== Samba Ports und Dienste Erklärung === | |||
*sudo ss -4tulpen | egrep "137|138|139|445" | |||
==== Ü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> | |||
[global] | |||
smb ports = 445 | |||
</pre> | |||
;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 | |||
<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 | |||
=== 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 | |||
<pre> | |||
[group] | |||
path = /srv/samba/group | |||
browsable = yes | |||
writable = yes | |||
guest ok = no | |||
valid users = @smbgruppe | |||
</pre> | |||
=== 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 | |||
<pre> | |||
[group] | |||
path = /srv/samba/group | |||
browsable = yes | |||
writable = yes | |||
guest ok = no | |||
valid users = @smbgruppe | |||
create mask = 0660 | |||
directory mask = 0770 | |||
</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 | |||
<pre> | |||
[group] | |||
path = /srv/samba/group | |||
browsable = yes | |||
writable = yes | |||
guest ok = no | |||
valid users = @smbgruppe | |||
force group = smbgruppe | |||
create mask = 0660 | |||
directory mask = 0770 | |||
</pre> | |||
;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 | |||
<pre> | |||
//SERVER-IP/group /mnt/smb cifs credentials=/root/.smbcred,iocharset=utf8 0 0 | |||
</pre> | |||
;Erklärung | |||
*Eintrag sorgt für automatisches Mounten beim Systemstart. | |||
*iocharset=utf8 verhindert Probleme mit Umlauten. | |||
Aktuelle Version vom 22. Juli 2026, 11:42 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 (/etc/network/interfaces)
- 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 | baShort 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 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.
Wir fangen von ganz vorne an
- sudo -i
- cd /etc/samba
- mv smb.conf smb.conf.org
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
Auf Verschlüsselung umschalten
smb encrypt = required
Samba Ports und Dienste Erklärung
- sudo ss -4tulpen | egrep "137|138|139|445"
Ü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.
