带有网络主目录的 CentOS/RHEL 用户系统

带有网络主目录的 CentOS/RHEL 用户系统

我正在尝试在企业网络环境中部署 podman 用户服务,其中所有 Linux 用户的主目录都通过 NFS 从公共文件服务器挂载。当每台计算机上的用户主目录都通过 nfs 挂载到同一共享时,我不确定如何拥有特定于计算机的用户级服务。

为了让 podman 能够干净地与网络主目录配合使用,我发现我需要设置graphroot指向每台本地机器上的某个位置,否则每台机器上的容器都会尝试使用相同的存储并产生混淆。好的,我可以这样做(尽管需要 IT 部门进行一些工作来设置)。

当将 pod/容器转变为用户级服务(使用podman generate systemd)时,我通常会放入文件.service~/.config/systemd/user但这也在网络共享上,因此会影响每个位置的用户。

有没有标准的方法来解决这个问题?如何为每台机器提供用户级服务(即我可能希望不同的机器有不同的服务,特别是如果这些服务是通过其 ID 引用的容器)?

附加问题扩展:我还打算设置loginctl enable-linger。由于 NFS 主目录是延迟安装的,这是否实际上会导致服务在启​​动时启动?

答案1

有没有标准方法可以解决这个问题?如何在每台机器上提供用户级服务(即我可能希望不同的机器拥有不同的服务,特别是当这些服务是通过其 ID 引用的容器时)?

使用条件*=指令。

[Unit]
# System hostname (/proc/sys/kernel/hostname)
ConditionHost=|node520
ConditionHost=|node964
[Unit]
# /etc/machine-id check
ConditionHost=7539689722fb45bca1a4e101447e4930

附加问题扩展:我还打算设置 loginctl enable-linger。由于 NFS 主目录是延迟安装的,这实际上会导致服务在启​​动时启动吗?

如果您使用 autofs,则systemd --user尝试访问每个用户的 ~/.config 的过程将以与 cronjobs 相同的方式触发延迟挂载。

(如果您使用带有 Kerberos 的 NFS,则这将无法正常工作。)

如果使用 PAM 触发延迟挂载,则会发生如果 /etc/pam.d/systemd-user调用必要的 PAM 模块。(同样,与 cronjobs 完全一样,它只会触发“account”和“session”模块,但不会通过“auth”。)

相关内容