/etc/motd?に名前付きパイプが表示されませんか?

/etc/motd?に名前付きパイプが表示されませんか?

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

  1. ファイルサイズを確認してください。
  2. このサイズのバッファを割り当てます。
  3. ファイル全体をバッファに読み込みます。
  4. 使用された出力方法でバッファを出力します。 (PAMは最終的にモジュラーなので、端末と仮定することはできません。)

パイプにファイルサイズがないため、手順1で失敗します。

編集する:もともとPAMがサイズに興味を持っているのはなぜですか?これは、意図的または意図しないサービス拒否を防ぐためのものであると仮定します。 PAM は、ファイルサイズの確認時にファイルが 64 KB より大きい場合、motd 出力も拒否します。たとえば、誰かがDVDムービーファイルを/ etc / motdに接続した場合、システムにログインしたい人はとても残念です。メモリがどれだけ必要かは言うまでもありません。

おすすめ記事