為什麼「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 下工作sudo。但是 podman 與sudo容器內部(或一般的 PAM)呼叫有什麼關係呢?

(這個問題被標記為“docker”,因為我無法建立標籤“podman”)

答案1

好的,這就是我經過數小時痛苦的調試後得出的結論。

  1. 在嘗試此操作之前,我已經遷移到一台新筆記型電腦。我透過/home 從舊筆記型電腦複製到新筆記型電腦來完成此操作。
  2. 我的新主目錄上的圖像快取包含某種錯誤。podman沒有抱怨或嘗試重新下載圖像,但我可以看到(與另一台機器相比)哈希值不同。在圖像中,它/etc/shadow丟失了——不過,我不知道為什麼或如何發生這種情況。
  3. 完全擦除所有podman快取並重新下載後,我得到了正確的圖像,一切都恢復正常。

因此,這一定是在將 podman 鏡像從 Fedora 31 複製到 32 時出現的一個非常具體的錯誤。我可以運行它。但它完全錯過了至少一個關鍵文件。相當奇怪。

相關內容