我有一组 Ubuntu 服务器需要保护到 DISA(或 USGCB)基线。该过程的一部分是将 /tmp 和 /var 挂载设置为 noexec 和 nosuid。
看起来,一旦我这样做,apt 安装程序就会尝试从 /tmp 和 /var 运行程序,并出现访问被拒绝错误。
配置 apt 以使用其他目录来安装新的和更新的软件包的最佳方法是什么?
答案1
移动 apt 缓存
创建新目录(以及部分的目錄內):
mkdir -p /my/new/cache/partial
然后在以下任一位置添加引用该目录的行:
新的配置文件/etc/apt/apt.conf.d/或者
老人/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
(默认无结果)