zoukankan      html  css  js  c++  java
  • Linux的/etc/issue、/etc/issue.net和/etc/motd的区别

    转载请注明来源(哎,转的到处都是,zhihu上也转载,都是个人辛辛苦苦翻手册学习、检索然后动手记录的,好歹标记一下出处啊....)

    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 文件记录了操作系统的名称和版本号,这些登录提示很明显的泄漏了系统信息,为了安全起见,建议将系统相关信息去除。

  • 相关阅读:
    使用layer.tips实现鼠标悬浮时触发事件提示消息实现
    鼠标移入、移出触发事件实现
    vue组件独享守卫钩子函数参数详解(beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave)
    vscode 向下复制当前行(即visual studio 中的Ctrl + D)功能快捷键
    vue UI可视化窗口修改为显示中文
    js中的匿名函数
    NPM install -save 和 -save-dev 傻傻分不清
    Node.js中package.json中库的版本号详解(^和~区别)
    RTX管理器里怎么建群
    Mysql的timestamp(时间戳)详解以及2038问题的解决方案
  • 原文地址:https://www.cnblogs.com/pluse/p/5531523.html
Copyright © 2011-2022 走看看