Differences between revisions 5 and 6
Revision 5 as of 2017-04-16 15:49:48
Size: 6716
Comment: sync with english master
Revision 6 as of 2017-04-23 01:05:24
Size: 6685
Editor: PaulWise
Comment: use Debian manpages
Deletions are marked like this. Additions are marked like this.
Line 10: Line 10:
L'effettivo motd viene generato e stampato da pam_motd, vedere la sua [[https://linux.die.net/man/8/pam_motd|pagina di manuale]]. L'effettivo motd viene generato e stampato da pam_motd, vedere la sua [[DebianMan:8/pam_motd|pagina di manuale]].
Line 141: Line 141:
 * [[http://linux.die.net/man/5/motd|Pagina di manuale per motd più semplice che è stato possibile trovare]]  * [[DebianMan:5/motd|Pagina di manuale per motd più semplice che è stato possibile trovare]]

Traduzioni: English - Français - Italiano


Wheezy e successive

Attualmente /etc/motd è modificabile dall'utente e statico in Wheezy: il file non viene riscritto al riavvio.

L'effettivo motd viene generato e stampato da pam_motd, vedere la sua pagina di manuale.

/etc/motd in Debian in passato e in Squeeze

Debian ha un modo particolare di gestire /etc/motd. Il "messaggio del giorno" (motd) viene aggiornato ad ogni avvio, con uno script di avvio (/etc/init.d/bootmisc.sh in lenny e precedenti, /etc/init.d/bootlogs in squeeze e successive), che fondamentalmente esegue quanto segue:

uname -snrvm > /var/run/motd
[ -f /etc/motd.tail ] && cat /etc/motd.tail >> /var/run/motd

Dato che in Debian /etc/motd è un collegamento simbolico a /var/run/motd, questo funziona.

Come aggiornare il proprio /etc/motd

Dato che /etc/motd in pratica viene sovrascritto ad ogni riavvio, è necessario aggiornare invece /etc/motd.tail e poi o riavviare (!!) oppure poi eseguire i comandi indicati sopra. Esiste una segnalazione di bug (437176) per fornire un comando più semplice per permettere di aggiornare solamente /etc/motd.tail.

Come aggiornare automaticamente con script il proprio /etc/motd

Una cosa meno nota riguardo /etc/motd in Debian e Ubuntu è che pam di fatto aggiorna /etc/motd semplicemente in base agli script in /etc/update-motd.d. Perciò per replicare gli script indicati in precedenza si può anche usare:

mkdir /etc/update-motd.d
cat > /etc/update-motd.d/10uname <<EOF
#! /bin/sh
uname -snrvm > /var/run/motd
EOF
cat > /etc/update-motd.d/20tail <<EOF
#! /bin/sh
[ ! -f /etc/motd.tail ] && exit 0
cat /etc/motd.tail >> /var/run/motd
EOF
chmod a+x /etc/update-motd.d/*

Si potrebbero quindi aggiungere altri script alla propria directory /etc/update-motd.d per aggiungere cose nel proprio /etc/motd. Vedere la pagina di manuale per maggiori informazioni.

Notare che questa tecnica usa una patch che viene fornita solamente in Debian e Ubuntu e non è compresa in PAM originale a monte. Inoltre, questo codice ha avuto in passato problemi di sicurezza (CVE-2010-0832, questo bug).

Come evitare che il proprio /etc/motd venga sovrascritto

rm /etc/motd
cat > /etc/motd <<EOF
Questo è il mio messaggio del giorno!
EOF

In questo modo, /etc/motd non è più un collegamento simbolico a quello aggiornato e sarà quindi per sempre lasciato così come è. Il rovescio della medaglia è che il motd non mostrerà la versione del kernel più recente.

Approccio "Non toccare il mio motd" in stile "vecchia scuola"

Questo approccio, simile al precedente, garantisce di poter visualizzare informazioni dinamiche:

cat > /etc/profile.d/uname <<EOF
#!/bin/sh
uname -snrvm
EOF
rm /etc/motd
cat > /etc/motd <<EOF
Problemi noti
============

 * kerkuffle è noto per non riavviarsi in modo corretto al riavvio del sistema, per riavviarlo usare il comando
   service kerkuffle restart

Chi è responsabile di /etc/motd?

Ecco un elenco di pacchetti che se ne occupano:

base-files: /usr/share/base-files/motd
base-files: /usr/share/base-files/motd.md5sums
manpages: /usr/share/man/man5/motd.5.gz
manpages: /usr/share/man/man5/motd.tail.5.gz
libpam-modules: /lib/x86_64-linux-gnu/security/pam_motd.so
initscripts: /etc/init.d/bootlogs
  • base-files praticamente si occupa di installare motd all'avvio ma non lo sostituisce in occasione degli aggiornamenti (vedere /usr/share/doc/base-files/README)

  • le manpage spiegano il funzionamento di motd e motd.tail

  • libpam-modules ha un modulo pam_motd che visualizza il file motd. Ha inoltre una patch (in squeeze e successive, da Ubuntu) per eseguire gli script in /etc/update-motd.d per aggiornare il motd al login.

Cosa fanno gli altri

Ubuntu

A partire da Ubuntu Intrepid Ibex (2008.10), Ubuntu ha una directory /etc/update-motd.d/, da cui vengono eseguiti gli script per aggiornare il file /etc/motd file. Questo è ora compreso nel modulo pam_motd, che aggiorna il file /var/run/motd, usando questo codice C:

    if (do_update && (stat("/etc/update-motd.d", &st) == 0)
        && S_ISDIR(st.st_mode))
    {
       mode_t old_mask = umask(0022);
       if (!system("/usr/bin/env -i PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ru
n-parts --lsbsysinit /etc/update-motd.d > /var/run/motd.new"))
           rename("/var/run/motd.new", "/var/run/motd");
       umask(old_mask);
     }

Per un breve periodi, ciò veniva invece fatto dal pacchetto update-motd ogni 10 minuti.

Ubuntu in modo predefinito viene fornita con un insieme di script che aggiungono il numero di pacchetti da aggiornare (ad esempio).

Gentoo

Gentoo non mostra in modo predefinito il file motd, ma ciò può essere abilitato in login.defs, vedere questa pagina wiki.

Arch, CentOS e altri

Secondo questa pagina wiki, Arch non sembra fare nulla di particolare con /etc/motd tranne visualizzarlo all'avvio.

FreeBSD

Anche in FreeBSD, il file motd viene generato con uno script di avvio, che preserva le modifiche cambiando solo la riga che corrisponde (più o meno) all'uname aggiornato all'avvio. Le righe magiche sono:

T=`mktemp -t motd`
uname -v | sed -e 's,^\([^#]*\) #\(.* [1-2][0-9][0-9][0-9]\).*/\([^\]*\) $,\1 (\3) #\2,' > ${T}
awk '{if (NR == 1) {if ($1 == "FreeBSD") {next} else {print "\n"$0}} else {print}}' < /etc/motd >> ${T}

Riferimenti


CategoryCommandLineInterface