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.