/ etc / motdはどのように更新されますか?


58

/ etc / motdがどのように自動的に更新されるのかと思っていました(Ubuntu 10.04、サーバーエディション)。update-motdのマンページをWeb検索で見つけましたが、そのプログラムは私のマシンにインストールされていません。ただし、/ etc / motdファイルは定期的に更新されます。方法と頻度がわかりません。を実行するとlocate motd、次のファイルがリストされます。

/etc/motd
/etc/update-motd.d
/etc/update-motd.d/00-header
/etc/update-motd.d/10-help-text
/etc/update-motd.d/20-cpu-checker
/etc/update-motd.d/50-landscape-sysinfo
/etc/update-motd.d/90-updates-available
/etc/update-motd.d/91-release-upgrade
/etc/update-motd.d/98-reboot-required
/etc/update-motd.d/99-footer
/home/me/.cache/motd.legal-displayed
/lib/security/pam_motd.so
/usr/bin/motd+shell
/usr/lib/update-manager/release-upgrade-motd
/usr/lib/update-notifier/update-motd-cpu-checker
/usr/lib/update-notifier/update-motd-reboot-required
/usr/lib/update-notifier/update-motd-updates-available
/usr/share/base-files/motd.md5sums
/usr/share/man/man1/motd+shell.1.gz
/usr/share/man/man5/motd.5.gz
/usr/share/man/man5/motd.tail.5.gz
/usr/share/man/man5/update-motd.5.gz
/usr/share/man/man8/pam_motd.8.gz
/usr/share/ubuntu-serverguide/html/C/pam_motd.html

Ubuntu 14.04 LTSでは/ etc / motdではありません。ファイルは、ハードリンクされた/var/run/motd.dynamicおよび/run/motd.dynamicです。ハッシュログインを行わない場合、motdは更新されます。その場合、ユーザーが「非ハッシュ」モードでログインすると、最後に作成されたコンテンツが表示されます。
randominstanceOfLivingThing

回答:


57

pam_motdログイン時に更新されます。更新MOTDマニュアルページには、この説明します。

   Ubuntu introduced the update-motd framework, by which  the  motd(5)  is
   dynamically assembled from a collection of scripts at login.

   Executable  scripts in /etc/update-motd.d/* are executed by pam_motd(8)
   as the root user at each login, and this information is concatenated in
   /var/run/motd.  The order of script execution is determined by the run-
   parts(8) --lsbsysinit option (basically alphabetical order, with a  few
   caveats).

   On   Ubuntu   systems,  /etc/motd  is  typically  a  symbolic  link  to
   /var/run/motd.

26
強制することができますsudo run-parts /etc/update-motd.d/
ピート

@Pete、私はそのコマンドを試しましたが、関連する情報を出力しましたが、実際にはのテキストを変更しませんでした/etc/motd。これは予想されますか?
snapfractalpop

5
@snapfractalpop、申し訳ありませんが、私は間違っていました。デバッグにrun-partsを使用できます/etc/update-motd.d。に追加する場合、結果のmotdが吐き出されます。私が知る限り、ファイルを更新する唯一の方法はpam_motdをトリガーすることです。私のシステムでは、サービスのログインとsshd(grep pam_motd /etc/pam.d/*
ピート

7
@snapfractalpopはい、それは期待されています。/etc/motdそこに出力のリダイレクトを更新する場合:run-parts /etc/update-motd.d/ | sudo tee /etc/motd
n.st 14年

2
マシンでのログインを高速化するために、libpam-motdからupdate-motdに切り替えました。Update-motdは、ログイン時に更新をトリガーする代わりにcronjobを使用します。sudo apt-get remove libpam-motd; sudo apt-get install update-motd
xer0x 14年

11

上記の受け入れられた答えは正しいですが、不完全です。これがOPにもう少し情報を提供することを望んでいます。

基本的に、新規インストールでは、motdは3つの場所から生成されます。

  1. /etc/update-motd.d/のスクリプト
  2. /etc/pam.d/loginによって制御されるコンパイル済みバイナリ
  3. / etc / legalファイル

そこにある3番目の番号は、motdの最後にある「Ubuntuには絶対に無保証です...」、つまり/ etc / legalファイルを含むテキストブロックを指します。ただし、/ etc / update-motd.d /でそれについて言及しているものや、/ etc / pam.d / loginファイルのどこにも「legal」という単語は表示されません。その包含は不明瞭にされており、どのようにそこに収まるかは本当にわかりません。{$ HOME} /。cache / motd.legal-displayedがあることは知っていますが、どちらから来たのかはわかりません(まだ)。

pam.d / loginファイルは保留中の電子メールの通知を担当しますが、それは不明瞭ではありません。ファイルには、「ログインに成功するとユーザーのメールボックスの状態を出力する」というコメントがあります。技術的には実際にはmotdの一部ではありませんが、ログイン時に表示され、新しい場合はその細かな区別は認められないかもしれません。

14.04の新規インストールでは、 / etc / motdファイルはありません。作成する(またはmotd.staticを作成してmotdにシンボリックリンクする)と、そのファイルの内容はupdate-motd.dスクリプトによって生成されたテキストに追加されますが、/ etc / legalの内容は表示されなくなります。図を移動します。電子メール通知がまだ表示されるため、これによりpam.d / loginスクリプトが中断されることはないので、/ etc / legalがそこから取り込まれているとは思わない。その調達は読者にとって謎のままです。/ etc / motdリンク(またはファイル)を削除しても、法的免責事項がすぐに戻らないことに気付きました。数分かかります。免責事項を常に表示したくなかったため、そのファイルからテキストを削除しました。

乾杯。


1
ああ、私は一部を忘れました。ssh経由でマシンにアクセスしている場合、「PrintLastLog」の/ etc / ssh / sshd_configファイルにも設定があります。これが、「最後のログイン:...」行を制御するものです。これは、ログインが成功した後に印刷する最後の行です。「no」に設定しても、行は消えません。最後に成功したssh接続のIPアドレスを非表示にするだけです。繰り返しますが、技術的にはmotdの一部ではありませんが、ひどい法的免責事項でもありません。
デビッドクール14

10

David Kuhlの答えを少し拡大するには:

Ubuntu Server 14.04.1 LTSの新規インストールでは、landscape-commonパッケージまたはupdate-notifier-commonパッケージはインストールされないようです。したがって、次のスクリプトはインストールされません。

/etc/update-motd.d/50-landscape-sysinfo
/etc/update-motd.d/90-updates-available

したがって、12.04 LTSから移行したサーバーからすべてのsshログイン情報を入手するには、上記のパッケージを手動でインストールする必要があります。

sudo apt-get install landscape-common update-notifier-common
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.