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
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
Weiter