Hallo zusammen,
es hat etwas gedauert, bis ich wieder Zeit gefunden habe, mich mit dem Problem zu beschäftigen. Mein letzter Beitrag ...
Folgendes hat bei mir nun funktioniert: Ich erstelle im Freigegeben ordner noch einen Ordner Dokument und mounte diesen mit dem Docker Container, was fürs erste nicht genützt hat. Wenn ich diesen Ordner dann aber in der Filstation auswähle und rechte Maustaste Eigenschaften>Allgemein wähle und dort unter Besitzer die Erstellte Gruppe auswähle und den Haken setze auf ordern, unterordner und dateien anwenden setze. Sehe ich alle ordner in der Drive und auch neu erstellte datein über das Dashboard werden sofort sichtbar.
…hat das Problem leider doch nicht vollständig gelöst. Daher habe ich mich noch tiefer damit auseinandergesetzt und möchte – unabhängig davon, ob es jemandem weiterhilft – meine Erkenntnisse ausführlich teilen, um das Thema für mich abschließen zu können.
Was genau passiert:
Das oben beschriebene Vorgehen funktioniert nur für Dateien, die vom Container direkt in den gemounteten Ordner geschrieben werden. Wenn jedoch neue Unterordner erstellt werden – entweder im Container oder auf derselben Ebene – müssen die Besitzrechte jedes Mal manuell neu gesetzt werden. Das ist auf Dauer keine praktikable Lösung für meine Anwendung.
Der Hinweis von „geimist“ brachte mich weiter:
Ich hätte hier auch auf ein Berechtigungsproblem getippt. Kannst du dem Container User- und Gruppenrechte mitgeben, damit die über den Container erstellten Dateien die passenden Rechte für den Teamordner haben?
Ich habe für meinen Fall herausgefunden, dass alle Dateien und Ordner, die vom Docker-Container erstellt werden, standardmäßig dem Benutzer und der Gruppe root gehören (root:root). Da root jedoch kein regulärer Benutzer auf meiner Synology ist, führt das (denke ich zumindest) zu Problemen bei der Sichtbarkeit und Verwaltung, insbesondere in Verbindung mit Synology Drive.
Ich habe daher versucht (siehe Antwort geimist) , bereits im Container die Besitzrechte so zu setzen, dass sie dem Benutzerkonto entsprechen, unter dem der Container auf der NAS läuft (im Folgenden als ad bezeichnet). Das habe ich über das Dockerfile konfiguriert. Ergebnis:
- Die vom Container erstellten Dateien hatten korrekt ad als Besitzer.
- Allerdings fehlten dem Container dann wiederum wichtige Rechte, die für meine Anwendung erforderlich sind (z. B. Datenbankzugriff, Schreibrechte in bestimmte Verzeichnisse).
Wenn eine Anwendung keine root-Rechte im Container benötigt, wäre dies eventuell eine geeignete Lösung – insbesondere, um die erstellten Dateien auch in Synology Drive sofort sichtbar zu machen.
Da das für mich nicht praktikabel war, habe ich eine andere Lösung gesucht, die sich einfach umsetzen lässt und im Alltag funktioniert. Hierbei hat sich folgendes ergeben:
Ich habe ein kleines Shell-Skript geschrieben, das regelmäßig per Synology Aufgabenplaner ausgeführt wird. Es prüft rekursiv bestimmte Verzeichnisse und passt den Besitzer an, falls dieser nicht dem gewünschten Benutzer entspricht. Ein Log lasse ich direkt über den Aufgabenplaner protokollieren.
Wer das Skript ebenfalls nutzen möchte, muss lediglich zwei Dinge anpassen:
-
TARGET_USER → den Benutzer, der als Besitzer gesetzt werden soll
-
DIRS → eine Liste der zu überwachenden/verarbeitenden Verzeichnisse
Hinweis: Das Skript ändert nur den Besitzer, nicht die Gruppe. Mein geteilter Ordner ist
Firma.
Code:
#!/bin/bash
# Zielbenutzer
TARGET_USER="ad"
# Verzeichnisse
DIRS=(
"/volume1/Firma/01_Test"
"/volume1/Firma/02_Test"
)
# UID prüfen
TARGET_UID=$(id -u "$TARGET_USER")
if [ -z "$TARGET_UID" ]; then
echo "Benutzer $TARGET_USER existiert nicht!"
exit 1
fi
# Durchlaufe alle Zielverzeichnisse
for DIR in "${DIRS[@]}"; do
if [ -d "$DIR" ]; then
echo "Bearbeite $DIR ..."
find "$DIR" -not -user "$TARGET_USER" -exec chown "$TARGET_USER" {} +
else
echo "Verzeichnis $DIR existiert nicht – übersprungen."
fi
done
Diese Skript in
testpfad unter
skript.sh abgelget und über SSH ausführbar gemacht:
Code:
sudo chmod +x testpfad/skript.sh
Anschließen eine Aufgabe im Aufgabenplaner (alle 30min zwischen 05:00 und 22:00) erstellt und unter Aufgabeneinstellungen folgendes Benuzerdefiniertes Skript eingefügt
Code:
#!/bin/bash
sudo testpfad/skript.sh
Da
sudo standardmäßig eine Passworteingabe erfordert und der Synology Aufgabenplaner kein interaktives Terminal verwendet (was ohnehin nicht praktikabel wäre), habe ich
sudo für dieses eine Skript passwortlos konfiguriert. Dazu habe ich über SSH in der
sudoers-Datei einen entsprechenden Eintrag vorgenommen, sodass der Aufgabenplaner das Skript ohne Rückfrage ausführen kann. Das ist notwendig, damit
chown mit den nötigen Rechten ausgeführt werden kann, um Besitzverhältnisse auch wirklich ändern zu dürfen.
Öffne sudoers
gehe ans ende und wechsle durch eingabe
i in den einfüge modus und ergänze folgenden eintrag (Benutzer, Pfad, Skript anpassen)
Code:
ad ALL=(ALL) NOPASSWD: testpfad/skript.sh
speichern und beenden
Wenn das Skript nun ausgeführt wird – entweder manuell oder automatisch über den Aufgabenplaner – werden im freigegebenen Ordner
Firma, die Unterordnern
01_Test und
02_Test, inklusive deren weiterer Unterverzeichnisse, überprüft und ggf. der Besitzer angepasst.
Ergebnis:
Die betroffenen Ordner und Dateien sind sofort in Synology Drive sichtbar, da die Besitzverhältnisse korrekt gesetzt sind.
Andere Unterordner wie z. B.
03_Test oder weitere, die nicht vom Skript berücksichtigt werden, behalten die ursprünglichen Besitzrechte – also die des Benutzers, der sie erstellt hat.
Ist etwas länger geworden

, aber ich hoffe, dass diese Lösung auch anderen weiterhilft, die vor ähnlichen Herausforderungen stehen.
Gerne freue ich mich über Rückmeldungen, insbesondere auch zu möglichen Sicherheitsbedenken – insbesondere im Hinblick darauf, dass ich für dieses Skript die Passworteingabe bei sudo deaktiviert habe, um eine automatische Ausführung über den Aufgabenplaner zu ermöglichen.
Beste Grüße