Zum Hauptinhalt springen

Freigaben

Eine Freigabe macht ein Verzeichnis auf einem Dataset oder einem Netzlaufwerk im Netzwerk verfügbar: per SMB (Windows, macOS, Linux), per NFS (Linux, Mediaplayer) oder beides. Wer lesen oder schreiben darf, legst du pro Benutzer und Gruppe fest.

Freigabe anlegen​

Freigaben → Neue Freigabe:

  1. Name: so erscheint die Freigabe im Netzwerk (\\bunkerbox\media). Buchstaben, Ziffern, - und _, höchstens 64 Zeichen. Groß- und Kleinschreibung zählt nicht doppelt (media und Media sind dieselbe Freigabe). Reserviert sind global, homes, printers, print$, ipc$, netlogon, sysvol sowie apply, services, paths, connections und preview.
  2. Ort: ein eingehängtes Dataset (z. B. tank/media unter /tank/media) oder ein Netzlaufwerk, optional mit Unterordner. Fehlende Unterordner werden auf Wunsch angelegt.
  3. SMB und/oder NFS aktivieren, Optionen wählen (siehe unten).
  4. Zugriff: Benutzer und Gruppen mit der Stufe Lesen, Lesen & Schreiben oder Kein Zugriff eintragen.

Erlaubte Pfade:

  • Nur Pfade auf einem Dataset oder unter /mnt/remotes/<name> – nie die Systemplatte.
  • Nie Systemverzeichnisse (/etc, /usr, /var, /root, /boot, /proc, /sys, /dev, /run, /tmp, /bin, /sbin, /lib*, /appdata/bunkerbox) und nie /, /mnt, /mnt/remotes oder /appdata selbst. Unterhalb von /appdata (z. B. /appdata/jellyfin) ist erlaubt.
  • Erlaubte Zeichen: Buchstaben (auch Umlaute), Ziffern, Leerzeichen und . _ - + @ , ( ) =. Keine symbolischen Links im Pfad.
  • Ein Pfad kann nur einmal freigegeben werden; verschachtelte Freigaben (/tank/media und /tank/media/kinder) sind möglich.

Zugriff​

StufeSMBDateirechte (ACL)
Lesenin valid usersr-X
Lesen & Schreibenin valid users und write listrwX
Kein Zugriffin invalid users---
  • Nur eingetragene Benutzer und Gruppen erhalten Zugriff. Auch Administratoren brauchen eine Regel.
  • Kein Zugriff sperrt einen Benutzer auch dann, wenn eine seiner Gruppen Zugriff hat.
  • Hat niemand Zugriff (und ist die Freigabe nicht öffentlich), wird sie mit available = no abgeschaltet statt für alle geöffnet.
  • Benutzer brauchen ein Samba-Konto (wird unter Benutzer & Gruppen mit dem Passwort gesetzt).

Dateirechte​

Bei Freigaben auf Datasets setzt Bunkerbox passende POSIX-ACLs (setfacl) auf das Freigabeverzeichnis, jeweils als Zugriffs- und als Standard-ACL, damit neue Dateien die Rechte erben. Nicht eingetragene Benutzer („other“) erhalten ---, bei öffentlichen Freigaben r-X.

Vorhandene Inhalte werden nicht automatisch geändert. Berechtigungen in der Liste schreibt die Regeln im Hintergrund auf alle vorhandenen Dateien und Verzeichnisse. Dabei gilt:

  • find -P folgt keinen symbolischen Links und bearbeitet nur echte Dateien und Verzeichnisse, damit ein Link in einer Freigabe nicht auf Dateien außerhalb zeigen kann.
  • Verschachtelte Datasets und andere Dateisysteme werden übersprungen (-xdev).
  • Während der Lauf aktiv ist, wartet ein Update; die Freigabe kann in dieser Zeit nicht gelöscht werden.

Entzogene Regeln werden vom Freigabeverzeichnis entfernt. Ändert sich der Pfad einer Freigabe, bleiben die ACLs auf dem alten Pfad bestehen.

Netzlaufwerke (cifs, nfs) kennen keine POSIX-ACLs. Dort regelt nur Samba bzw. NFS den Zugriff; Besitzer der Dateien ist, was beim Netzlaufwerk unter uid/gid eingestellt ist.

SMB-Optionen​

  • Papierkorb: Gelöschte Dateien landen in .recycle/<benutzer> der Freigabe (Samba-Modul recycle, Verzeichnisstruktur und Versionen bleiben erhalten, *.tmp und ~$* werden direkt gelöscht). Leeren musst du den Papierkorb selbst.
  • Gastzugriff (öffentlich): Jeder im Netzwerk darf ohne Anmeldung lesen (guest ok = yes, global map to guest = Bad User). Schreiben dürfen weiterhin nur Benutzer und Gruppen mit Lesen & Schreiben.
  • Versteckt: browseable = no – die Freigabe erscheint nicht in der Netzwerkumgebung, ist über den Namen (\\bunkerbox\backup) aber erreichbar. NFS-Exporte lassen sich nicht verstecken (showmount -e zeigt sie immer).

Nicht öffentliche Freigaben nutzen access based share enum = yes: Jeder sieht nur die Freigaben, auf die er zugreifen darf.

NFS-Optionen​

Pro Client (Hostname, IP-Adresse, Netz wie 192.168.1.0/24, IPv6 oder *):

  • Zugriff: Lesen & Schreiben (rw) oder nur lesen (ro)
  • Benutzerzuordnung: root wird zu nobody (root_squash, Standard), alle werden zu nobody (all_squash) oder root bleibt root (no_root_squash)

Alle Exporte verwenden sync, no_subtree_check und sec=sys. NFS vertraut den Benutzer-IDs des Clients; die Dateirechte entscheiden.

Per NFS weitergeben lassen sich nur NFS-Netzlaufwerke ohne automatisches Einhängen; sie erhalten eine feste fsid. SMB-Netzlaufwerke (cifs) kann der Linux-NFS-Server grundsätzlich nicht exportieren, ein Automount-Einhängepunkt ebenfalls nicht. Für solche Orte ist NFS im Editor gesperrt, und der Server lehnt es ab – ein einziger nicht exportierbarer Eintrag würde sonst exportfs -ra für alle Freigaben scheitern lassen.

Neue Unterverzeichnisse einer Freigabe werden Schritt für Schritt angelegt, ohne symbolischen Links zu folgen; enthält der Pfad einen Link, wird die Freigabe abgelehnt.

Erzeugte Dateien​

DateiInhaltAktivierung
/etc/samba/bunkerbox.confalle SMB-Freigabeninclude = /etc/samba/bunkerbox.conf am Ende von /etc/samba/smb.conf (wird beim Start einmalig ergänzt), Prüfung mit testparm, dann smbcontrol smbd reload-config
/etc/exports.d/bunkerbox.exportsalle NFS-Exporteexportfs -ra
  • Bunkerbox überschreibt beide Dateien bei jeder Änderung; eigene Einträge gehören in smb.conf bzw. /etc/exports. Gleichnamige Abschnitte in smb.conf würden mit denen von Bunkerbox kollidieren.
  • Lehnt testparm die neue Konfiguration ab, wird nichts geschrieben und die Änderung zurückgenommen. Scheitert exportfs, wird die vorherige Exportdatei wiederhergestellt.
  • Der Reiter Konfiguration zeigt beide Dateien so, wie sie geschrieben werden. Erneut anwenden schreibt sie neu und lädt die Dienste neu (z. B. nach einem manuellen Eingriff).
  • Alle Namen, Pfade, Beschreibungen, Benutzer und Hosts werden vor dem Schreiben streng geprüft; Zeilenumbrüche, %-Platzhalter, \, Anführungszeichen und Sonderzeichen werden abgelehnt.

Status​

Die Liste zeigt pro Freigabe, ob SMB und NFS aktiv sind, und meldet Probleme: fehlendes Verzeichnis, nicht eingehängtes Netzlaufwerk, gestoppter Dienst, unbekannte Benutzer oder Gruppen, niemand mit Zugriff, fehlgeschlagene Berechtigungen.

Verbindungen​

Der Reiter Verbindungen (auch auf dem Dashboard) zeigt alle 5 Sekunden:

  • SMB-Sitzungen: Benutzer, Rechner, Protokollversion, Verschlüsselung, verbundene Freigaben (smbstatus --json)
  • Geöffnete Dateien: Freigabe, Datei, Benutzer, Lese-/Schreibzugriff
  • NFS-Clients: NFSv4-Clients aus /proc/fs/nfsd/clients (NFSv3-Clients hält der Kernel nicht fest)

Löschen​

Löschen entfernt die Freigabe aus SMB und NFS. Die Daten und die gesetzten ACLs bleiben. Zur Bestätigung muss der Name der Freigabe eingegeben werden.

Mock-Modus​

Im Mock-Modus gibt es Beispielfreigaben auf dem Pool tank (media, documents, photos, das versteckte backup, das öffentliche transfer) und die erneut freigegebene Diskstation (diskstation-archiv), dazu simulierte SMB-Sitzungen, geöffnete Dateien und NFS-Clients. Am System wird nichts geändert.