Gentoo 3.4.0の実行
最近/etc/motdファイルについて聞いたとき、私はこのファイルでランダムな雄牛のレース占いを表示しようとしました。いくつかのフォーラムに見られるように、デーモンとして機能するランダムなbashスクリプトを書いて、/ etc / motdを名前付きパイプとして提供しました。
パイプがうまく機能するため、スクリプトに問題があるとは思わないが、ログイン時にMOTDが表示されない(通常のファイルを使用すると機能する)!
fira@nyan ~ % cat /etc/motd
_______________________________________
/ We didn't put in ^^ because then we'd \
| have to keep telling people what it |
| means, and then we'd have to keep |
| telling them why it doesn't short |
| circuit. :-/ |
| |
| -- Larry Wall in |
\ <[email protected]> /
---------------------------------------
\
\
.--.
|o_o |
|:_/ |
// \ \
(| | )
/'\_ _/`\
\___)=(___/
私は明らかなものを見逃していますか?
.hushlogin などを使用しないでください。複数のシェルを試してください。パイプはa + rで読み取ることができます。
答え1
あなたは明らかなものを見逃していません。深く研究しました。pam_motd
モジュールソースこれを調べてください。
秘訣はpam_motd
次のことです/etc/motd
。
- ファイルサイズを確認してください。
- このサイズのバッファを割り当てます。
- ファイル全体をバッファに読み込みます。
- 使用された出力方法でバッファを出力します。 (PAMは最終的にモジュラーなので、端末と仮定することはできません。)
パイプにファイルサイズがないため、手順1で失敗します。
編集する:もともとPAMがサイズに興味を持っているのはなぜですか?これは、意図的または意図しないサービス拒否を防ぐためのものであると仮定します。 PAM は、ファイルサイズの確認時にファイルが 64 KB より大きい場合、motd 出力も拒否します。たとえば、誰かがDVDムービーファイルを/ etc / motdに接続した場合、システムにログインしたい人はとても残念です。メモリがどれだけ必要かは言うまでもありません。
答え2
これ協会必要なすべての手順を案内します。