为什么 `/etc/alternatives` 作为符号链接会影响 `apt`?

为什么 `/etc/alternatives` 作为符号链接会影响 `apt`?

我有以下 Dockerfile:

FROM ubuntu:22.04

# Step 1
RUN apt update && apt install -y wget

# Step 2
# All your persistent configs are in /root.
RUN mkdir -p /root/.symlinks/etc \
    && mv /etc/alternatives /root/.symlinks/etc/alternatives \
    && ln -sf /root/.symlinks/etc/alternatives /etc/alternatives

# Step 3
RUN wget -O /usr/share/keyrings/xpra.asc https://xpra.org/gpg.asc \
    && wget -P /etc/apt/sources.list.d https://raw.githubusercontent.com/Xpra-org/xpra/master/packaging/repos/jammy/xpra.sources

# Step 4
RUN apt update

在步骤 2 中,我更改/etc/alternatives为另一个目录的符号链接,在步骤 3 中,我安装了一个名为的程序xpra,然后在步骤 4 中运行了apt update。最后,步骤 4 失败并出现以下错误:

RUN apt update
Get:6 https://xpra.org jammy InRelease [4096 B]
Err:6 https://xpra.org jammy InRelease
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 18ADB31CF18AD6BB
Reading package lists...
W: GPG error: https://xpra.org jammy InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 18ADB31CF18AD6BB
E: The repository 'https://xpra.org jammy InRelease' is not signed.

但是如果我省略步骤 2(即更改/etc/alternatives为符号链接),那么步骤 4 就可以正常工作。

为什么/etc/alternatives符号链接会产生影响apt

答案1

问题似乎是因为/root没有x为其他用户设置位。它是drwx------。因此apt update,在 期间,一定是非 root 用户尝试从 执行文件/etc/alternatives(实际上是/root/.symlinks/etc/alternatives)并且无法进入,/root因为/root没有x为非 root 用户设置位。

如果我在步骤 1 和步骤 2 之间添加该行chmod +x /root,则步骤 4 中就不会再出现错误。但出于安全原因/root应该保留drwx------,因此我不建议将此作为解决方法。

相关内容