Secret-Datei: Container-Pfad und Dateirechte je nach Engine #3
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "docs/secret-file-permissions"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Aus dem Praxistest auf dem NAS. Drei Commits, alle zum selben Thema:
HETZNER_API_TOKEN_FILEist auf mehr als eine Art falsch zu bedienen, und keine davon war dokumentiert.1. Der Pfad gilt im Container
HETZNER_API_TOKEN_FILE=/srv/.../hetzner_api_tokenmit einer Datei, die auf dem Host sichtbar dort liegt, ergab nurno such file or directory. Nichts daran deutet auf das Dateisystem des Containers — die Datei ist ja da.Die Meldung nennt jetzt die Ursache und verweist auf den
volumes-Abschnitt.2. Die Dateirechte
Danach wartet der naechste stille Fehlschlag: Das Image laeuft nicht als Root, eine Datei von
rootmit0600ist fuer den Prozess unlesbar.3.
chown 65532war nicht allgemeingueltigDer urspruengliche Rat galt fuer einen rootful-Daemon. Unter rootless Podman bildet
/etc/subuiddie Container-UID auf eine ganz andere Host-UID ab; einchown 65532auf dem Host setzt dort einen Besitzer, den niemand benutzt. Die Fehlermeldung hat den Fehler wiederholt, indem sie einen fertigenchown-Befehl ausgab — der ist jetzt raus.Die README trennt die Faelle nach User-Namespace, nicht nach Engine-Namen. Das Mapping ist keine Podman-Eigenheit: rootless Docker und
--userns-remapverhalten sich genauso, rootful Podman gar nicht.chown 65532:65532podman unshare chown 65532:0,chmod 460--userns-remapunshare—chownaus einem Wegwerf-ContainerDie
0beiunshareist Absicht: GIDs werden ebenso abgebildet, und Container-GID 0 entspricht in der ueblichen Konfiguration der Gruppe des Host-Benutzers.460laesst den Container lesen und den Host-Admin weiterhin bearbeiten.Der kuerzeste Weg, jetzt als erste Option
Beim Nachpruefen zeigte sich, dass sich das Image gar nicht auf UID 65532 festlegt: kein Benutzer-Lookup, keine Schreibzugriffe, Binary fuer alle ausfuehrbar. Es laeuft unter jeder UID. Damit genuegt in der Compose-Datei:
Kein
unshare, keinchown, auf jeder Engine. Steht als auskommentierte Zeile indocker-compose.yml.Getestet
make lint test-racegruen, 0 Lint-Issues, Domain-Schranke gruen, keine toten Anker in der READMEpodman unshare- und Docker-userns-remap-Kommandos. Hier ist weder Docker noch Podman installiert; die Angaben folgen der dokumentierten Semantik.