Befehl als anderer Benutzer ausführen
In diesem Schritt lernen Sie, wie Sie einen Befehl innerhalb eines laufenden Containers als bestimmter Benutzer ausführen können. Standardmäßig führt docker exec
Befehle als root-Benutzer im Container aus, aber Sie können mit dem -u
oder --user
-Flag einen anderen Benutzer angeben. Dies ist wichtig für die Sicherheit und die Einhaltung des Prinzips der geringsten Rechte.
Wir verwenden weiterhin den my-nginx
-Container. Zuerst sehen wir uns an, als welcher Benutzer der ls /
-Befehl standardmäßig ausgeführt wird.
docker exec my-nginx whoami
Die Ausgabe wird wahrscheinlich root
sein, da dies der Standardbenutzer für docker exec
ist.
Nun versuchen wir, einen Befehl als anderer Benutzer auszuführen. Das Nginx-Image führt den Nginx-Prozess typischerweise als Nicht-Root-Benutzer aus, oft mit dem Namen nginx
. Lassen Sie uns den whoami
-Befehl als nginx
-Benutzer ausführen.
docker exec -u nginx my-nginx whoami
Sie sollten die Ausgabe nginx
sehen, was bestätigt, dass der Befehl als nginx
-Benutzer ausgeführt wurde.
Sie können auch eine Benutzer-ID (UID) anstelle eines Benutzernamens angeben. Um die UID des nginx
-Benutzers im Container zu finden, können wir die Datei /etc/passwd
einsehen.
docker exec my-nginx cat /etc/passwd | grep nginx
Die Ausgabe zeigt den Eintrag für den nginx
-Benutzer, einschließlich seiner UID und GID (Gruppen-ID). Beispielsweise könnte es so aussehen: nginx:x:101:101:nginx user,,,:/nonexistent:/bin/false
. In diesem Beispiel ist die UID 101
.
Nun führen wir den whoami
-Befehl mit der UID aus. Ersetzen Sie 101
durch die tatsächliche UID aus dem vorherigen Schritt, falls diese abweicht.
docker exec -u 101 my-nginx whoami
Die Ausgabe sollte wieder nginx
sein, was zeigt, dass Sie entweder den Benutzernamen oder die UID verwenden können, um den Benutzer für docker exec
anzugeben.
Das Ausführen von Befehlen als Nicht-Root-Benutzer ist eine gute Sicherheitspraxis, insbesondere beim Umgang mit sensiblen Dateien oder bei Operationen, die keine Root-Rechte erfordern.