Den Benutzer zur docker-Gruppe hinzufügen - und warum das eine Sicherheitsentscheidung ist
Den Benutzer zur docker-Gruppe hinzufügen - und warum das eine Sicherheitsentscheidung ist
Ohne weitere Konfiguration erfordert jeder Docker-Befehl sudo. Der schnelle Fix: Benutzer zur docker-Gruppe hinzufügen. Das ist bequem — aber keine neutrale technische Entscheidung.
Die Befehle
# Benutzer zur docker-Gruppe hinzufügen
sudo usermod -aG docker $USER
# Gruppe sofort aktivieren (ohne Logout)
newgrp docker
# Prüfen
docker ps
Nach einem Logout/Login ist die Gruppe dauerhaft aktiv.
Warum das eine Sicherheitsentscheidung ist
Die docker-Gruppe gibt effektiv Root-Zugriff auf den Host. Kein sudo, kein Passwort — wer in der docker-Gruppe ist, kann:
# Host-Dateisystem in einen Container mounten und alles lesen/schreiben
docker run -v /:/host alpine chroot /host
# Neue Root-Shell auf dem Host starten
docker run -it --rm --privileged --pid=host alpine nsenter -t 1 -m -u -i -n sh
Das ist kein theoretischer Angriff — es funktioniert auf jedem Standard-Docker-Setup in Sekunden. Mitgliedschaft in der docker-Gruppe ist bei Mehrbenutzer-Systemen gleichbedeutend mit sudo-Zugriff.
Wann es vertretbar ist
Single-User-Homelab / Entwicklerrechner: Wenn man der einzige Nutzer des Systems ist und es kein Angriffsziel darstellt, ist die docker-Gruppe der richtige Kompromiss zwischen Sicherheit und Komfort.
Produktionsserver mit mehreren Benutzern: Hier ist Vorsicht geboten. Nicht jeder, der Docker-Befehle ausführen soll, braucht effektiven Root-Zugriff.
sudo vs. docker-Gruppe
| | sudo docker | docker-Gruppe |
|---|---|---|
| Passwort nötig | ja (je nach sudoers) | nein |
| Audit-Logging | ja (in /var/log/auth.log) | nein |
| Granulare Kontrolle | via sudoers möglich | nein |
| Komfort | geringer | höher |
sudo docker mit sudoers-Konfiguration lässt sich feingranular steuern:
# /etc/sudoers.d/docker-limited
alice ALL=(ALL) NOPASSWD: /usr/bin/docker ps, /usr/bin/docker logs *
Rootless Docker als Alternative
Rootless Docker lässt den Daemon komplett ohne Root-Rechte laufen — der Daemon gehört dem Benutzer, Container-Prozesse haben keine Host-Root-Rechte.
# Installation für aktuellen Benutzer
dockerd-rootless-setuptool.sh install
# Daemon starten
systemctl --user start docker
systemctl --user enable docker
Der Komfort ist ähnlich wie mit der docker-Gruppe — ohne die Sicherheitsimplikationen. Einige Features (wie bestimmte Netzwerkmodi) funktionieren im rootless Modus nicht oder eingeschränkt.