自定义Linux终端登录界面提示信息


/etc/issue 文件是 Linux 系统中的一个文本文件,通常包含着系统的欢迎信息或登录提示信息。这个文件中的内容会在用户登录系统时显示在登录界面上,提供一些系统信息或欢迎信息给用户。

通常情况下,/etc/issue 文件包含了一些基本的系统信息,比如操作系统的名称、版本号、发行版信息等。这样的信息可以让用户在登录系统时了解到当前系统的一些基本信息。

这个文件的内容通常由系统管理员根据需要来自定义,可以根据实际情况添加或修改其中的内容。

例如,一个典型的 /etc/issue 文件可能包含类似如下的内容:

Welcome to MyServer
Ubuntu 20.04.1 LTS \n \l

这些特殊的转义表示:

\d          //本地端时间的日期;
\l          //显示当前tty的名字即第几个tty;
\m          //显示硬体的架构 (i386/i486/i586/i686...);
\n          //显示主机的网路名称;
\o          //显示 domain name;
\r          //当前系统的版本 (相当于 uname -r)
\t          //显示本地端时间的时间;
\u          //当前有几个用户在线。
\s          //当前系统的名称;
\v          //当前系统的版本。

Ubuntu 系统中 ,/etc/update-motd.d 目录下的文件用于存放动态更新登录提示信息(Message of the Day,简称 MOTD)的脚本文件。这些脚本文件通常由系统管理员编写,用于在用户登录系统时动态生成一些有用的系统信息,比如系统负载、内存使用情况、磁盘空间使用情况等。

root@localcomputer:/etc/update-motd.d# tree
.
├── 00-header                     # 显示登录提示信息的头部信息,比如系统名称、版本号等
├── 10-help-text                  # 提供帮助文本,用于指导用户获取有关系统的帮助信息
├── 50-motd-news                  # 显示与系统相关的新闻或通知信息
├── 80-esm                        # 显示关于 Ubuntu 的扩展安全更新服务 (ESM) 的信息
├── 80-livepatch                  # 显示关于系统内核的实时内核补丁信息
├── 90-updates-available          # 显示系统是否有可用的软件更新
├── 91-release-upgrade            # 提示用户是否有可用的系统版本升级
├── 95-hwe-eol                    # 显示关于硬件支持版本的信息,告知用户硬件支持结束的时间
├── 98-fsck-at-reboot             # 显示文件系统检查 (fsck) 在下次重启时是否需要进行
└── 98-reboot-required            # 显示系统是否需要重新启动

DebianCentOS中,登录提示信息通常是通过 /etc/motd 文件和 /etc/issue 文件来实现的。/etc/motd 文件包含了系统的静态欢迎信息,而 /etc/issue 文件包含了一些基本的系统信息,比如操作系统的名称和版本号。这些文件的内容会在用户登录时显示在登录界面上。系统管理员可以直接编辑/etc/motd文件来自定义登录提示信息。

也可以使用 pam_motd 模块和 /etc/motd 文件实现动态显示信息。您可以编写一个脚本来动态生成您想要显示的信息,然后在用户登录时由 pam_motd 模块调用这个脚本,并将脚本的输出写入 /etc/motd 文件。这样,用户在登录时就会看到您动态生成的信息。

以下是一种实现方式的示例:

  1. 创建一个脚本文件,比如 /etc/update-motd.sh,用于动态生成登录提示信息。在这个脚本中,您可以使用命令来获取系统的 IP 地址,并将其写入 /etc/motd 文件。
#!/bin/bash

# 获取系统的 IP 地址
IP_ADDRESS=$(ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')

# 将 IP 地址写入 /etc/motd 文件
echo "Welcome to My Debian Server" > /etc/motd
echo "Your IP Address is: $IP_ADDRESS" >> /etc/motd
  1. 确保脚本文件有执行权限,配置 pam_motd 模块,在用户登录时调用上述脚本并更新 /etc/motd 文件。编辑 /etc/pam.d/login 文件,并在文件末尾添加以下行:
session    optional   pam_exec.so /etc/update-motd.sh

这样,每当用户登录系统时,pam_motd 模块都会调用 /etc/update-motd.sh 脚本,该脚本会动态生成登录提示信息,并将其写入 /etc/motd 文件。用户登录后,会看到更新后的登录提示信息,其中包括系统的 IP 地址。

除了使用 pam_motd 模块动态生成 /etc/motd 文件外,还可以使用其他方式实现动态显示登录信息:

  1. 使用 pam_script 模块: 您可以使用 pam_script 模块来执行自定义脚本,而不仅仅是更新 /etc/motd 文件。通过编辑 /etc/pam.d/login 文件并添加相应的配置行,您可以在用户登录时执行自定义脚本,该脚本可以显示您想要的动态信息。
  2. 使用 Shell 配置文件: 您可以在用户的 shell 配置文件中(比如 ~/.bashrc/etc/bashrc)添加一些命令来在用户登录时显示动态信息。这些命令可以获取系统信息、显示消息或执行其他操作。
  3. 使用登录脚本: 您可以创建一个登录脚本,在用户登录时自动执行该脚本,并显示您想要的动态信息。您可以将登录脚本添加到系统启动或登录过程中的某个阶段,以确保它在用户登录时执行。
  4. 使用自定义登录界面: 您可以通过定制登录界面来显示动态信息。这可以通过修改登录管理器(如 gdmlightdmxdm)的主题或配置文件来实现。您可以在登录界面上添加文本或图形元素来显示您想要的信息。

声明:Hack All Sec的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 自定义Linux终端登录界面提示信息


Hacker perspective for security