Samba als Standalone-Server

Aus Xinux Wiki
Version vom 18. Oktober 2026, 18:46 Uhr von Thomas.will (Diskussion | Beiträge) (Neue Seite (Kurs Linux - Samba))
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
Kurs Lab Rechner
Linux - Samba Linux - Samba Lab fs · 10.2XX.1.31

Einfach erklärt

  • Ein Standalone-Server ist ein Samba-Server ohne Domäne. Er verwaltet seine Benutzer selbst.
  • Jeder Samba-Benutzer muss auch als Linux-Benutzer existieren. Samba speichert dazu ein eigenes Passwort.
  • Was ein Benutzer darf, entscheiden zwei Stellen: die Freigabe in der smb.conf und die Rechte im Dateisystem. Es gilt immer das Strengere.

Das Wichtigste

  • Konfiguration: /etc/samba/smb.conf, prüfen mit testparm
  • Abschnitte: [global] für den ganzen Server, jeder andere Abschnitt ist eine Freigabe.
  • Benutzer: Linux-Benutzer anlegen, dann mit smbpasswd -a für Samba freischalten.
  • Dienst: smbd für Freigaben, nmbd nur für NetBIOS-Namen und Browsing.

Installation

  • apt install samba smbclient cifs-utils acl
  • systemctl status smbd nmbd

Die smb.conf

  • Die mitgelieferte Datei ist lang und voller Kommentare. Zur Seite legen und klein anfangen:
  • mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
  • /etc/samba/smb.conf
[global]
   workgroup = LAB
   server string = Dateiserver %h
   security = user
   map to guest = never
   server min protocol = SMB3
   log file = /var/log/samba/log.%m
   max log size = 1000

[homes]
   comment = Persönliches Verzeichnis
   browseable = no
   read only = no
   valid users = %S

[daten]
   comment = Gemeinsame Daten
   path = /srv/samba/daten
   read only = no
   valid users = @mitarbeiter
   force group = mitarbeiter
   create mask = 0660
   directory mask = 2770

[public]
   comment = Für alle lesbar
   path = /srv/samba/public
   read only = yes
   guest ok = yes
   write list = @mitarbeiter
Option Bedeutung
workgroup Name der Arbeitsgruppe, in Windows sichtbar
security = user Anmeldung mit Benutzer und Passwort dieses Servers
map to guest = never ohne gültige Anmeldung kein Zugriff, auch nicht als Gast
server min protocol = SMB3 nur SMB 3 und neuer
[homes] besondere Freigabe: jeder Benutzer sieht sein eigenes Home-Verzeichnis
valid users = @mitarbeiter nur Mitglieder dieser Linux-Gruppe
force group neue Dateien gehören immer dieser Gruppe
create mask, directory mask Rechte für neue Dateien und Verzeichnisse
write list darf schreiben, auch wenn die Freigabe sonst nur lesbar ist
  • Für [public] mit Gästen muss map to guest = bad user gesetzt sein. Dann wird jede unbekannte Anmeldung zum Gast.
  • testparm
  • testparm -s zeigt die Konfiguration ohne Kommentare, mit allen gesetzten Werten.
  • systemctl restart smbd

Verzeichnisse und Benutzer

groupadd mitarbeiter
mkdir -p /srv/samba/daten /srv/samba/public
chgrp mitarbeiter /srv/samba/daten /srv/samba/public
chmod 2770 /srv/samba/daten
chmod 2775 /srv/samba/public

useradd -m -s /bin/bash -G mitarbeiter max
smbpasswd -a max
pdbedit -L
  • pdbedit -L listet alle Samba-Benutzer, pdbedit -Lv max mit allen Details.
  • Ein Benutzer ohne smbpasswd -a kann sich bei Samba nicht anmelden, auch wenn er ein Linux-Passwort hat.

Zugriff

Von Linux

smbclient -L fs -U max
smbclient //fs/daten -U max
smb: \> ls
smb: \> put /etc/hosts hosts.txt
smb: \> exit
  • Einhängen:
mkdir /mnt/daten
mount -t cifs //fs/daten /mnt/daten -o username=max,uid=max,gid=mitarbeiter
  • Dauerhaft in /etc/fstab, mit Passwortdatei (Rechte 600):
//fs/daten  /mnt/daten  cifs  credentials=/root/.smb-max,uid=max,gid=mitarbeiter,nofail,_netdev  0 0
username=max
password=geheim

Von Windows

  • Im Explorer: \\fs\daten
  • In der Eingabeaufforderung:
net use Z: \\fs\daten /user:fs\max
net use
net use Z: /delete
  • Windows merkt sich Anmeldungen. Zum Abmelden alle Verbindungen trennen: net use * /delete

Rechte

  • Wirksam ist, was beide Stellen erlauben:
smb.conf Dateisystem Ergebnis
read only = no rw schreiben
read only = no r nur lesen
read only = yes rw nur lesen
valid users fehlt der Benutzer rw kein Zugriff
  • Feinere Rechte mit POSIX-ACLs:
setfacl -m g:verwaltung:rx /srv/samba/daten
setfacl -d -m g:verwaltung:rx /srv/samba/daten
getfacl /srv/samba/daten
  • -d setzt die Standard-ACL: Neue Dateien und Verzeichnisse erben die Rechte.
  • Mit Windows-Rechten, die man im Explorer setzt, geht es weiter im Mitgliedsserver: Samba Mitgliedsserver

Drucker

  • Ein PDF-Drucker zum Üben:
  • apt install cups cups-pdf
[printers]
   comment = Alle Drucker
   path = /var/spool/samba
   printable = yes
   guest ok = no
   browseable = no
  • Die Drucker selbst richtet man in CUPS ein. Samba reicht sie nur weiter.
  • Windows braucht für einen Drucker einen Treiber. Am einfachsten auf jedem Client selbst installieren, oder IPP direkt zu CUPS.

Im Netzwerk sichtbar

  • Windows 10 und 11 finden Server im Netzwerk nicht mehr über NetBIOS, sondern über WS-Discovery. Samba kann das nicht selbst.
  • apt install wsdd
  • Danach erscheint fs unter „Netzwerk“ im Explorer. Ohne wsdd geht der Zugriff über \\fs trotzdem.

Prüfen

Was Befehl
Konfiguration fehlerfrei testparm
Dienst läuft systemctl status smbd
Freigaben sichtbar smbclient -L fs -U max
Wer ist verbunden smbstatus
Samba-Benutzer pdbedit -L
Logdatei eines Clients /var/log/samba/log.<clientname>

Stolperfallen

  • Benutzer nicht mit smbpasswd -a angelegt: NT_STATUS_LOGON_FAILURE, obwohl das Linux-Passwort stimmt.
  • Dateisystemrechte vergessen: Freigabe ist beschreibbar, trotzdem NT_STATUS_ACCESS_DENIED.
  • Windows hat sich eine alte Anmeldung gemerkt: Man kommt mit dem falschen Benutzer hinein. net use * /delete
  • Gast ohne map to guest = bad user: guest ok = yes allein reicht nicht.
  • testparm vergessen: Ein Tippfehler in der smb.conf, und eine Freigabe fehlt einfach.

Übungen

Grundübungen

  1. Installieren Sie Samba auf fs und legen Sie die smb.conf von oben an. Prüfen Sie sie mit testparm.
  2. Legen Sie die Benutzer max und erika an, beide in der Gruppe mitarbeiter, und schalten Sie sie für Samba frei.
  3. Greifen Sie von lx mit smbclient auf daten zu und legen Sie eine Datei an. Wem gehört sie auf fs?
  4. Hängen Sie daten auf lx dauerhaft per fstab ein.
  5. Greifen Sie von win11 auf \\fs\daten und \\fs\max zu.
  6. Legen Sie einen Benutzer gast-test ohne Gruppe mitarbeiter an. Was darf er auf public, was auf daten?

Vertiefung

  1. Geben Sie der Gruppe verwaltung per ACL nur Leserechte auf daten.
  2. Richten Sie den PDF-Drucker ein und drucken Sie von win11 darauf.
  3. Lassen Sie fs mit wsdd im Explorer unter Netzwerk erscheinen.
  4. Was zeigt smbstatus, während win11 eine Datei geöffnet hat?
  5. Erzwingen Sie Verschlüsselung für daten: smb encrypt = required. Prüfen Sie mit smbstatus.

Fehlersuche

1. max meldet sich an und bekommt NT_STATUS_LOGON_FAILURE

max wurde nur mit useradd angelegt, aber nicht mit smbpasswd -a für Samba. pdbedit -L zeigt ihn nicht.

2. max kann daten öffnen, aber keine Datei anlegen

Die Freigabe erlaubt Schreiben, das Dateisystem nicht: /srv/samba/daten gehört nicht der Gruppe mitarbeiter oder hat kein Schreibrecht für die Gruppe. ls -ld /srv/samba/daten

3. Die Freigabe public fehlt in smbclient -L

Tippfehler in der smb.conf, z.B. [public ohne schließende Klammer oder ein falscher Optionsname. testparm meldet es.

4. win11 kommt auf daten immer als erika hinein, obwohl man max eingibt

Windows hat noch eine Verbindung als erika zum selben Server. Ein Server, ein Benutzer pro Windows-Sitzung. net use * /delete und neu verbinden.

5. Ein alter Scanner kann nicht mehr auf die Freigabe speichern

Der Scanner kann nur SMB 1, der Server erlaubt mindestens SMB 3. Nicht SMB 1 einschalten, sondern eine eigene, abgeschottete Lösung suchen, z.B. FTP oder ein Firmware-Update.

Vertiefung

Weiter