1 votes

sudo : vous n'existez pas dans la base de données passwd

Qu'est-ce que j'ai :

FROM ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt update -y \
    && apt install -y --no-install-recommends \
    sudo \
    && adduser --disabled-password --gecos "" --uid 1000 runner \
    && groupadd docker \
    && usermod -aG sudo runner \
    && usermod -aG docker runner \
    && echo "%sudo   ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers

USER runner

RUN sudo usermod -u 1001 runner && sudo groupmod -g 121 runner

La construction de ce fichier Docker entraîne une erreur :

sudo : vous n'existez pas dans la base de données passwd

Si je divise le dernier RUN en deux RUN il n'y a pas d'erreur :

FROM ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt update -y \
    && apt install -y --no-install-recommends \
    sudo \
    && adduser --disabled-password --gecos "" --uid 1000 runner \
    && groupadd docker \
    && usermod -aG sudo runner \
    && usermod -aG docker runner \
    && echo "%sudo   ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers

USER runner

RUN sudo usermod -u 1001 runner
RUN sudo groupmod -g 121 runner

Pourquoi cela se produit-il ?

2voto

muru Points 180007

En RUN sudo usermod -u 1001 runner && sudo groupmod -g 121 runner Docker démarre un sh comme l'a fait le runner qui exécute ces commandes. La première commande modifie l'UID de cet utilisateur. Mais la première commande sh utilise toujours l'ancien identifiant et donc, lorsqu'il essaie d'exécuter la deuxième commande, il essaie d'exécuter la commande sudo avec un UID qui n'existe plus dans la base de données des passwd base de données. Lorsque vous les divisez en deux RUN Docker lance une nouvelle commande sh pour la deuxième RUN qui utilise le nouvel UID.

Je n'ai pas de solution à ce problème, car je ne sais pas pourquoi vous faites cela. Je vous déconseille de changer aléatoirement l'UID d'un utilisateur tout en continuant à exécuter des processus sous cet utilisateur. sudo n'est pas le seul outil à ne pas l'apprécier.

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