Linux的/etc/issue、/etc/issue.net和/etc/motd的区别

转载请注明来源

 

Linux使用这三个文件/etc/issue、/etc/issue.net和/etc/motd 来控制本地及远程登录前后的信息显示,新版本的还有动态motd:/run/motd.dynamic以及PAM模块来控制。网上很多相互转载,说的都不清楚,自己实际测试了一下,结果记录如下:

首先终端有好几种类型,暂不要深究,仔细深究各种串口等底层的东西就来了(想要细究,请看我的另一篇文章:关于Unix/Linux的终端、控制台和shell),为了方便理解,暂且假定我们Linux的终端就2种,一种就是你坐在主机前,接了键盘和显示器,启动时就是那种黑框框没有图形界面的地方直接登录,这种登录终端我们叫他 TTY(终端控制台),就是那种按ctrl+f1/f2/f3/.../f6的那种登录,另一种就是我们远程登录,使用telnet或者ssh,或者是你开机之后,用图形界面登录,然后打开的gnome等终端,这一种我们叫他PTS方式,如下图所示:

TTY终端:

 

PTS终端:

 

/etc/issue 和 /etc/issue.net :这2个文件是你在登录之前显示的,区别一个负责本地登录前显示,一个负责网络登录前显示。也即 /etc/issue 是显示在TTY控制台登录前(非图形界面),而 /etc/issue.net 是显示在 Telnet (SSH默认不开启,请看文章最后面说明)远程登录前,另外 /etc/issue.net 不支持转义字符,如下图:

 

/etc/motd :这个文件是在你登录之后显示的,不管你是 TTY 还是 PTS 登录,也不管是  Telnet 或 SSH 都显示这个文件里面的信息。

在较新的Linux发行版中,这个功能被扩展了,有了动态motd和静态motd的区别,在Ubuntu 16.04.01 LTS中,仅仅启用了动态motd,而未启用静态motd

如下图:

 

上面两个图是分别用TTY和PTS进行登录的截图,但实际上并没有/etc/motd这个配置文件,那么这些登录信息来自哪里呢?答案是:来自 /run/motd.dynamic 文件。

 

你可能想要修改这个配置文件来自定义你自己的登录后信息,可是却发现配置完毕后,再次登录时,配置文件中的信息又还原了。是的,这里的信息无法修改,因为它是由 /etc/update-motd.d/ 下的几个脚本文件来动态生成的。所以你可以通过/etc/update-motd.d/ 下的脚本来控制信息的生成。那么如何禁用该动态motd功能呢?方法是将/etc/update-motd.d/ 下的脚本移除或者去掉可执行权限。还有一种方法是在PAM登录模块配置文件中禁用动态motd,该配置文件是/etc/pam.d/login 

 

# Prints the message of the day upon succesful login.
# (Replaces the `MOTD_FILE' option in login.defs)
# This includes a dynamically generated part from /run/motd.dynamic
# and a static (admin-editable) part from /etc/motd.
session    optional   pam_motd.so motd=/run/motd.dynamic
session    optional   pam_motd.so noupdate

将其中的pam_motd.so这两行注释掉即关闭动态dynamic motd 

 

在关闭动态motd之后,发现登录之后还有会一行:Last login: Thu May 25 15:39:48 CST 2017 from 192.168.2.122 on pts/1

这是由/etc/pam.d/login配置文件中pam_lastlog.so这一行控制的,相应地注释即可。

# Prints the last login info upon succesful login
# (Replaces the `LASTLOG_ENAB' option from login.defs)
session    optional   pam_lastlog.so

 

如果需要静态motd消息,那么在/etc/目录下,新建或者修改配置文件motd,在其中定制你需要的登录后信息即可。

 

默认情况下/etc/issue.net 文件的内容不会在ssh登录前显示,要显示这个信息可以修改/etc/ssh/sshd_config 文件中的 Banner /etc/issue.net ,配置更改后,需要重启SSH服务。

/etc/issue.net 文件记录了操作系统的名称和版本号,这些登录提示很明显的泄漏了系统信息,为了安全起见,建议将系统相关信息去除。

posted @ 2016-05-26 16:08  impluse  阅读(11353)  评论(0编辑  收藏  举报