Sprache auswählen

Tutorial

Docker-Samba Setup mit Rechteverwaltung für den Raspberry Pi

Ein pragmatisches Docker-Samba-Setup, bei dem Gruppen, Benutzer und Freigaben zentral über die compose.yaml beschrieben werden, damit interne Netzfreigaben sauber und konsistent auf dieselben Host-Verzeichnisse zugreifen können.

docker sambaWie ihr wahrscheinlich bereits festgestellt habt, ist ein internes Samba-Setup schnell aufgesetzt, wird aber unübersichtlich, sobald mehrere Freigaben, Benutzer, Gruppen und unterschiedliche Zuständigkeiten zusammenkommen. Genau an diesem Punkt setzt dieses Docker-Samba-Setup an.

Der Unterschied zu vielen einfachen Samba-Containern besteht hier nicht nur darin, dass ein einzelner Share freigegeben wird, sondern dass Gruppen, Benutzer und Freigaben direkt über die Startparameter aufgebaut werden. Dadurch lässt sich die Konfiguration vergleichsweise kompakt halten, auch wenn mehrere Verzeichnisse mit unterschiedlichen Zugriffsregeln eingebunden werden.

Damit das aber nicht nur beim Containerstart funktioniert, sondern auch später bei den eingebundenen Host-Verzeichnissen sauber bleibt, müssen Gruppenrechte, Benutzerzuordnung und Dateirechte stimmig vorbereitet sein. Genau darum geht es in dieser Anleitung.

Das Setup besteht aus:

- einem Samba-Container auf Basis von Raspberry Pi OS / Debian Bookworm
- mehreren gemounteten Host- oder NAS-Verzeichnissen
- Gruppen, Benutzern und Freigaben, die beim Start übergeben werden
- einer compose.yaml, über die die Freigaben zentral beschrieben werden

Der eigentliche Punkt dieses Setups ist nicht nur Docker selbst, sondern die Frage, wie mehrere Freigaben mit passenden Gruppen und Benutzern konsistent auf dieselben Host-Verzeichnisse zugreifen können.

1. compose.yaml vorbereiten

SAMBA-DOWNLOAD

Zuerst in den Samba-Ordner wechseln und die compose.yaml öffnen:

cd samba
nano compose.yaml

2. Host-Verzeichnisse in der compose.yaml anpassen

In der compose.yaml werden die Verzeichnisse definiert, die später im Container als Samba-Freigaben auftauchen. Genau diese Pfade müssen an eure lokale oder NAS-Struktur angepasst werden.

Beispiel:

volumes:
  - /mnt/nas/myname-data:/share/myname-data
  - /mnt/nas/myname-handy:/share/myname-handy
  - /mnt/nas/myname-paperless:/share/myname-paperless

Wichtig ist dabei:

- links steht immer der Pfad auf dem Host
- rechts steht der Zielpfad im Container
- Samba arbeitet später genau auf diesen gemounteten Verzeichnissen

3. Warum Gruppen, Benutzer und Freigaben in diesem Setup der eigentliche Punkt sind

Der eigentliche Vorteil dieses Setups ist nicht nur, dass Samba in Docker läuft, sondern dass Gruppen, Benutzer und Freigaben beim Start zentral beschrieben werden können.

Die komplette Logik hängt dabei an den command-Parametern der compose.yaml:

- -g legt Gruppen an
- -u legt Benutzer an
- -s erzeugt die Freigaben in der Samba-Konfiguration

Dabei ist es wichtig, die Reihenfolge zu beachten: erst Gruppen, dann Benutzer und zum Schluss der Freigabename (= Gruppenname).

3.1. Gruppen über -g definieren

Die Gruppen werden mit Gruppenname und GID übergeben. In deinem Beispiel sieht das so aus:

-g "w-data:4000"
-g "w-handy:4001"
-g "w-paperless:4002"

Dadurch werden beim ersten Start genau diese Gruppen im Container angelegt. Das ist wichtig, weil die Freigaben später gezielt auf diese Gruppen verweisen.

3.2. Benutzer über -u definieren

Die Benutzerdefinition enthält Benutzername, Passwort, UID und Gruppenzugehörigkeit. Für einen öffentlichen Text sollten Passwörter dabei natürlich nicht im Klartext auftauchen, sondern als Platzhalter:

-u "myname:[[PASSWORT_MYNAME]]:4000:w-data,w-handy,w-paperless"
-u "myname-handy:[[PASSWORT_HANDY]]:4001:w-handy"
-u "myname-paperless:[[PASSWORT_PAPERLESS]]:4002:w-paperless"

Die Struktur ist dabei:

benutzer:passwort:uid:gruppen

Beim Start legt der Container diese Benutzer intern an und setzt sie auch direkt für Samba. Für den Anwender ist dabei nur wichtig, dass die Angaben in der compose.yaml vollständig und korrekt sind. Die eigentliche Benutzeranlage läuft intern im Container und muss nicht manuell als Bash-Skript nachgebaut werden.

3.3. Freigaben über -s definieren

Die Freigaben selbst werden ebenfalls über Startparameter beschrieben:

-s "w-data:/share/myname-data:rw:we"
-s "w-handy:/share/myname-handy:rw:wd"
-s "w-paperless:/share/myname-paperless:rw:wd"

Die Struktur ist:

sharename:pfad:rw-oder-ro:we-oder-wd

Dabei bedeutet in diesem Setup:

- rw = die Freigabe ist beschreibbar
- ro = die Freigabe ist nur lesbar
- we = Recycle / Papierkorb wird aktiviert
- wd = kein Papierkorb, normale Freigabe ohne Recycle-VFS

Aus diesen Angaben baut der Container die eigentlichen Freigaben in der Samba-Konfiguration intern selbst auf. Für den Anwender bedeutet das nur:

- jede Freigabe ist an die passende Gruppe gekoppelt
- Schreib- oder Leserechte werden über rw oder ro gesteuert
- neue Dateien und Ordner landen mit den vorgesehenen Rechten in der jeweiligen Freigabe

Die internen Samba-Zeilen muss man dafür nicht selbst schreiben. Entscheidend ist nur, dass Gruppenname, Freigabename und Pfad in der compose.yaml sauber zusammenpassen.

4. Docker Compose starten

Wenn Pfade, Gruppen, Benutzer und Freigaben korrekt gesetzt sind, kann der Container gebaut und gestartet werden:

sudo docker compose up -d --build

Zur Kontrolle:

sudo docker compose ps
sudo docker logs samba

Der Container öffnet in diesem Setup den Port 445:

ports:
  - 445:445

Damit ist der Samba-Dienst im lokalen Netz direkt über den Host erreichbar.

5. Wichtiger Hinweis zu Rechten und Startverhalten

Der Container erstellt nicht nur die Konfiguration, sondern prüft danach auch direkt die eingebundenen Verzeichnisse auf dem Host. Genau das ist der Teil, der in der Praxis besonders wichtig ist.

Für jede Freigabe wird geprüft:

- stimmt die Gruppe des Zielverzeichnisses mit dem Share-Namen überein
- haben Dateien und Ordner die erwarteten Rechte

Wenn das nicht passt, zieht der Container die Gruppen- und Rechtezuordnung beim Start automatisch nach. Das ist praktisch, weil Dateien auf dem Host nicht erst später manuell korrigiert werden müssen. Gleichzeitig ist genau das der Teil, der bei großen Dateimengen viel Zeit kosten kann.

Wenn bei einer Freigabe außerdem we gesetzt ist, wird zusätzlich der Papierkorb aktiviert. Gerade bei Netzfreigaben ist das sinnvoll, wenn versehentlich gelöschte Dateien nicht sofort endgültig verschwinden sollen. Wenn stattdessen wd gesetzt ist, läuft die Freigabe ohne diesen zusätzlichen Papierkorb-Mechanismus.

Wichtig zu wissen:

- dieses Setup ist bewusst pragmatisch für interne Freigaben gedacht
- Benutzer und Passwörter werden über Startparameter übergeben
- Rechteanpassungen laufen rekursiv über die eingebundenen Verzeichnisse

Das ist lokal oder intern sehr bequem, aber natürlich kein besonders strenges Sicherheitsmodell.

6. Ergebnis

Wenn alles richtig vorbereitet ist, hat dieses Setup genau den Vorteil, für den es gedacht ist:

- mehrere Samba-Freigaben lassen sich kompakt über Docker starten
- Benutzer, Gruppen und Freigaben werden zentral über die Compose-Datei beschrieben
- die Rechte der eingebundenen Verzeichnisse werden direkt mit geprüft und notfalls angepasst
- ein Raspberry-Pi- oder internes NAS-Setup lässt sich damit vergleichsweise unkompliziert verwalten

Das ist kein universelles Hochsicherheitsmodell, sondern ein bewusst pragmatisches Samba-Setup für interne Freigaben. Gerade für ein eigenes Netz oder einen Raspberry Pi kann genau dieser Kompromiss aber sinnvoll sein.

7. Zusätzliche Informationen

Um die Rechteverwaltung nicht durcheinander zu bringen, sollte immer über die Samba-Freigabe auf die Dateien zugegriffen werden.

smb://myhost