Anda tidak melewatkan sesuatu yang jelas. Saya menggali sumber pam_motd
modul untuk mencari tahu yang ini.
Triknya adalah pam_motd
itu lakukan hal berikut dengan /etc/motd
:
- Periksa ukuran file.
- Alokasikan buffer sebesar itu.
- Baca seluruh file ke dalam buffer.
- Keluarkan buffer melalui metode keluaran apa pun yang digunakan. (PAM itu modular, bagaimanapun juga; tidak bisa menganggap itu terminal.)
Karena sebuah pipa tidak memiliki ukuran file, ini gagal pada langkah 1.
EDIT :Mengapa PAM pertama-tama mengkhawatirkan ukuran? Saya membayangkan itu untuk mencegah penolakan layanan, baik disengaja maupun tidak disengaja. Ketika PAM memeriksa ukuran file, itu juga menolak untuk mengeluarkan motd jika file lebih besar dari 64 kbytes. Saya membayangkan siapa pun yang mencoba masuk ke sistem akan sangat sedih jika seseorang berhasil menyalurkan file film DVD ke /etc/motd, misalnya -- belum lagi berapa banyak memori yang mungkin diperlukan.
Tautan ini akan memandu Anda melalui semua langkah penting