
У меня есть базовый образ, совместимый с 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
в /tmp
файловой системе установлены образы, совместимые с CIS.
Кто-нибудь знает командную строку или эквивалентный способ заставить 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
Затем я удалил префикс sudo из команд в моем скрипте bash и запустил весь скрипт с sudo, чтобы оркестратор запустил мой скрипт от имени пользователя root, что означало, что оркестратор правильно создал файл tmp на машине сборки.
Вера @djdomi.