为什么 `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 下是可以工作的。由于所涉及的版本及其环境没有变化,唯一的区别可能是 podman。但是 podman 与容器内部sudo的调用(或一般的 PAM)有什么关系?sudo

(由于我无法创建标签“podman”,因此该问题被标记为“docker”)

答案1

好的,这是我经过几个小时痛苦的调试后才弄清楚的。

  1. /home 在尝试此操作之前,我已经换了一台新笔记本电脑。我通过将旧笔记本电脑复制到新笔记本电脑来完成此操作。
  2. 我的新主目录中的图像缓存包含某种错误。podman没有抱怨或尝试重新下载图像,但我可以看到(与另一台机器相比)哈希值不同。图像内部缺少/etc/shadow- 但我不知道为什么或如何发生这种情况。
  3. 彻底清除所有podman缓存并重新下载后,我得到了正确的图像,一切恢复正常。

因此,这肯定是将 podman 镜像从 Fedora 31 复制到 32 时出现的非常具体的错误。镜像在某种程度上是完整的。我可以运行它。但它完全错过了至少一个关键文件。相当奇怪。

相关内容