Samba als Standalone-Server
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
- Installieren Sie Samba auf fs und legen Sie die smb.conf von oben an. Prüfen Sie sie mit testparm.
- Legen Sie die Benutzer max und erika an, beide in der Gruppe mitarbeiter, und schalten Sie sie für Samba frei.
- Greifen Sie von lx mit smbclient auf daten zu und legen Sie eine Datei an. Wem gehört sie auf fs?
- Hängen Sie daten auf lx dauerhaft per fstab ein.
- Greifen Sie von win11 auf \\fs\daten und \\fs\max zu.
- Legen Sie einen Benutzer gast-test ohne Gruppe mitarbeiter an. Was darf er auf public, was auf daten?
Vertiefung
- Geben Sie der Gruppe verwaltung per ACL nur Leserechte auf daten.
- Richten Sie den PDF-Drucker ein und drucken Sie von win11 darauf.
- Lassen Sie fs mit wsdd im Explorer unter Netzwerk erscheinen.
- Was zeigt smbstatus, während win11 eine Datei geöffnet hat?
- 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
- Samba Standalone Server · Samba-Server minimal · Samba shares · Samba rechte · Samba Public Share · Samba-guest-share · Samba pdf Printer · Samba User anlegen
- smb.conf-Beispiele: Smb.conf.minimal · Smb.conf.home · Smb.conf.diverse