Hvordan kan jeg bruke docker uten sudo?
På Dockers dokumentasjonssider vises alle eksempelkommandoer uten sudo
, som denne:
docker ps
På Ubuntu heter den binære filen docker.io
. Det fungerer heller ikke uten sudo:
sudo docker.io ps
Hvordan kan jeg konfigurere Docker slik at jeg ikke trenger å prefikse hver Docker-kommando med sudo?
783
3
Gode nyheter: den nye docker (versjon 19.03 (for tiden eksperimentell)) vil kunne kjøre rootless og negere problemene som kan oppstå ved bruk av en root-bruker. Ikke mer rot med forhøyede tillatelser, root og alt som kan åpne maskinen din når du ikke vil.
Video om dette fra [DockerCon 2019] Hardening Docker daemon med Rootless-modus
Fra og med docker 19.3 er dette foreldet (og farligere enn nødvendig):
docker-manualen har dette å si om det:
Docker-demonen kjører alltid som root-brukeren, og siden Docker versjon 0.5.2 binder docker-demonen seg til en Unix-socket i stedet for en TCP-port. Som standard eies denne Unix-kontakten av brukeren root, og du kan derfor som standard få tilgang til den med sudo.
Viktig å lese: trinn etter installasjon for Linux (det lenker også til Docker Daemon Attack Surface-detaljer).
Docker-demonen binder seg til en Unix-socket i stedet for en TCP-port. Som standard eies Unix-kontakten av brukeren root, og andre brukere kan bare få tilgang til den ved hjelp av sudo. Docker-demonen kjører alltid som root-bruker.
Hvis du ikke vil bruke sudo når du bruker docker-kommandoen, oppretter du en Unix-gruppe som heter docker og legger til brukere i den. Når docker-demonen starter, gjør den eierskapet til Unix-kontakten lesbar / skrivbar av docker-gruppen.
Legg til docker-gruppen hvis den ikke allerede eksisterer:
Legg til den tilkoblede brukeren "$USER" i docker-gruppen. Endre brukernavnet slik at det samsvarer med din foretrukne bruker hvis du ikke vil bruke din nåværende bruker:
Gjør enten en
newgrp docker
eller logg ut / inn for å aktivere endringene i grupper.Du kan bruke
for å sjekke om du kan kjøre docker uten sudo.
For å kjøre docker-kommandoen uten
sudo
, må du legge til brukeren din (som har root-rettigheter) i docker-gruppen. For dette kjører du følgende kommando:La brukeren logge ut og deretter logge inn igjen. Denne løsningen er godt forklart her med riktig installasjonsprosess.
Mekanismen for å legge til en bruker i gruppen
docker
gir tillatelse til å kjøre docker er å få tilgang til sokkelen til docker på/var/run/docker.sock
. Hvis filsystemet som inneholder/var/run
er montert med ACL-er aktivert, kan dette også oppnås via ACL-er.Jeg tar bare med dette for fullstendighetens skyld.
Generelt anbefaler jeg å unngå ACL-er når et godt alternativ basert på grupper er tilgjengelig: Det er bedre hvis rettighetene i et system kan forstås bare ved å se på gruppemedlemskap. Å måtte skanne filsystemet for ACL-oppføringer for å forstå systemprivilegier er en ekstra byrde for sikkerhetsrevisjoner.
Advarsel 1: Dette har samme
root
-ekvivalens som å legge tilusername
idocker
-gruppen. Du kan fortsatt starte en container på en måte som harroot
-tilgang til vertsfilsystemet.Advarsel 2: ACL-er er betydelig vanskeligere for sikkerhetsrevisjoner enn gruppebasert sikkerhet. Unngå sannsynligvis ACL-er hvis det er mulig når du kan bruke grupper i stedet, i det minste i revisjonsrelevante miljøer.