Linux motd 详解
motd 答疑解惑以及配置指南。
motd 答疑
- motd 能用来干什么
- 一般用来打印提示信息,可以结合使用 crontab 计划任务,将预先准备好的脚本,如系统监控,异常信息收集通过 crontab 在后台定期执行,并把收集到的信息重定向写到
/etc/motd
文件中。在用户登录系统时,就可以显示这些系统监控、异常处理信息了,另外还可利用 motd 发邮件给管理员哪些用户登录了系统。 - 注意:motd 会将所有系统信息与 Canonical(Ubuntu 母公司) 共享
- 一般用来打印提示信息,可以结合使用 crontab 计划任务,将预先准备好的脚本,如系统监控,异常信息收集通过 crontab 在后台定期执行,并把收集到的信息重定向写到
- motd 是如何生效的
- UNIX/Linux 系统管理员通常通过在文件
/etc/motd
中维护文本来向控制台和远程用户传达重要信息,传统上,此文件是静态文本,ubuntu 默认没有此文件,需要自己创建并往里面添加内容也能显示自定义的 motd - 在Ubuntu中,提供了一组脚本在目录
/etc/update-motd.d/
中,在用户登录时,按照脚本名字前缀的数字(00-99,数字越小越优先执行)顺序执行,并将这些脚本的输出保存到文件/run/motd.dynamic
中,最终用户成功登录后,在登录的屏幕界面中打印出来。 - 实际上是通过
/etc/pam.d/login 和 /etc/pam.d/sshd
来输出信息的
- UNIX/Linux 系统管理员通常通过在文件
- motd 如何保存信息的
- 通过执行
/etc/update-motd.d/
中的各种脚本,然后将脚本输出保存在/run/motd.dynamic
中 - 通过
/etc/pam.d/login 和 /etc/pam.d/sshd
来读取并输出保存在/run/motd.dynamic
中的内容
- 通过执行
/etc/update-motd.d/
下的脚本有什么作用00-header
:打印欢迎信息10-help-text
:打印 Ubuntu 帮助信息50-motd-news(重点查看)
:Ubuntu 更新信息及广告信息,可通过设置/etc/default/motd-news
里的ENABLED=0
关闭,在 ubuntu20.04.4 以上版本中没有/etc/default/motd-news
文件,可直接在50-motd-news
的31 行
添加ENABLED=0
,此脚本关联着motd-news.service
以及motd-news.timer
可通过systemctl list-unit-files|grep motd
查看50-landscape-sysinfo
:显示系统使用情况91-release-upgrade
:显示系统更新92-unattended-upgrades
:显示未更新的软件包个数98-reboot-required
:系统重启需要的服务
- 如何查看运行了哪些 motd 脚本
/etc/update-motd.d/
下有执行权限的脚本代表已经被 motd 运行
- 如何自定义 motd?
- 在大多数 Linux 分发版中,可以直接修改
/etc/motd
文件来定制任何想要的提示信息,修改方法是将需要打印的提示消息文件粘贴到该文件中即可(一些可执行命令或脚本在文件中仅仅被当作是普通字符/文本)。/etc/motd 内的文本消息是固定不变,除非我们手动修改它。因此,在/etc/motd 中定制的消息是静态 MOTD。 - 但在 ubuntu 中需要将你的脚本复制到
/etc/update-motd.d/
目录中,如我这里添加了:99-info
的脚本 - 文件名必须是两位数,后跟连字符,然后是脚本的通用名称或参考。文件不应包含扩展名。该文件可以是您的系统能够运行的任何可执行类型
- 开启自定义的 motd :
chmod +x 99-info
,系统会扫描 /etc/update-motd.d/ 目录并启用已经赋权的脚本
- 在大多数 Linux 分发版中,可以直接修改
- 禁用 Motd 脚本
- 方法一(禁用所有登录信息显示):修改
/etc/pam.d/login 和 /etc/pam.d/sshd
配置文件,注释下面两行参数- bash
# session optional pam_motd.so motd=/run/motd.dynamic # session optional pam_motd.so noupdate
- 方法二(禁用所有登录信息显示):设置目录权限禁止调用 Update MOTD 脚本文件,简单粗暴
sudo chmod -x /etc/update-motd.d/*
- 禁用单个脚本,如:
sudo chmod -x /etc/update-motd.d/00-header
- 禁止显示最后登录信息:
sudo vim /etc/ssh/sshd_config
增加配置信息PrintLastLog no
重启 ssh 服务sudo /etc/init.d/ssh restart
- 为某个用户禁用 MOTD:要为某个用户禁用 MOTD,请将一个空白文件添加到用户的主目录。命名文件
.hushlogin
。通过运行创建它:touch $HOME/.hushlogin
然后重新登录就看不到 motd 消息了。
- 方法一(禁用所有登录信息显示):修改
- 非 Debian/Ubuntu 如何使用 motd
- 在 RHEL/CentOS 中不可能实现像在 Debian/Ubuntu 中这样的功能,因为 RHEL/CentOS 并没有提供与之相关的任何脚本。我们可以通过环境变量文件,如 /etc/profile、/etc/bashrc 等,将需要执行的命令或脚本添加到这些文件末尾,这样当每次用户登陆时,系统就会读取这些文件,执行文件里定义好的脚本。除此之外,也可以结合使用 crontab 计划任务,将预先准备好的脚本,如系统监控,异常信息收集通过 crontab 在后台定期执行,并把收集到的信息重定向写到 /etc/motd 文件中。在用户登录系统时,就可以显示这些系统监控、异常处理信息了。
- 开启 SSH 服务打印 MOTD 消息,配置文件
/etc/ssh/sshd_config
,确认是否如下配置PrintMotd yes
- 修改
/etc/motd
文件,将提示消息粘贴到该文件中- bash
*************************************************** * 注意: 这是一台重要的生产服务器,请谨慎操作!! * ***************************************************
- 参考
- 默认 motd 是什么样子的?
- bash
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-113-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Sat Jun 11 18:22:21 CST 2022 System load: 0.0 Processes: 109 Usage of /: 10.7% of 39.12GB Users logged in: 0 Memory usage: 23% IPv4 address for eth0: 192.168.121.153 Swap usage: 0% IPv4 address for eth1: 192.168.121.108 0 updates can be applied immediately. *** System restart required *** Last login: Sat Jun 11 17:02:57 2022 from 192.168.121.1