![リモートソースからの動的 motd メッセージですか?](https://rvso.com/image/1606686/%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%8B%E3%82%89%E3%81%AE%E5%8B%95%E7%9A%84%20motd%20%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
モートLinux ユーザーにようこそログイン メッセージを表示できます。
リモート URL を取得するように motd を構成することは可能ですか?
シナリオ例:
Python 2 のサポート終了についてユーザーに通知しますが、期限が過ぎると通知を停止します。
Python2がインストールされていない場合は、このメッセージを抑制します
より複雑なシナリオの例:
- 引数を渡し、それを動的に評価して、この OS はサポートされなくなったことをユーザーに通知します。
答え1
システム全体のメッセージの場合、motd は起動時に生成されます。これは、Ubuntu と Debian が現在行っている方法です。これらには、update-motd
標準ヘッダー、ヒント、アナウンス、システム更新メッセージなどからテキスト ファイルを組み立てるシステムがあります。
ほとんどの場合、motd は という名前の PAM モジュールによって表示されますpam_motd
。(Debian/Ubuntu システムは実際にはモジュールを 2 回呼び出すことで動作します。最初は静的な /etc/motd 用、次に自動生成された /run/motd 用です。)
したがって、より動的なテキスト(ログインしたユーザー名に基づくテキストなど)が必要な場合は、このモジュールの独自のバージョンを作成し、必要な操作を実行できます。
しかし、しないでくださいウェブから直接ファイルを取得するようにしてください。そうするとログインが遅くなり、毎回ユーザーに迷惑をかけることになります。代わりに、ファイルをダウンロードする cronjob を設定し、ファイル名をパラメータとして既存の pam_motd モジュールを呼び出すだけです。
session optional pam_motd.so motd=/tmp/downloaded_message.txt
答え2
/etc/motd
単なる静的なテキスト ファイルです。
あなたが話していることは、ログイン スクリプトで実装できるもののように思えます。
/etc/profile.d
新しい Linux ディストリビューションには、ユーザーがログインしたときに実行されるスクリプト スニペットをドロップできるディレクトリがある傾向があります。一般的なシェルをすべてカバーするには、このようなスクリプト スニペットの 2 つのバリアントを作成する必要があります。1 つはサフィックス/bin/sh
付きのPOSIX 互換のもの.sh
で、もう 1 つはcsh
サフィックス付きの構文を使用するものです.csh
。
/etc/profile
古いディストリビューションの場合は、および/etc/csh.login
(それぞれすべての POSIXsh
互換シェルおよびcsh
/tcsh
シェル用)に必要な機能を追加できます。
特定のリモート URL に接続し、カスタム HTTP ヘッダーなどの関連するシステム情報を追加するスクリプトを作成することは確かに可能です。リモート側では、この情報を解析して、カスタマイズされたメッセージ テキストで応答できます。
ただし、リモート URL から返される応答が単なるプレーン テキストではなく、実行可能な可能性のあるコンテンツを含む場合、このメカニズムはセキュリティ上の問題になります。リモート URL を含むサーバー (またはネットワーク、またはログイン スクリプト自体) が安全でない場合、侵入者がシステムにアクセスする手段になる可能性があります。これを防ぐには、実装に非常に注意する必要があります。
また、リモート URL にアクセスできない場合やネットワーク リンクがダウンした場合に何が起こるかについても考慮する必要があります。ほとんどのエラー状況では、メッセージ システムがタイムアウトしてログインを続行するようにする必要があります。