Docker/Userns-remap: Unterschied zwischen den Versionen
| Zeile 59: | Zeile 59: | ||
2. Nach dem Speichern der Datei den Dienst neu starten: | 2. Nach dem Speichern der Datei den Dienst neu starten: | ||
<syntaxhighlight lang="bash" highlight="1" | <syntaxhighlight lang="bash" highlight="1" copy> | ||
sudo systemctl restart docker | sudo systemctl restart docker | ||
</syntaxhighlight> | </syntaxhighlight> | ||
3. Überprüfung | 3. Überprüfung | ||
<syntaxhighlight lang="bash" highlight="1" | <syntaxhighlight lang="bash" highlight="1" copy> | ||
docker info | grep -i userns | docker info | grep -i userns | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Aktuelle Version vom 13. November 2025, 21:00 Uhr
Docker/Userns-remap - Beschreibung
Beschreibung
Linux-Namespaces bieten Isolation für laufende Prozesse und beschränken deren Zugriff auf Systemressourcen, ohne dass der laufende Prozess diese Beschränkungen wahrnimmt.
- Weitere Informationen zu Linux-Namespaces finden Sie unter Linux-Namespaces.
Der beste Weg, um Angriffe zur Rechteausweitung aus einem Container heraus zu verhindern, besteht darin, die Anwendungen Ihres Containers so zu konfigurieren, dass sie als nicht privilegierte Benutzer ausgeführt werden.
- Bei Containern, deren Prozesse als Root-Benutzer innerhalb des Containers ausgeführt werden müssen, können Sie diesen Benutzer einem Benutzer mit weniger Privilegien auf dem Docker-Host zuordnen.
- Dem zugeordneten Benutzer wird ein Bereich von UIDs zugewiesen, die innerhalb des Namespace wie normale UIDs von 0 bis 65536 funktionieren, aber keine Privilegien auf dem Host-Rechner selbst haben.
Vorbereitung
Nach dem Aktivieren von userns-remap erstellt Docker einen Unterordner wie folgt:
/var/lib/docker/<uid>.<gid>/
- Neue Entitäten (Bilder, Container, Volumes, Overlay-Ebenen) werden nun dort gespeichert.
- Kataloge mit alten Entitäten werden nicht mehr verwendet.
- docker ps, docker images, docker volume ls funktionieren nur mit dem aktuellen namepace
- Der Eigentümer der Dateien in overlay2 und volumes ist nun nicht mehr root, sondern der remapped-Benutzer
Für neue Installationen
Images und Container lassen sich einfacher und schneller neu laden als migrieren.
- Bei aktiviertem userns-remap
-
- --pid=host und --network=host können nicht verwendet werden.
- Einige externe Volume-/Speichertreiber verstehen möglicherweise remap nicht und funktionieren nicht mehr.
- --privileged ohne --userns=host funktioniert nicht mehr wie zuvor, einige Funktionen sind eingeschränkt.
- Es ist besser, userns-remap bei einer sauberen Docker-Installation zu aktivieren: Alte Image-Layer und Container werden ausgeblendet, da Docker einen separaten Ordner für den neuen Namespace in /var/lib/docker/ erstellt.
Migration zu neuen Namespaces
Bereinigung
Da alle erforderlichen Daten in den Ordner /var/lib/docker/<uid.guid> verschoben werden, müssen nach der Migration alle nicht mehr benötigten Dateien gelöscht werden.
systemctl stop docker
cd /var/lib/docker
rm -rf containers image network plugins swarm tmp trust volumes
Installation
1. Um den Modus userns-remap zu aktivieren, müssen Sie die Datei /etc/docker/daemon.js mit folgendem Inhalt erstellen:
{
"userns-remap": "default"
}
Oder Sie können den Benutzer manuell eingeben:
{
"userns-remap": "testuser"
}
Sie können den Namen, die UID oder user:group angeben
2. Nach dem Speichern der Datei den Dienst neu starten:
sudo systemctl restart docker
3. Überprüfung
docker info | grep -i userns
Userns mode: private
Anhang
Siehe auch
Dokumentation
Links
Projekt
Weblinks