在具有安全 /tmp 和 /var (noexec) 的系统上安装软件包

在具有安全 /tmp 和 /var (noexec) 的系统上安装软件包

我有一组 Ubuntu 服务器需要保护到 DISA(或 USGCB)基线。该过程的一部分是将 /tmp 和 /var 挂载设置为 noexec 和 nosuid。

看起来,一旦我这样做,apt 安装程序就会尝试从 /tmp 和 /var 运行程序,并出现访问被拒绝错误。

配置 apt 以使用其他目录来安装新的和更新的软件包的最佳方法是什么?

答案1

移动 apt 缓存

创建新目录(以及部分的目錄內):

mkdir -p /my/new/cache/partial

然后在以下任一位置添加引用该目录的行:

  1. 新的配置文件/etc/apt/apt.conf.d/或者

  2. 老人/etc/apt/apt.conf文件(您很可能必须创建)

    Dir::Cache::Archives "/my/new/cache";
    

移动 /var/lib/dpkg

准备新目录:

mkdir -p /my/new/varlibdpkg
sudo cp -r --preserve /var/lib/dpkg/* /my/new/varlibdpkg/

设置以下内容/etc/dpkg/dpkg.cfg

admindir=/my/new/varlibdpkg

将以下行添加到/etc/apt/apt.conf

Dir::State::status "/my/new/varlibdpkg/status";

注意:从技术上来说,可以重新挂载 /var/lib/dpkg/而不是移动目录。


重新挂载或者移动 /tmp

需要可执行文件 /tmp 的软件包可能是一个您必须解决的错误。为此,您有两个选择:

1. 重新挂载 /tmp(就在 dpkg 运行时)

将以下行添加到您决定使用的 apt conf 文件中:

DPkg::Pre-Install-Pkgs {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};

2. 移动 /tmp (仅适用于 apt)

创建一个新的临时目录并将以下行添加到您决定使用的 apt conf 文件中:

APT::ExtractTemplates::TempDir "/my/new/tmp";

补充笔记:

使用 apt-config 检查值:

  • apt-config shell archivesDir Dir::Cache::Archives
  • apt-config shell AdminDir Dir::State::status
  • apt-config shell tmpdir APT::ExtractTemplates::TempDir(默认无结果)

相关内容