Samba Grundkurs: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 85: | Zeile 85: | ||
==Benutzer anlegen== | ==Benutzer anlegen== | ||
;Linux-Benutzer anlegen | ;Linux-Benutzer anlegen | ||
| − | *useradd -m matha | + | *useradd -m -s /bin/bash matha |
*passwd user1 | *passwd user1 | ||
Version vom 1. April 2026, 11:39 Uhr
Ziel
- Ein einfacher Samba-Server wird schrittweise aufgebaut und getestet – von Public Share bis Home-Verzeichnis inkl. Debugging.
Installation
- Installation der benötigten Pakete
- 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
- Auf Share zugreifen
- 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
- useradd -m -s /bin/bash matha
- passwd user1
- Samba-Benutzer hinzufügen
- smbpasswd -a martha
- 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 user1:user1 /srv/samba/secure
- chmod 750 /srv/samba/secure
- Dienst neu starten
- systemctl restart smbd
Test (Authentifiziert)
- smbclient //localhost/secure -U user1
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/user1 -U user1
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
Port 139 sollte jetzt weg sein. Nur noch 445 aktiv → moderner Betrieb.
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 → meist abschaltbar
Gruppenbasierte Freigabe
- Gruppe anlegen
- groupadd smbgruppe
- Benutzer zur Gruppe 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 erweitern
- 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
Zugriff erfolgt jetzt gruppenbasiert statt pro Benutzer.
ACLs einführen
- ACL-Unterstützung sicherstellen
- apt install acl -y
- ACL setzen (zusätzlicher Benutzer)
- setfacl -m u:user1:rwx /srv/samba/group
- Standard-ACL für neue Dateien
- setfacl -d -m u:user1:rwx /srv/samba/group
- ACL anzeigen
- getfacl /srv/samba/group
- Erklärung
ACLs erlauben feinere Rechtevergabe zusätzlich zu klassischen Unix-Rechten.
Samba + ACL sinnvoll kombinieren
- Konfiguration erweitern
- 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
- Dienst neu starten
- systemctl restart smbd
Force User / Force Group
- Konfiguration erweitern
- 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 erstellten Dateien gehören immer der Gruppe → keine Rechteprobleme zwischen Nutzern.
Setgid für Verzeichnis
- Setgid setzen
- chmod g+s /srv/samba/group
- Erklärung
Neue Dateien erben automatisch die Gruppe des Verzeichnisses.
Typischer Fehler 1: Zugriff verweigert
- Problem zeigen
- chmod 700 /srv/samba/group
- Test
- smbclient //localhost/group -U user1
- Fix
- chmod 770 /srv/samba/group
Typischer Fehler 2: Benutzer nicht in Gruppe
- Problem simulieren
- deluser user1 smbgruppe
- Test
- smbclient //localhost/group -U user1
- Fix
- usermod -aG smbgruppe user1
Typischer Fehler 3: Samba kennt Benutzer nicht
- Problem
- smbpasswd -x user1
- Test
- smbclient //localhost/secure -U user1
- Fix
- 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
- Verbindungen anzeigen
- smbstatus -p
- Konfiguration prüfen
- testparm
- Ports prüfen
- ss -tulpen | grep 445
Mount mit Credentials-Datei
- Credentials Datei erstellen
- nano /root/.smbcred
username=user1 password=DEINPASSWORT
- Rechte setzen
- chmod 600 /root/.smbcred
- Mount
- 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