![為什麼「sudo」在 Fedora 32 上的簡單容器中失敗?](https://rvso.com/image/1642380/%E7%82%BA%E4%BB%80%E9%BA%BC%E3%80%8Csudo%E3%80%8D%E5%9C%A8%20Fedora%2032%20%E4%B8%8A%E7%9A%84%E7%B0%A1%E5%96%AE%E5%AE%B9%E5%99%A8%E4%B8%AD%E5%A4%B1%E6%95%97%EF%BC%9F.png)
我正在撓頭試圖弄清楚這個問題。
在新安裝的 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
好的,這就是我經過數小時痛苦的調試後得出的結論。
- 在嘗試此操作之前,我已經遷移到一台新筆記型電腦。我透過
/home
從舊筆記型電腦複製到新筆記型電腦來完成此操作。 - 我的新主目錄上的圖像快取包含某種錯誤。
podman
沒有抱怨或嘗試重新下載圖像,但我可以看到(與另一台機器相比)哈希值不同。在圖像中,它/etc/shadow
丟失了——不過,我不知道為什麼或如何發生這種情況。 - 完全擦除所有
podman
快取並重新下載後,我得到了正確的圖像,一切都恢復正常。
因此,這一定是在將 podman 鏡像從 Fedora 31 複製到 32 時出現的一個非常具體的錯誤。我可以運行它。但它完全錯過了至少一個關鍵文件。相當奇怪。