"Operation not permitted" wenn nicht Root-Nutzer

  • Hallo zusammen,


    ich hoffe ihr könnt mir helfen folgendes Problem zu lösen oder mir zumindest einen Tipp geben:

    Ich bekomme einen Fehler "Operation not permitted", sobald ich in einem Docker-Container als nicht Root-Nutzer (in meinem Fall mit dem Nutzer test) starte und innerhalb eines Ordners mit Owner-Rechten etwas anlegen möchte.

    Führe ich den Container mit root aus und lege etwas an, dann ist das kein Problem bzw. ich bekomme kein "Operation not permitted" Fehler.


    Code
    docker exec -it -u test test bash


    Habt ihr eine Idee voran das liegt?

  • Ich versteh noch nicht so ganz, was du mit dem genannten Dockerfile überhaupt testen willst. Bei mir hatte ich mal genau das umgekehrte Problem: ich wollte in einem Container ein Programm (incron) ausführen, welches per default nicht als root ausgeführt werden kann und bin bei anderen Dockerfiles auf folgende Zeilen gestossen:

    RUN adduser --disabled-password --gecos '' r && adduser r sudo && echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

    RUN echo r >> /etc/incron.allow

    USER r

    Das legt einen User r ohne Passwort an und fügt ihn zu den sudoers hinzu (bei dir vermutlich nicht relevant). Damit dann Befehle mit diesem User ausgeführt werden, muss mit dem Befehl USER noch der entsprechende User ausgewählt werden. Alle Commands im Dockerfile die danach stehen werden als r ausgeführt.

    Vielleicht hilf dir das ein wenig weiter...

  • Danke für den Hinweis. Genau. Mein Problem ist genau umgekehrt zu deinem Problem.

    Obiges Dockerfile sollte nur ein Abbild meines eigentlichen Problems sein. Im ursprünglichen Dockerfile wird ein Bitbucket-Server konfiguriert und gestartet. Der Server soll nicht mit dem Root-Nutzer betrieben werden, also erstelle ich einen neuen Nutzer und der startet dann den Bitbucket. Der Server bleibt jedoch beim Start hängen, weil in diverse Server-Verzeichnisse (logs, tmp, etc.) nicht geschrieben werden darf ("Operation not permitted"), obwohl ich diesen Verzeichnissen die entsprechenden Schreib- und Owner-Rechte gegeben habe.

    Bei mir funktioniert das schon im Kleinen (siehe obiges Dockerfile) nicht, weil ich auch hier als nicht Root-Nutzer (user:test) nach dem Start des Containers nicht ins Verzeichnis /test schreiben darf.

  • Hmmm wenn der Prozess auf die von dir genannten Verzeichnisse zugreifen soll, dann wäre es doch sinnvoller diesen mit Root Rechten laufen zu lassen oder? Worin genau besteht da bei dem Container die Gefahr, dass das nicht zulässig sein soll, wird dort beispielsweise "fremder" Code ohne Überprüfung ausgeführt?

  • Es ist schon das empfohlene Vorgehen den Bitbucket-Server (und einen Container) mit einem dedizierten Nutzer laufen zu lassen [Running Bitbucket Server with a dedicated user] und das wäre eigentlich auch mein Ziel.

    Zwischenzeitlich habe ich mir in einer VM mal Ubuntu und Docker installiert und obiges Szenario getestet. Ich bekomme damit kein "Operation not permitted" Fehler.

    Jetzt stellt sich mir die Frage, ob das nur auf meinem NAS und bei meiner Container-Station Installation (aktuelle QTS Version, aktuelle Container-Station Version) auftritt oder ob das Verhalten auch auf anderen NAS-Systemen reproduzierbar ist.