
我有一個符合 CIS 基準的基礎映像。如果我嘗試這樣做,則拉動它來區分我的應用程式的不可變圖像
apt-get install -y docker.io
我收到一個錯誤
==> amazon-ebs: Can't exec "/tmp/docker.io.config.NzitwJ": Permission denied at /usr/share/perl/5.26/IPC/Open3.pm line 178.
==> amazon-ebs: open2: exec of /tmp/docker.io.config.NzitwJ configure failed: Permission denied at /usr/share/perl5/Debconf/ConfModule.pm line 59.
這是因為檔案系統noexec
上已設定符合 CIS 的映像/tmp
。
有誰知道命令列或等效方法使 apt-get 使用不同的檔案系統來安裝腳本,或者我是否必須安排任務從來源安裝?請注意,這不僅會影響docker.io
,還會影響其他人。我正在尋找apt-get
- 級別的解決方案,而不是特定於應用程式的套件方法。
答案1
我添加了代碼這個帖子在腳本(插入管道編排器)中執行以拉取基礎映像並安裝特定於映像的軟體。
因為腳本一直使用 sudo,並且預設不採用 root 帳戶,所以運行 sudo 採用預設的 ubuntu 用戶,因此它在錯誤的位置設定了 tmp 檔案並且不起作用。因為apt-get
需要 root 才能運行它,所以我添加了以下內容以確保只有 root 可以運行我的腳本:
if [[ ${EUID} -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
然後,我刪除了 bash 腳本中命令的 sudo 前綴,並使用 sudo 運行整個腳本,以使協調器以 root 用戶身份運行我的腳本,這意味著協調器在構建電腦上正確創建了 tmp 檔案。
信任@djdomi。