Debian GNU/Linux Squeeze の MOTD 周りのメモ

12月になったし、MOTD(5) をクリスマス仕様にでもしようかなと /etc/motd を修正しても上手くいかなかったのでメモしておきます。

Debian GNU/Linux の Squeeze サーバに対して SSH 接続すると、デフォルトの状態で「ターミナルログインとしての MOTD」と「PAM の MOTD」が二重に出力されてウザかったので、後者を無効にしていたら、いつの間にか MOTD が全く表示されなくなっていました。デフォルト挙動が変更されたのかな。

まずおさらい

Debian GNU/Linux Squeeze の MOTD は次のようになっています。

/etc/motd -> /var/run/motd
/etc/motd.tail

で、起動時に実行される /etc/init.d/bootmisc.sh にて

[bash]
uname -snrvm > /var/run/motd
[ -f /etc/motd.tail ] && cat /etc/motd.tail >> /var/run/motd
[/bash]

と毎度毎度、motd の中身を書き換えやがります。(/etc/motd または /var/run/motd に記載していた内容は、起動時毎にぶち消されてしまいます。)

永続的なメッセージは /etc/motd.tail に記載せよ、という意図でしょうね。それに従って、表示させたい motd テキストを /etc/motd.tail に記載しておきます。

PAM の設定

本来の motd 表示がどのプロセスで表示されているのかは知りませんが、少なくとも PAM による認証時、pam_motd.so を有効にしておくと motd を吐いてくれます。ちなみに PAM とは、Pluggable authentication module の略で、UNIX 系 OS の共通認証システムの API です。アプリケーションの機能が、一部、特権を必要とする処理を行いたい場合、PAM の API を叩くだけで認証周りの面倒を見てくれる便利な API ですね。SSHD の認証システムにもこの PAM が利用されています。

/etc/pam.d/sshd の次の行のコメントアウトを外しました。

[bash]

Print the message of the day upon successful login.

session    optional     pam_motd.so # [1]
[/bash]

また

[bash]

Print the status of the user’s mailbox upon successful login.

session    optional     pam_mail.so standard noenv # [1]
[/bash]

の部分は、コメントが書いてあるとおり、ログイン成功時にメールボックスのメール件数を表示するモジュールです。

2013-07-23 追記

Wheezy にアップグレードした時からか、いつの間に MOTD が二重表示されるようになりました。
今回は、/etc/ssh/sshd_config の次の部分を変更し、sshd をリスタートすれば二重表示されなくなりました。

[bash]
– PrintMotd yes
+ PrintMotd no
[/bash]

Wheezy では、確認してみたところ bootmisc.sh の起動時毎に上書きする処理や motd.tail がなくなっていますね。ほとんど意味がない上に、ユーザを混乱させるだけだったから廃止されたかな。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください