NEWS
Root-User im Container/Docker-> ja, nein, warum?!
-
Mahlzeit,
da es hier desöfteren zur Diskussion kommt
wegen Root User im Container/Docker und deren
"rumgehampel",
könnte @andre vielleicht
Licht ins Dunkel bringen, warum das so ist oder wie man das
ändern kann/sollte.Und eventuell in einfachen, verständlichen Worten , dass auch Neulinge nicht abgehängt werden.
-
@haselchen Nein, könnte @andre nicht.
Ich beteilige mich aufgrund des anhaltenden Abwärtstrends im Umgangston und des schrumpfenden Respekts hier im Forum nicht mehr an Diskussionen (so wie auch seit längerem schon nicht mehr über Facebook).
Das hat mich in der Vergangenheit viel Zeit gekostet die ich nicht mehr bereit bin aufzubringen.Wer mit mir Diskutieren will und Fragen rund um Docker hat findet mich im ioBroker Discord Channel. Dort versuche ich regelmäßig jeden Mittwochabend für Diskussionen in der Lounge (Voice chat) online zu sein. Schaue aber auch an anderen Tagen regelmäßig dort vorbei.
MfG,
André -
Das ist natürlich aus meiner Sicht (Fragesteller) eine enttäuschende,
aus Deiner Sicht , eine verständliche Antwort.
Da Du ein nicht unwesentliches Projekt hier betreibst , ist Deine Wahrnehmung bezüglich des aktuellen "Forum-Tons" natürlich ein Alarmzeichen oder sollte es zumindest für die Mods ( @Homoran , @Negalein ...) sein.
Ich habe hier schon vermehrt von den Developern gelesen, dass sie unzufrieden über den sprachlichen Umgang hier sind.
Vielleicht ist ein gemeinsam verfasstes Announcement von Euch an die User ein (letztmaliger) Aufrüttler, bevor es etwaige Konsequenzen geben könnte.Was meine Frage angeht, da komme ich auf Dein Angebot gerne zurück.
Vielen Dank erstmal, dass Du Dir die Zeit zu einer Erklärung genommen hast. -
ich versuchs mal, auch wenn ich da sicherlich nicht der super experte bin.
1.) der docker-prozess auf dem Host muss mit root laufen, da er auf ressourcen zugreift, die das bedingen.
2) auch der eigentliche container-prozess wird ebenfalls vom docker-prozess mit root-rechten gestartet, da die betriebssystem-anteile die sich im container befinden mit root laufen müssen.
3) wenn wir zur eigentlichen Anwendung im container kommen, dann muss diese meist tatsächlich nicht als root laufen, meist hat man allerdings die Möglichkeit einen User-ID und eine Group-ID dem container mitzugeben unter der Berechtigung dann die eigentliche Anwendung gestartet wird. Der user und die Gruppe wird vor Start dann im Container angelegt, genau so wie du auf einem richtigen System ebenfalls eine separate Gruppe/User anlegen würdest)
4) Nach außen hin, macht sich das dadurch bemerkbar, das die volumes die man auf lokale Verzeichnisse gemappt hat, genau mit diesem User/Gruppe beschrieben werden.
5) man sollte darauf achten, das die Gruppe/User auf dem Hostsystem ebenfalls bekannt ist bzw angelegt wurde, da man ansonsten da auch nur wieder als root drauf zugreifen kann
6) Ansonsten definieren die meisten Container-Hersteller im Standard meist Root, geben aber meist die Möglichkeit abweichende IDs angeben zu können.
(bei buanet: setgid/setuid, buanet definiert beides mit 1000 was meist der erste user ist, der auf einem system eingerichtet wird.)
auch bspw nginx definiert bereits einen non root-user, dann scheint das entweder ein trend zu sein, der in letzter zeit umgesetzt wird oder ich habe zu sehr in basis images wie debian und alpine geschaut, bei dem es erst mal kein sinn mach einen user vorzugeben, da diese meist als basis-layer für eine eigene image-definition verwendet werden, in der man dann selbst einen user definieren kann. aber da geht es jetzt schon sehr in die detailtechnik von container.Nachtrag:
auch im buanet container musst du nicht als root arbeiten.docker bietet dir die Möglichkeit einen user beim öffnen der shell mit anzugeben:
sudo docker exec --user iobroker -it iobrokerprod /bin/bash
oder in portainer
![0_1646764920112_84df265f-cad9-41c7-aebe-a342088a50c1-image.png](Lade 100% hoch)
-
Die Frage ist ja eher: ist es relevant das man im Docker das Update des js-controllers als root macht? Bisher gab es bei Updates keine Probleme damit. Also alles gut.
-
Da gilt wieder das grundlegende Prinzip, dass man nicht mit mehr Rechten als erforderlich durch das System stolpert.
Das ist halt gängiger Standard im Umgang mit Linux und wird auch nur weil es als Container angedockt wurde nicht aufgehoben. -
@cash
ich würde sagen, da gilt das gleiche wie auf einem normalen system.
also am besten immer mit user
Die Applikation weiß ja eigentlich nicht das sie sich in einem container befindet
und die rechte-mechanismen (sudo und so) funktionieren da genau gleich wie überall. -
@oliverio sagte in Root-User im Container/Docker-> ja, nein, warum?!:
Die Applikation weiß ja eigentlich nicht das sie sich in einem container befindet
und die rechte-mechanismen (sudo und so) funktionieren da genau gleich wie überall.Ein wichtiger Punkt fehlt IMO noch: root/sudo und non-root auch im Container nicht mischen. Wenn ioBroker als normaler User läuft und man dann manuelle Updates per root oder
sudo npm install 😱
drüber bügelt, gibt's Rechteprobleme. -
Da stimme ich dir in jeder Hinsicht zu.
Habe zu Testzwecken mal die Nutzer SetGid und SetUid geändert und auch sonst mal mit den Rechten rumgespielt.
Danach war der Container nur noch Grütze.
Update Errors waren an der Tagesordnung.
Mein Rat, den Container so lassen wie er ist .
@OliverIO hat ja schön beschrieben, wieso das so ist. -
@alcalzone Die Rechte werden nach einen Update per root beim start vom Container automatisch gerade gezogen und es gib keine Probleme.