Почему `sudo` не работает в простом контейнере в Fedora 32?

Почему `sudo` не работает в простом контейнере в Fedora 32?

Я ломаю голову, пытаясь это понять.

В свежеустановленной Fedora 32 следующий минимальный контейнер не выполняется должным образом:

FROM centos:7

RUN yum install -y sudo && yum clean all -y
RUN useradd -m test
RUN sudo -u test true

Чтобы проверить это, выполните:

podman build .

Результат:

STEP 4: RUN sudo -u test true
sudo: PAM account management error: Authentication service cannot retrieve authentication info
Error: error building at STEP "RUN sudo -u test true": error while running runtime: exit status 1

Теперь мне интересно, что делает fedora 32 особенной? Я почти уверен, что это работало в 31. Поскольку версия being sudoengagement и ее окружение не изменились, единственное отличие может быть в podman. Но какое отношение podman имеет к вызову sudoвнутри контейнера (или PAM в целом)?

(этот вопрос был помечен тегом «docker», потому что я не могу создать тег «podman»)

решение1

Итак, вот что я выяснил после многих часов мучительной отладки.

  1. Я перешел на новый ноутбук, прежде чем попробовать это. Я сделал это путем копирования /home со старого на новый ноутбук.
  2. Кэш изображений в моем новом домашнем каталоге содержал какую-то ошибку. podmanне жаловался и не пытался повторно загрузить изображение, но я мог видеть (по сравнению с другой машиной), что хэш был другим. Внутри изображения отсутствовало /etc/shadow- я понятия не имею, почему или как это могло произойти.
  3. После полной очистки podmanкэша и повторной загрузки я получил правильные изображения, и все снова заработало.

Так что это, должно быть, была очень специфическая ошибка при копировании образов Podman из Fedora 31 в 32. Образ был более-менее цел. Я смог его запустить. Но он полностью пропустил по крайней мере один важный файл. Довольно странно.

Связанный контент