Я ломаю голову, пытаясь это понять.
В свежеустановленной 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 sudo
engagement и ее окружение не изменились, единственное отличие может быть в podman. Но какое отношение podman имеет к вызову sudo
внутри контейнера (или PAM в целом)?
(этот вопрос был помечен тегом «docker», потому что я не могу создать тег «podman»)
решение1
Итак, вот что я выяснил после многих часов мучительной отладки.
- Я перешел на новый ноутбук, прежде чем попробовать это. Я сделал это путем копирования
/home
со старого на новый ноутбук. - Кэш изображений в моем новом домашнем каталоге содержал какую-то ошибку.
podman
не жаловался и не пытался повторно загрузить изображение, но я мог видеть (по сравнению с другой машиной), что хэш был другим. Внутри изображения отсутствовало/etc/shadow
- я понятия не имею, почему или как это могло произойти. - После полной очистки
podman
кэша и повторной загрузки я получил правильные изображения, и все снова заработало.
Так что это, должно быть, была очень специфическая ошибка при копировании образов Podman из Fedora 31 в 32. Образ был более-менее цел. Я смог его запустить. Но он полностью пропустил по крайней мере один важный файл. Довольно странно.