Ubuntuでログイン時にバナーを表示する

はじめに

AmazonLinuxとかのサーバにログイン時に表示されるバナーについて、WSLUbuntu+zshでも同じことしてみたいなと思ったのでやってみる。

環境

Windows 11 Professional
Ubuntu 24.04 LTS
WSL2
zsh

バナー表示について

Ubuntuでのバナー表示は、update-motdというところで管理している。

update-motdについて

update-motdとは

update-motd(Message of the Day)は、ユーザーがSSHやターミナルにログインした際に表示される情報メッセージを動的に生成する仕組みである。
システムの状態や管理情報を簡潔に確認できるため、特にサーバー管理者にとって便利なツールとなっている。

動作の仕組み

  1. /etc/update-motd.dディレクトリ内のスクリプトを実行することで、MOTDが生成される。
  2. 各スクリプトは番号でソートされ、昇順で実行される。例えば、00-header10-help-text50-landscape-sysinfoの順で処理が進む。
  3. スクリプトの出力結果は結合され、最終的にログイン時に表示される。

これにより、ログインするたびに最新の情報を動的に反映したメッセージが表示される。

主な構成ファイル

  • /etc/update-motd.d/:MOTD生成スクリプトが配置されるディレクトリ。
  • /etc/motd:生成された最終的なMOTDの内容が一時的に格納される場所。
  • /etc/default/motd-news:ニュースフィード(Canonicalからの情報)の設定ファイル。

カスタマイズ方法

スクリプトの編集

スクリプトを追加・削除することで、MOTDを自由にカスタマイズできる。たとえば、新たに99-custom-messageというスクリプトを作成し、以下の内容を記述すると、カスタムメッセージが表示される。

#!/bin/sh
echo "Welcome to your custom Ubuntu server!"

作成後は、スクリプトに実行権限を付与する。

sudo chmod +x /etc/update-motd.d/99-custom-message

不要なスクリプトの無効化

表示を減らしたい場合、スクリプトを削除するか、無効化すればよい。無効化するには、ファイル名の拡張子を変更する(例:50-landscape-sysinfo50-landscape-sysinfo.disabled)。

静的なメッセージに変更する

動的なMOTDを無効化して、静的なメッセージだけを表示する場合は、以下の手順を実行する。

  1. /etc/motdに表示したいメッセージを直接記述する。
  2. /etc/pam.d/sshd/etc/pam.d/loginpam_motd.soに関連する設定をコメントアウトする。

これにより、ログイン時には静的な内容のみが表示される。

利用例

  • システムの負荷やディスク容量を表示
  • 最新のセキュリティアップデート情報を通知
  • サーバーに特化したカスタムメッセージの表示

例えば、以下のようにディスク使用率を表示するスクリプトを作成できる。

#!/bin/sh
echo "Disk usage:"
df -h / | awk 'NR==2 {print $5}'

zshでupdate-motdを読み込ませる

デフォルトだと、update-motdを読み込んでくれないので、~/.zshrcの末尾に以下を記載する。

~/.zshrc
run-parts /etc/update-motd.d

ログアウトしてログインをし直すと、update-motdの内容が表示される。

バナー表示するスクリプトを作成する

では、/etc/update-motd.d に新しくバナーを表示するスクリプトを用意する。

現在の状態を確認する。

ll /etc/update-motd.d

total 32K
-rwxr-xr-x 1 root root 1.2K Apr 22  2024 00-header
-rwxr-xr-x 1 root root 1.2K Apr 22  2024 10-help-text
lrwxrwxrwx 1 root root   46 Jul 20 17:30 50-landscape-sysinfo -> /usr/share/landscape/landscape-sysinfo.wrapper
-rwxr-xr-x 1 root root 5.0K Apr 22  2024 50-motd-news
-rwxr-xr-x 1 root root  296 Apr  2  2024 91-contract-ua-esm-status
-rwxr-xr-x 1 root root  558 Nov 10  2023 91-release-upgrade
-rwxr-xr-x 1 root root  165 Feb 13  2024 92-unattended-upgrades

30-bannerというスクリプトを作成する。

以下で、バナーを作成する。

sudo vi /etc/update-motd.d/30-banner
30-banner
#!/bin/sh
printf "
   ▄█   ▄█▄ ▀█████████▄  ███    █▄     ▄████████    ▄█    █▄     ▄█
  ███ ▄███▀   ███    ███ ███    ███   ███    ███   ███    ███   ███
  ███▐██▀     ███    ███ ███    ███   ███    █▀    ███    ███   ███▌
 ▄█████▀     ▄███▄▄▄██▀  ███    ███   ███         ▄███▄▄▄▄███▄▄ ███▌
▀▀█████▄    ▀▀███▀▀▀██▄  ███    ███ ▀███████████ ▀▀███▀▀▀▀███▀  ███▌
  ███▐██▄     ███    ██▄ ███    ███          ███   ███    ███   ███
  ███ ▀███▄   ███    ███ ███    ███    ▄█    ███   ███    ███   ███
  ███   ▀█▀ ▄█████████▀  ████████▀   ▄████████▀    ███    █▀    █▀
";

exit 0;

こんな感じで作ってみた。

実行権限を付与しておく。

sudo chmod +x /etc/update-motd.d/30-banner

動作確認

banner-01.png

いいね!

参考

おわりに

ログイン時にビビらせることもできるので、これを使って驚かせよう!

Hugo で構築されています。
テーマ StackJimmy によって設計されています。