Non ti perdi nulla di ovvio. Ho scavato nella fonte del pam_motd
modulo per capirlo.
Il trucco è che pam_motd
fa quanto segue con /etc/motd
:
- Controlla la dimensione del file.
- Assegna un buffer di quella dimensione.
- Leggi l'intero file nel buffer.
- Invia il buffer attraverso qualunque metodo di output sia in uso. (PAM è modulare, dopotutto; non posso presumere che sia un terminale.)
Poiché una pipe non ha una dimensione di file, questo fallisce al passaggio 1.
MODIFICA :Perché PAM è preoccupata per le dimensioni in primo luogo? Immagino che sia per prevenire negazioni del servizio, intenzionali o non intenzionali. Quando PAM controlla la dimensione del file, si rifiuta anche di emettere il motd se il file è più grande di 64 kbyte. Immagino che chiunque abbia provato ad accedere al sistema sarebbe molto triste se qualcuno riuscisse a reindirizzare un file di film in DVD in /etc/motd, per esempio -- per non parlare della quantità di memoria che potrebbe richiedere.
Questo link ti guiderà attraverso tutti i passaggi essenziali