Unter welchem User läuft der Docker-Container ?


cayman
Go to solution Solved by mgutt,

Recommended Posts

Hallo,

vllt. ist die Fragestellung etwas unfachmännisch -- an welcher Stelle wird entschieden, welcher User den Container startet bzw. welcher User die (Nutz-)Daten der Anwendung anlegt bzw. fortschreibt ?

In der UR-Anleitung und in den Foren-Beiträgen habe ich nichts dazu gefunden oder überlesen 🙄

Edited by cayman
Link to comment
  • cayman changed the title to Unter welchem User läuft der Docker-Container ?
14 minutes ago, cayman said:

welcher User den Container startet

 

Unter Unraid ist das standardmäßig root.

 

16 minutes ago, cayman said:

welcher User die (Nutz-)Daten der Anwendung anlegt bzw. fortschreibt

 

Diese Entscheidung ist vom Container abhängig, vom Autor.

 

21 minutes ago, cayman said:

In der UR-Anleitung und in den Foren-Beiträgen habe ich nichts dazu gefunden oder überlesen

 

Weil das eher Docker betrifft. Unraid ist nur der Host.

 

Warum fragst Du?

 

  • Thanks 1
Link to comment

Das entscheidet der Ersteller/Entwickler des Containers.

Du kannst es aber auch selbst beeinflussen indem du entsprechende Container Variablen erstellt. Ich glaube USR_ID=99 und GRP_ID=100 wenn du den Container mit unraid Standard User laufen lassen willst und jeweils "0" wenn der Container als root laufen soll.

Ganz sicher bin ich nicht, bin unterwegs und müsste daheim nachschauen.

  • Thanks 1
Link to comment

Erstmal vielen Dank für die Informationen.

 

3 hours ago, hawihoney said:

Warum fragst Du?

Ich hatte mich gewundert, dass einige Container die Daten als 'nobody' anlegen und andere als 'root'.

Daraus schliesse ich auch mit welcher Berechtigung der Conatainer unterwegs ist und da möchte ich 'root' soweit wie möglich

vermeiden.

 

3 hours ago, hawihoney said:

Diese Entscheidung ist vom Container abhängig, vom Autor.

Leider habe ich in der Vergangenheit tlws. bei SW-Entwicklungen die Erfahrung gemacht, dass die 'root' Berechtigung aus Vereinfachungsgründen genommen wurde - man musste sich dann keine weiteren Gedanken zu Berechtigungen machen - 'root' darf ja alles 😒

 

3 hours ago, vakilando said:

Ganz sicher bin ich nicht, bin unterwegs und müsste daheim nachschauen.

Wenn du eine Quelle für näherer Informationen hast, bin ich dafür dankbar. Würde mich gerne mehr in das Thema einlesen.

Link to comment
1 hour ago, hawihoney said:

 

Oder PUID, PGID wie bei LSIO. Auch das ist variabel und nicht immer möglich. Die großen Ersteller für Unraid kennen die Besonderheit von Unraid (99:100) und berücksichtigen das zumindest als optionale Parameter-Variable.

 

ja, das ist natürlich richtig! Der Container Ersteller muss das "Feature" in seinen Container eingebaut haben.

Am besten du schaust auf der Seite des Erstellers (hub.docker.com, github, ...), oder im Unraid Support Thread ob eine entsprechende Option genannt wird / dokumentiert ist.

  • Thanks 1
Link to comment
6 minutes ago, vakilando said:

ja, das ist natürlich richtig! Der Container Ersteller muss das "Feature" in seinen Container eingebaut haben.

Am besten du schaust auf der Seite des Erstellers (hub.docker.com, github, ...), oder im Unraid Support Thread ob eine entsprechende Option genannt wird / dokumentiert ist.

Danke - konkret geht es um 'Home Assistant' und 'CCU-Historian'.
Ich gehe dann mal auf die Suche.

Link to comment
42 minutes ago, cayman said:

Leider habe ich in der Vergangenheit tlws. bei SW-Entwicklungen die Erfahrung gemacht, dass die 'root' Berechtigung aus Vereinfachungsgründen genommen wurde

das ist richtig und ich gehöre auch dazu ;)

 

aber um das etwas zu relativieren, root, ja, innerhalb seiner Umgebung ... bei HA beispielsweise mountest du ja normal nichts externes mit rein, sprich, da ist aus dem Docker raus kein Zugriff auf Host Daten ... CCU kenne ich jetzt nicht was das ist.

Link to comment
2 minutes ago, alturismo said:

ich gehöre auch dazu

🙈

 

3 minutes ago, alturismo said:

raus kein Zugriff auf Host Daten

ok - beruhigt mich erstmal.

 

CCU-Historian ist ein Datensammler für Homematic-Systeme. Für die Datenbank, Datenbank-Backups und die Konfigurations-Daten habe ich ein eigenes Share auf UR eingerichtet - also außerhalb von Appdata.

Ist es der Applikation jetzt möglich über relative Pfad-Angaben auf andere Shares zuzugreifen ?

Link to comment
  • Solution
4 hours ago, vakilando said:

Ich glaube USR_ID=99 und GRP_ID=100

Das sind Container Variablen. Jeder Container hat andere Variablen und viele haben diese gar nicht.

 

1 hour ago, cayman said:

Ich hatte mich gewundert, dass einige Container die Daten als 'nobody' anlegen und andere als 'root'.

Daraus schliesse ich auch mit welcher Berechtigung der Conatainer unterwegs ist und da möchte ich 'root' soweit wie möglich

vermeiden.

Darauf kannst du in der Regel keinen Einfluss nehmen. Wenn ein Container als root läuft, dann hat das in der Regel auch seinen Grund. Allerdings ist dieser root nicht der root von Unraid. Er befindet sich in einer Art chroot-Umgebung, wo alle Ressourcen vom Host-System durch cgroups abgekapselt werden. Das ist eine Kernelfunktion, die die Basis für die Sicherheit in Linux darstellt. Gäbe es da ein Loch, wäre jedes Linux-System unsicher. Also ähnlich fatal als wenn das User-System nicht funktionieren würde und jeder User durch eine Lücke zum root werden könnte.

 

5 minutes ago, cayman said:

Ist es der Applikation jetzt möglich über relative Pfad-Angaben auf andere Shares zuzugreifen ?

Wegen dem zuvor genannten cgroups Konzept ist das nicht möglich. Jeder Pfad muss explizit übergeben werden.

 

Dein eigentliches Problem ist aber eh, dass der Docker-Dienst selbst als Root läuft. Hat also Docker eine Sicherheitslücke und jemand schafft es auf die Art aus einem Container auszubrechen, so wäre er root auf dem Host-System. Das gilt bisher also nicht möglich, weil keine solche Lücke bekannt ist. Aber in der Theorie wäre das der beste Ansatz um einen Docker Host zu übernehmen.

 

Übrigens lässt Proxmox aus dem Grund die lxc Container als User und nicht als Root laufen. Da ist es noch mal etwas sicherer umgesetzt. Dadurch laufen aber manche Container nicht problemlos. Hat also nicht nur Vorteile. Aber das hat Sicherheit ja nie.

 

Fazit: Du kannst hier nichts optimieren. Du musst darauf vertrauen, dass Docker sicher ist. Natürlich ist nichts sicher, daher muss man abwägen wie viel Komfort man für die Sicherheit opfern möchte. Es gibt ja zB User, die Nextcloud nur per VPN erreichbar machen. Dadurch ist kein Container über das Internet erreichbar und entsprechend wenig Angriffsmöglichkeiten gibt es. Meine Meinung: Backups und mit dem Risiko leben. Kein System ist heute sicher. Außerdem ist man als Privatperson sowieso kein nennenswertes Ziel.

  • Thanks 1
Link to comment
7 hours ago, alturismo said:

bei HA beispielsweise mountest du ja normal nichts externes mit rein

 

Ich pflege außerhalb von Homeassistant eine SQLite Datenbank. Die Inhalte der DB verarbeite ich innerhalb HA. Den Pfad der DB habe ich dem HA Container übergeben damit das geht. Das Path-Mapping ist einfach Standard und genau für solche Fälle geschaffen.

 

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.