2 votes

Pourquoi mon utilisateur n'a-t-il pas accès à la racine ?

J'ai exécuté les commandes ci-dessous et j'ai ouvert une session de terminal :

karl@i-dev:~$ sudo usermod -aG sudo karl
karl@i-dev:~$ sudo adduser karl sudo
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LC_PAPER = "sv_SE.UTF-8",
    LC_ADDRESS = "sv_SE.UTF-8",
    LC_MONETARY = "sv_SE.UTF-8",
    LC_NUMERIC = "sv_SE.UTF-8",
    LC_TELEPHONE = "sv_SE.UTF-8",
    LC_IDENTIFICATION = "sv_SE.UTF-8",
    LC_MEASUREMENT = "sv_SE.UTF-8",
    LC_TIME = "sv_SE.UTF-8",
    LC_NAME = "sv_SE.UTF-8",
    LANG = "ru_RU.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
The user `karl' is already a member of `sudo'.

Je me suis ensuite déconnecté, puis reconnecté et j'ai essayé d'utiliser une commande nécessitant l'accès à la racine :

karl@i-dev:~$ docker ps -a
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/containers/json?all=1: dial unix /var/run/docker.sock: connect: permission denied

Cependant, je ne suis pas autorisé à le faire. Pourquoi n'ai-je pas été autorisé root sur mon système ?

4voto

Kaz Wolfe Points 32777

Votre utilisateur n'obtient pas automatiquement root en étant membre de l'association sudo groupe. La seule chose qui confère est la capacité pour courir sudo et, par procuration, obtenir l'accès à la racine.

Docker recherche l'une des deux choses suivantes : un utilisateur avec des pouvoirs de niveau racine (donc seulement le compte d'utilisateur connu sous le nom de root qui peut être imitée avec sudo ) ou un utilisateur qui est membre du groupe de travail sur les docker groupe.

Si vous souhaitez faire fonctionner Docker sans sudo il est préférable d'ajouter votre utilisateur à la liste des utilisateurs de la docker à l'aide de la commande ci-dessous :

sudo usermod -aG docker $USER

Une mise en garde s'impose toutefois à ce sujet. En vous ajoutant à la liste des docker vous pouvez créer un conteneur Docker qui s'exécute en tant que root. Si vous accordez à ce conteneur l'accès au disque dur de votre système principal, vous pouvez effectivement obtenir le statut de root sans sudo . Réfléchissez bien pour vous assurer que ce risque est d'abord acceptable. Veillez également à n'utiliser que des conteneurs de confiance/audités. Voir aquí pour une explication plus détaillée de ce qui peut se passer.


En ce qui concerne les pourquoi c'est ainsi qu'il est conçu. Au lieu de permettre à un utilisateur d'exécuter n'importe quelle commande en tant que root lorsqu'il en a envie, il doit passer par le proxy de sudo . Cela empêche un script malveillant d'avoir accès à votre compte d'utilisateur, puis de prendre le contrôle de l'ensemble du système.

Elle s'inscrit également dans le modèle général d'"isolation des permissions" de Linux. Au lieu de fonctionner en permanence en tant qu'utilisateur privilégié, vous opérez au jour le jour en tant qu'utilisateur normal non privilégié qui peut ensuite être escaladé en cas de besoin. Pendant que vous puede courir comme root 24 heures sur 24, 7 jours sur 7, c'est très est déconseillée car elle peut très vite tourner au vinaigre.

Si vous souhaitez passer à l'utilisateur root pour le reste de votre session de terminal, exécutez simplement sudo -i o sudo -s . Sinon, il suffit d'utiliser sudo et rester prudent.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X