Size: 6716
Comment: sync with english master
|
Size: 6685
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
Una lamentela riguardo al modo in cui Ubuntu e Debian sovrascrivano i cambiamenti degli utenti
Pagina di manuale per motd più semplice che è stato possibile trovare