Ich verwende Kubernetes und möchte einen Container als Nicht-Root-Benutzer ausführen.
Wenn ich mein eigenes Docker-File schreibe, kann ich useradd
es chmod 777
mit Docker ausführen --user <username>
.
In manchen Fällen ist die Liste der zu bearbeitenden Dateien jedoch chmod
möglicherweise lang und unbekannt, sodass es sich um einen langwierigen Prozess handelt. Zudem kann sich die Liste mit der Zeit ändern und Fehler verursachen, die erst zur Laufzeit erkannt werden.
Gibt es eine bewährte Methode? Wie würden Sie mit Ordnern wie /var/log
und umgehen /var/run
? Eine Möglichkeit besteht darin, touch/mkdir zu verwenden setfacl
.
Am einfachsten ist es, einfach zu chmod 777 -R /var/log
.
Aber würde das dem Container 777
auch Zugriff auf den Host geben? Wie wird es zugeordnet, wenn der Container einen Satz von Berechtigungen hat, der Host aber einen anderen?
Antwort1
Die Verwendung chmod 777
ist grundsätzlich nie die richtige Lösung. Finden Sie heraus, wie Sie Ihre Berechtigungen richtig festlegen. Berechtigungen sollten fast immer so gering wie möglich sein, um Ihr Ziel zu erreichen.
Wie Sie das tun, hängt stark vom Kontext des jeweiligen Bildes und der von Ihnen ausgeführten Software ab.
Aber würde das dem Container 777 auch Zugriff auf den Host geben?
Hängt davon ab, ob der Pfad, für den Sie die Berechtigungen ändern, ein Bind-Mount ist oder sein wird.
Antwort2
Ich fand dies für meine eigene Frage relevant:
Das Overlay-Dateisystem hängt ein unteres Verzeichnis ein und hängt dann ein oberes Verzeichnis an den zusammengeführten Einhängepunkt an. Wenn ein Prozess eine neue Datei in das zusammengeführte Verzeichnis schreibt, wird die neue Datei in das obere Verzeichnis geschrieben. Wenn ein Prozess eine vorhandene Datei im unteren Verzeichnis ändert, kopiert der Kernel die Datei vom unteren Verzeichnis in das obere Verzeichnis und ermöglicht dem Prozess, die Datei im oberen Verzeichnis zu ändern.
Daher chown
sollte ein Overlay-Verzeichnis (oberes Verzeichnis) keine Auswirkungen auf das Host-Verzeichnis (unteres Verzeichnis) haben.
Ich schätze aber, chmod 777
dass anderen Benutzern der Zugriff auf das Overlay-Dateisystem auf dem Host ermöglicht werden könnte.