Как остановить apt-get, использующий /tmp для скриптов установки

Как остановить apt-get, использующий /tmp для скриптов установки

У меня есть базовый образ, совместимый с 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.

Связанный контент