新しいmotdスクリプトは実行されません

新しいmotdスクリプトは実行されません

他のすべてのスクリプトのように実行される99-wlan0-RWB新しいスクリプトを作成しました。/etc/update-motd.d単独で実行するか、経由で実行すると機能しますrun-partsが、ログインすると機能しません。何が問題ですか? (ラズベリーパイでも同じ問題が発生しました。まったくスクリプトを実行していますupdate-motd.d。 )(には何もありません/var/log/syslog。)

$ ssh root@mini31
Linux mini31 4.19.0-18-amd64 #1 SMP Debian 4.19.208-1 (2021-09-29) x86_64
External IP: xx.yyy.zzz.www
 ______________________________________
/ 1st graffitiist: QUESTION AUTHORITY! \
|                                      |
\ 2nd graffitiist: Why?                /
 --------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
df: 43G (81%)
    O2: 1.65 GB / 3.3 GB
Lebara: 6.49 MB / 66 MB
up: 10 days, la: 1:0.11, 5:0.14, 15:0.10
mssql tempdb.mdf is 515M
CPU temp.: +52.0
No mail.
mini31 # cd /etc/update-motd.d/
mini31 # ./98-data
df: 43G (81%)
    O2: 1.65 GB / 3.3 GB
Lebara: 6.49 MB / 66 MB
up: 10 days, la: 1:0.18, 5:0.15, 15:0.10
mssql tempdb.mdf is 515M
CPU temp.: +50.0°C
mini31 # ./99-wlan0-RWB
wlan0 is up
mini31 #

答え1

私も同じ問題があり、何が起こっているのかを調べるのに3日の夜がかかりました。しかし、ファイル名に大文字があります。ファイル名をすべて小文字に変更すると、動作が開始されます。残念ながら、命名規則に関する文書にはこの内容は記載されていません(https://manpages.ubuntu.com/manpages/jammy/en/man5/update-motd.5.htm)

答え2

最新のシステムでは、MOTDはpam_motdPAM認証/権限付与サブシステムによって制御されます(参考資料を参照man pam_motd)。セッションが開かれるとsshdツールによってトリガされます。login

関連項目のソースは次のとおりです。/etc/pam.d/sshd

# Print the message of the day upon successful login.
# 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
session    optional     pam_motd.so  noupdate

最初の項目で参照されているファイルは、/run/motd.dynamic処理ディレクトリの実行可能スクリプトによって生成されます/etc/update-motd.d/。つまり、ユーザーがログインするたびにファイルが更新されます。

2番目の項目は単に固定ファイルの内容を出力します/etc/motd

これで、スクリプトが実行されない理由について2つの提案があります。

  1. リンクされたディレクトリおよび/またはファイルに対する権限が/etc/update-motd.d広すぎます。 (これが問題かどうかはわかりませんが、rootとして実行されるので問題になります。)
  2. PAM定義ファイルのエントリが欠落しているかコメント化されました。

答え3

/etc/motdログイン時の更新方法は次のとおりです。私はこれを私のRPi OSの壊れたシステムでテストしました、それは私にとって効果的です。pam_motd同じまたは類似の結果を得るための別の方法(例:使用)があります。私が注意を払わなければ、単純なMOTDはかなり複雑になりました。これDebian WikimotdRaspberry Pi OS などの Debian ベースのディストリビューションに関するほとんどの詳細を扱い、他の多くの一般的motdなディストリビューションの処理方法もまとめています。

ログイン時にファイルを作成/更新する1つの方法/etc/motdは、ログイン時にコマンドを実行して更新することです。ログインスクリプトの場合は、bashこのファイルで実行できます~/.profile

pi以下は、SSHログインを介して私のシステムで動作する簡単な例です。 userの末尾に追加された1行のコマンドシーケンス~/.profile。変更には権限が必要なので、次のように/etc/motdファイルrootに最も便利に書き込むことができます。teesudo

printf "Hello from .profile for  %s.\n" $USER | sudo tee -a /etc/motd >/dev/null

-a多くのユースケースに適していない可能性があるteeオプションを添付するのは、単に引数を省略してオーバーライド(同等)を呼び出すことです。また、リダイレクトを使用すると、MOTD/etc/motd>-a/dev/null繰り返す端末のログイン画面から

メモ:

  1. sudoユーザーがpiファイルに設定を持っているので、ここでは呼び出しが機能します。現在NOPASSWDsudoers基本RPi OSブレーカの設定。

  2. SSHログイン用のMOTDマーク制御されているそうです。/etc/ssh/sshd_configパス()からPrintMotdしかし、、Debianディストリビューションの場合、このオプションをデフォルト値()noに設定する必要があり、MOTDは1回、再度から2回出力されます。sshdyessshdpam_motd

  3. reのコメントを読んでください~/.profile~/.bash_profileまたは存在します~/.bash_login

関連情報