four43 Asked: 2024-07-13 01:58:31 +0800 CST2024-07-13 01:58:31 +0800 CST 2024-07-13 01:58:31 +0800 CST 我如何获取 Linux 版本,例如 Fedora、RHEL、Amazon Linux 以及其他在登录时不更新 motd 的版本? 772 我正在尝试让我的 Amazon Linux 2023 服务器在登录时更新 MOTD,而不是通过计时器或摆弄配置文件。我希望为用户提供干净的体验,无论他们是重新执行 shell 还是 sudo。 ssh 2 个回答 Voted Best Answer Marcus Müller 2024-07-13T03:56:13+08:002024-07-13T03:56:13+08:00 这通常只在人们主要远程登录的机器上才会出现问题。因此,执行此操作的正确位置不是 PAM,而是登录 shell — 正是您不想“摆弄”的配置文件。摆弄 PAM 是一种黑客方法 — /etc/profile 正是您所需要的 — 只为登录shell执行的东西(当有人登录并且没有打开交互式 shell 时不会执行)。并且:PAM 用于检查用户的真实性。不用于在那里执行管理工作。请稍微分离一下关注点! 关于清洁体验:我自己就是一个用户。我做的第一件事就是尽可能禁用 motd 打印。它扰乱了我的工作流程,那里写的东西从来没有与我如此相关,以至于当我要求打印它时,打印它不是更好吗(我为什么要关心我上次登录的时间以及从哪个 IP 地址登录?如果我关心,我会查看last登录信息,或阅读我的 shell 的历史记录,而我用于登录的 IP 地址大多是动态的,因此完全没有任何信息)。 更糟糕的是,motd 打印经常会干扰自动化工具,例如git fetch-packemacs 的 TRAMP 模式或远程调试。 four43 2024-07-13T01:58:31+08:002024-07-13T01:58:31+08:00 我们可以使用 PAM 在登录时执行自定义脚本: 确保通过您的包管理器安装了 update-motd。 编辑 SSH 的 PAM 配置 /etc/pam.d/sshd: ... session required pam_selinux.so open env_params session required pam_namespace.so session optional pam_keyinit.so force revoke session optional pam_exec.so /usr/sbin/update-motd session optional pam_motd.so ... 只需确保该行session optional pam_exec.so /usr/sbin/update-motd位于 pam_motd.so 行上方。 重新启动 sshd。
这通常只在人们主要远程登录的机器上才会出现问题。因此,执行此操作的正确位置不是 PAM,而是登录 shell — 正是您不想“摆弄”的配置文件。摆弄 PAM 是一种黑客方法 — /etc/profile 正是您所需要的 — 只为登录shell执行的东西(当有人登录并且没有打开交互式 shell 时不会执行)。并且:PAM 用于检查用户的真实性。不用于在那里执行管理工作。请稍微分离一下关注点!
关于清洁体验:我自己就是一个用户。我做的第一件事就是尽可能禁用 motd 打印。它扰乱了我的工作流程,那里写的东西从来没有与我如此相关,以至于当我要求打印它时,打印它不是更好吗(我为什么要关心我上次登录的时间以及从哪个 IP 地址登录?如果我关心,我会查看
last
登录信息,或阅读我的 shell 的历史记录,而我用于登录的 IP 地址大多是动态的,因此完全没有任何信息)。更糟糕的是,motd 打印经常会干扰自动化工具,例如
git fetch-pack
emacs 的 TRAMP 模式或远程调试。我们可以使用 PAM 在登录时执行自定义脚本:
确保通过您的包管理器安装了 update-motd。
编辑 SSH 的 PAM 配置
/etc/pam.d/sshd
:只需确保该行
session optional pam_exec.so /usr/sbin/update-motd
位于 pam_motd.so 行上方。