Shell登陆信息及修改方法详解

我们在登录 tty1~tty6 这 6 个本地终端时,会有几行的欢迎界面。这些欢迎信息是保存在哪里的?可以修改吗?当然可以修改,这些欢迎信息保存在 /etc/issue 文件中,我们查看一下这个文件:

[root@localhost ~]# cat /etc/issue
CentOS release 6.3 (Final)
Kernel \r on an \m

系统在每次登录时,会依赖这个文件的配置显示欢迎界面。在 /etc/issue 文件中允许使用转义符调用相应信息,其支持的转义符可以通过 man agetty 命令查询,如表 1 所示。

表 1 /etc/issue支持的转义符
转义符 作 用
\d 显示当前系统日期
\s 显示操作系统名称
\1 显示登录的终端号,这个转义符比较常用
\m 显示硬件体系结构,如i386、i686等
\n 显示主机名
\o 显示域名
\r 显示内核版本
\t 显示当前系统时间
\u 显示当前登录用户的序列号

在本地终端登录时,因为有 tty1~tty6 这 6 个本地终端(可以通过 Alt+F1 ~ F6 快捷键切换),有时我们会忘记在哪个终端中,所以笔者更习惯加入"\l"选项,例如:

[root@localhost ~]# cat /etc/issue
CentOS release 6.3 (Final)
Kernel \r on an \m \l

这样我们在本地登陆时,就可以看到到底是在哪个终端中。

/etc/issue.net

配置 /etc/issue 文件会在本地终端登录时显示欢迎信息,如果远程登录(如 ssh 远程登录,或 Telnet 远程登录)需要显示欢迎信息,则需要配置 /etc/issue.net 文件。使用这个文件时有两点需要注意:
  • 在 /etc/issue 文件中支持的转义符在 /etc/issue.net 文件中不能使用。
  • ssh 远程登录是否显示 /etc/issue.net 文件中的欢迎信息,是由 ssh 的配置文件决定的。

如果我们需要 ssh 远程登录可以査看 /etc/issue.net 文件中的欢迎信息,那么首先需要修改 ssh 的配置文件 /etc/ssh/sshd_config,加入如下内容:

[root@localhost ~]# cat /etc/ssh/sshd_config ...省略部分输出...
# no default banner path
#Banner none
Banner /etc/issue.net
…省略部分输出…

这样,在 ssh 远程登录时,也可以显示欢迎信息,只是不能再识别"\d"和"\l"等信息了。

/etc/motd

/etc/motd 文件中也是有欢迎信息的,这个文件和 /etc/issue 及 /etc/issue.net 文件的区别是:/etc/issue 及 /etc/issue.net 文件是在用户登录之前显示欢迎信息的;而 /etc/motd 文件是在用户输入用户名和密码,正确登录之后显示欢迎信息的。/etc/motd 文件中的欢迎信息,不论是本地登录,还是远程登录,都可以显示。

大家需要注意,在国外曾经有黑客入侵服务器,因为服务器上显示的欢迎信息是"welcome..."而免于处罚的案例。所以,我们虽然一直是按照"欢迎信息"进行讲解的,但是这里其实应该写入一些"警告信息", 比如禁止非法用户登录之类的信息。