motdって?
ログインした時に、メッセージを表示する機能の事です。
おもしろい機能であると同時に便利な機能です。
昔のUNIXでは、/etc/motd にテキストを書いておき、その内容がログイン時に表示されるだけでした。
それでも、そのサーバ独自の機能や、Tips、注意事項などを書いておき、不慣れなオペレータに注意を促すことができたりと便利だったのです。
最近は動的な内容を表示できる
定型文を表示できるだけでも十分便利なのではありますが、今は個人のPCにUNIXを導入する時代です。自分しかログインしないのなら、注意事項よりも動的に便利な情報を表示して欲しい。と思いませんか?
Ubuntuでは、簡単なシステム情報、ニュース、パッケージ更新情報が表示されます。
Ubuntu 19.04 インストール直後のログイン画面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Welcome to Ubuntu 19.04 (GNU/Linux 5.0.0-13-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Tue Apr 23 17:11:53 JST 2019 System load: 0.0 Processes: 134 Usage of /: 13.3% of 29.40GB Users logged in: 1 Memory usage: 10% IP address for enp1s0: 192.168.0.224 Swap usage: 0% * Ubuntu's Kubernetes 1.14 distributions can bypass Docker and use containerd directly, see https://bit.ly/ubuntu-containerd or try it now with snap install microk8s --classic 2 updates can be installed immediately. 0 of these updates are security updates. Last login: Tue Apr 23 21:15:06 2019 from 192.168.0.1 |
これらのシステム情報やUbuntuニュースの表示をどのように実現しているのかは、/etc/update-motd.d/ 以下のファイルを見ればすぐに理解できるとおもいます。
ファイル名の頭に数字をつけ、実行される順番が分かりやすくされています。これらのスクリプトはファイル名の昇順で順に実行されていきます。systemdに置き換えられる前のinitではよく使われた手法です。
1 2 3 4 5 6 7 8 9 10 11 |
root@u1904:~# ls -1 /etc/update-motd.d/ 00-header 10-help-text 50-landscape-sysinfo 50-motd-news 90-updates-available 91-release-upgrade 95-hwe-eol 97-overlayroot 98-fsck-at-reboot 98-reboot-required |
最終行の最新ログイン履歴は、motdではなく、pam_lastlog.soから表示されています。
motdにfortuneを表示させよう
ログイン時にメッセージを表示させる方法が分かったので、さっそくスクリプトを設置してログイン画面をいじってみましょう。
以前、このblogで書いたこともある、fortuneを実行させる事にします。
1 2 3 4 5 6 |
apt-get update apt-get install fortune-mod make nkf git clone https://scm.osdn.net/gitroot/my-fortune/my-fortune.git cd my-fortune ./configure make install |
fortuneとデータがインストールできたので、スクリプトを設置して、実行権限を付与しておきます。
1 2 3 4 5 |
cat << EOS >> /etc/update-motd.d/99-fortune #!/bin/sh /usr/games/fortune my EOS chmod +x /etc/update-motd.d/99-fortune |
準備ができたので、一旦ログアウトしてログインしてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Welcome to Ubuntu 19.04 (GNU/Linux 5.0.0-13-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Wed Apr 24 03:16:55 JST 2019 System load: 0.0 Processes: 132 Usage of /: 13.3% of 29.40GB Users logged in: 1 Memory usage: 11% IP address for enp1s0: 192.168.0.224 Swap usage: 0% * Ubuntu's Kubernetes 1.14 distributions can bypass Docker and use containerd directly, see https://bit.ly/ubuntu-containerd or try it now with snap install microk8s --classic 2 updates can be installed immediately. 0 of these updates are security updates. | | |⌒彡 |冫、) |` / フーン | / |/ | | Last login: Wed Apr 24 03:16:39 2019 from 192.168.0.1 |
いい感じですね 🙂
この仕組みは、Debianでも同じなので(Debianはもっとシンプルですが)同様の方法でmotdを書き換える事が可能です。redhat系はどうなのかな?