来自远程源的动态 mod 消息?

来自远程源的动态 mod 消息?

动态允许向 Linux 用户显示欢迎登录消息。

是否可以通过某种方式配置 motd 来获取一些远程 URL?

示例场景:

  • 告知用户 Python 2 的生命周期结束,但在截止日期过后停止这样做。

  • 如果没有安装 Python2,则隐藏此消息

更复杂的场景示例:

  • 传递一个参数,动态评估它并通知用户该操作系统不再受支持。

答案1

对于系统范围的消息,motd 可以在启动时生成 - Ubuntu 和 Debian 目前就是这么做的。它们有一个update-motd系统,可以从标准标题、提示、公告、系统更新消息等汇编文本文件。

在大多数情况下,motd 由名为 的 PAM 模块显示pam_motd。(Debian/Ubuntu 系统实际上通过调用模块两次来工作 - 第一次是静态的 /etc/motd,然后是自动生成的 /run/motd。)

因此,如果您需要更多动态文本(例如基于登录的用户名),您可以创建此模块的自己的版本并让它执行任何您想要的操作。

然而,不要让它直接从 Web 检索文件,因为这样只会减慢登录速度并每次都惹恼用户。相反,设置一个下载文件的 cronjob,然后只需使用文件名作为参数调用现有的 pam_motd 模块:

session optional pam_motd.so motd=/tmp/downloaded_message.txt

答案2

/etc/motd只是一个静态文本文件。

您所说的听起来更像是可以通过登录脚本实现的东西。

较新的 Linux 发行版往往有一个/etc/profile.d目录,您可以将脚本片段放入其中,以便在用户登录时执行。为了涵盖所有常见的 shell,您应该生成两种此类脚本片段的变体:一个与 POSIX 兼容/bin/sh并带有.sh后缀,另一个使用csh带后缀的语法.csh

对于较旧的发行版,您可以将所需的功能添加到/etc/profile/etc/csh.login(分别针对所有 POSIXsh兼容 shell 和csh/ tcshshell)。

您当然可以编写一个脚本,联系特定的远程 URL 并添加一些相关的系统信息(例如自定义 HTTP 标头),远程端可以解析这些信息并使用定制的消息文本进行响应。

但是,如果远程 URL 返回的响应不仅仅是纯文本,还包含可能可执行的内容,则此机制将变得对安全敏感:如果包含远程 URL 的服务器(或网络,或登录脚本本身)不安全,则它可能成为入侵者访问您系统的途径。您必须在实施过程中更加小心,以防止这种情况发生。

您还应该考虑如果远程 URL 无法访问或网络链接中断会发生什么:您会希望消息系统在大多数错误情况下超时并继续登录。

相关内容