91 votes

Comment corriger le message "dial unix /var/run/docker.sock : connect : permission denied" lorsque les autorisations de groupe semblent correctes ?

J'ai soudainement des problèmes après une mise à jour d'Ubuntu 18.04 : auparavant, j'ai utilisé Docker sans problème sur le système, mais soudainement, je ne peux pas. D'après ce que je peux dire, les autorisations semblent correctes :

$ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
$ ls -last /var/run/docker.sock 
0 srw-rw---- 1 root docker 0 Jul 14 09:10 /var/run/docker.sock
$ whoami
brandon
$ cat /etc/group | grep docker
docker:x:995:brandon
nvidia-docker:x:994:

EDITAR:

Informations sur le groupe :

$ groups
brandon
$ groups brandon
brandon : brandon adm cdrom sudo dip plugdev games lpadmin sambashare docker
$ whoami
brandon

Mise à jour

Depuis le post original où j'ai mis à jour un système de 17.04 à 18.04, j'ai fait deux mises à jour de 16.04 à 18.04, et aucun des systèmes ultérieurs n'a eu le problème. Il se peut donc que le problème soit lié au processus de mise à niveau de 17.04 à 18.04. Je n'ai pas encore effectué une nouvelle installation de 18.04.

1 votes

Est-ce que ça marche si vous exécutez sudo docker run hello-world ?

2 votes

Que se passe-t-il si vous exécutez newgrp docker et réessayer depuis le même terminal ?

0 votes

@mviereck @BMitch - sudo a fonctionné, j'avais essayé plus tôt mais avec un script enveloppant une commande docker, donc cela a échoué (oops). newgrp docker me donne un shell où l'exécution de la commande sans sudo travaux. Il y a donc quelque chose de bizarre avec mon shell de connexion ?

3voto

user2037129 Points 1

Essayez juste de donner la bonne permission au fichier docker.sock par :

sudo chmod 666 /var/run/docker.sock

3voto

parth Points 83

J'ai fait la réparation rapide et ça a marché immédiatement.

sudo chmod 777 /var/run/docker.sock

18 votes

Cela peut sembler une solution facile si vous ne faites que jouer avec Docker dans un environnement de développement, mais c'est une très mauvaise idée pour la sécurité de votre système.

2 votes

Sudo setfacl -m user:brandon:rw /var/run/docker.sock donne à un seul utilisateur les permissions dont il a besoin.

4 votes

Non, ne fais pas ça.

2voto

BMitch Points 3744

Pour Ubuntu, il existe un problème connu avec lightdm qui supprime les groupes secondaires de l'utilisateur dans le cadre de la connexion à l'interface graphique. Vous pouvez suivre ce problème ici : https://bugs.launchpad.net/lightdm/+bug/1781418

Vous pouvez essayer de désactiver lightdm ou appliquer la solution de contournement mentionnée dans le rapport de bogue :

[Commentez les lignes suivantes de /etc/pam.d/lightdm :]

auth optional pam_kwallet.so
auth optional pam_kwallet5.so

Les options temporaires incluent la connexion à votre machine avec quelque chose comme ssh ou su -l ou en exécutant la commande newgrp docker commande. Celles-ci n'affecteront que le shell actuel et devront être refaites avec chaque nouveau terminal.


En dehors de ce problème, les commandes générales pour donner à un utilisateur un accès direct au socket docker (et donc un accès Root à l'hôte) sont les suivantes :

sudo usermod -aG docker $(id -un) # you can often use $USER in place of the id command
newgrp docker # affects the current shell, logging out should affect all shells

1voto

Praveen Kumar K S Points 2125

Ça ressemble à un problème d'autorisation :

sudo addgroup --system docker
sudo adduser $USER docker
newgrp docker
sudo setfacl -m "g:docker:rw" /var/run/docker.sock

1voto

user3336921 Points 11

J'ai pu résoudre ce problème sur ma machine Linux en utilisant la commande ci-dessous.

> sudo setfacl --modify user:$USER:rw /var/run/docker.sock

Note : Veuillez vérifier si vous avez un accès sudo. Sinon, cette commande échouera.

Comment vérifier l'accès sudo ?

$ whoami
> rahul
$ groups
> useracc
$ groups useracc
> Here you can see sudo and other access details.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X