Samba Grundkurs

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen


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.

Einfachste Konfiguration (Public Share)

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

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
  • 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 matha
  • passwd user1
Samba-Benutzer hinzufügen
  • smbpasswd -a marta
Erklärung

Samba verwaltet eigene Passwörter. Linux-User + Samba-User sind getrennt → daher zwei Passwörter.

Geschützter Share (Login erforderlich)

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