So verhindern Sie, dass apt-get /tmp für Installationsskripte verwendet

So verhindern Sie, dass apt-get /tmp für Installationsskripte verwendet

Ich habe ein CIS-Benchmark-kompatibles Basis-Image. Ich ziehe dieses, um ein unveränderliches Image für meine Anwendung zu unterscheiden, wenn ich versuche,

apt-get install -y docker.io

Ich erhalte eine Fehlermeldung

==> 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.

Dies liegt daran, dass noexecsich im /tmpDateisystem CIS-kompatible Images festgelegt haben.

Kennt jemand eine Befehlszeile oder eine gleichwertige Methode, um apt-get dazu zu bringen, ein anderes Dateisystem für Installationsskripte zu verwenden, oder muss ich Aufgaben planen, um aus der Quelle zu installieren? Beachten Sie, dass dies nicht nur docker.io, sondern auch andere betrifft. Ich suche nach einer apt-get-Level-Lösung, nicht nach einer app-spezifischen Paketmethode.

Antwort1

Ich habe den Code von hinzugefügtdieser Beitragim Skript, das (Pipeline-Orchestrator einfügen) ausgeführt wird, um das Basisimage abzurufen und die imagespezifische Software zu installieren.

Da das Skript sudo verwendet hat und dies standardmäßig nicht das Root-Konto übernimmt, wurde bei der Ausführung von sudo der Standard-Ubuntu-Benutzer übernommen, sodass die temporäre Datei am falschen Ort eingerichtet wird und nicht funktioniert. Da apt-getzum Ausführen Root erforderlich ist, habe ich Folgendes hinzugefügt, um sicherzustellen, dass nur Root mein Skript ausführen kann:

if [[ ${EUID} -ne 0 ]]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

Anschließend habe ich das Sudo-Präfix aus den Befehlen in meinem Bash-Skript entfernt und das gesamte Skript mit einem Sudo ausgeführt, damit der Orchestrator mein Skript als Root-Benutzer ausführt, was bedeutete, dass der Orchestrator die temporäre Datei auf der Build-Maschine korrekt erstellt hat.

Vertrauen Sie @djdomi.

verwandte Informationen