web-dev-qa-db-ja.com

MOTDはめったに更新されません

pam_motdはログイン時にMOTDを更新することを理解していますが、MOTDが数日間更新されない場合があり、その理由がわからないことがあります。 uptimeおよびwho出力をMOTDに追加し、/etc/update-motd.d/スクリプトから適切に呼び出したいのですが、ユーザーに古い情報が表示された場合、まったく意味がありません。

update-motd manページから:

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).

私の理解では、MOTDはログインごとに更新する必要があります。しかし、そうではありません。また、MOTDを手動で更新するスクリプトは見つかりません。 run-parts行をcronに追加できますが、ハックや回避策のように感じるため、この問題を解決する適切な方法だとは思いません。

私の最後の希望は、/etc/pam.d/loginを次のように設定することでした。

# Prints the message of the day upon succesful login.
# (Replaces the `MOTD_FILE' option in login.defs)
# This includes a dynamically generated part from /run/motd.dynamic
# and a static (admin-editable) part from /etc/motd.
#session    optional   pam_motd.so  motd=/run/motd.dynamic noupdate
session    optional   pam_motd.so  motd=/run/motd.dynamic
session    optional   pam_motd.so

noupdateを削除すると問題は解決すると思いましたが、解決しません。

7
MegaBrutal

最近、同じ問題に遭遇しました。 /etc/pam.d/sshdを編集して、そこのnoupdateも削除またはコメント化する必要があります。

4
chrishas35

update-motdは、実行する単純なスクリプトです。

   run-parts --lsbsysinit /etc/update-motd.d 2>/dev/null

run-parts manual:

   If  the  --lsbsysinit  option  is given, then the names must not end in
   .dpkg-old  or .dpkg-dist or .dpkg-new or .dpkg-tmp, and must belong  to
   one  or more of the following namespaces: the LANANA-assigned namespace
   (^[a-z0-9]+$);   the   LSB   hierarchical   and   reserved   namespaces
   (^_?([a-z0-9_.]+-)+[a-z0-9]+$);  and  the  Debian cron script namespace
   (^[a-zA-Z0-9_-]+$).

そのため、問題がupdate-motdファイル名に関連しているかどうかを確認するには、次を試してください。

   run-parts --test --lsbsysinit /etc/update-motd.d

このコマンドは、実行されるスクリプトの名前を出力しますが、実際には実行しません。

3
Lety