Traduction(s): English - Français - Italiano


Wheezy et plus récent

Actuellement /etc/motd est modifiable par l'utilisateur et il est statique dans Wheezy. Le fichier ne sera pas écrasé au redémarrage.

Le motd actuel est généré et affiché par pam_motd, voir la page du manuel.

/etc/motd dans Debian Squeeze et avant

Debian a une manière particulière de manipuler /etc/motd. Le motd est mis à jour à chaque redémarrage, dans le script de démarrage (/etc/init.d/bootmisc.sh dans Lenny et avant, /etc/init.d/bootlogs dans Squeeze et après), qui déroule essentiellement les éléments suivants:

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

Depuis /etc/motd est un lien symbolique /var/run/motd dans Debian, cela fonctionne.

Comment mettre à jour votre /etc/motd

Depuis /etc/motd est généralement écrasé à chaque redémarrage, vous avez besoin de mettre à jour à la place /etc/motd.tail à chaque démarrage (!!) ou sinon éditez /etc/motd.tail ou exécuter les commandes ci-dessus. Il y a un rapport de bogue (437176) de fournir une commande plus facile pour vous permettre de mettre à jour seulement /etc/motd.tail.

Comment le script met à jour de votre /etc/motd

Une petite chose moins connue à propos de /etc/motd dans Debian et Ubuntu est que pam va effectivement mettre à jour votre /etc/motd basée simplement sur les scripts dans /etc/update-motd.d. Donc, pour répliquer les scripts ci-dessus, vous pourriez faire:

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

Ensuite, vous pouvez ajouter d'autres scripts à votre répertoire /etc/update-motd.d pour ajouter des choses à votre /etc/motd. Voir la page du manuel pour plus d'informations.

Notez que cette technique utilise un patch qui est livré uniquement avec Debian et Ubuntu et non pris en compte dans PAM en amont. De plus, ce code a eu des problèmes de sécurité dans le passé (CVE-2010-0832, this bug).

Comment éviter à votre /etc/motd d'être écrasé

rm /etc/motd
cat > /etc/motd <<EOF
Ceci est mon message du jour!
EOF

De cette façon, /etc/motd n'est pas un lien symbolique vers une mise à jour plus et restera donc toujours le même. L'inconvénient de ceci est que vous ne verrez pas la dernière version du noyau dans le motd.

Vieille école "ne touchez pas mon motd" approche

Comme ci-dessus, cette approche permet également de d'afficher l'information dynamique...

cat > /etc/profile.d/uname <<EOF
#!/bin/sh
uname -snrvm
EOF
rm /etc/motd
cat > /etc/motd <<EOF
Problèmes connus
============

 * le kerfuffle est connu pour ne pas redémarrer correctement sur le redémarrage, pour redémarrer utiliser la commande
   service kerkuffle restart

De quoi dépend /etc/motd?

Voici une liste des paquets qui font ce travail:

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

Ce que les autres distributions font

Ubuntu

Depuis Ubuntu Intrepid Ibex (2008.10), Ubuntu a un répertoire /etc/update-motd.d/, à partir duquel les scripts sont exécutés pour construire le fichier /etc/motd. Cela est maintenant dans le module pam_motd, qui met à jour le fichier /var/run/motd, en utilisant ce code 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);
     }

Pendant une courte période, cela a été fait par le paquet update-motd toutes les 10 minutes.

Par défaut, Ubuntu est livré avec un ensemble de scripts qui ajoutent le nombre de paquets à mettre à jour (par exemple).

Gentoo

Gentoo n'affiche pas le fichier motd par défaut, mais cela peut être activé dans login.defs, voir cette page wiki.

Arch, CentOS, et autres

Selon cette page wiki, Arch ne semble pas faire autre chose que d'afficher le fichier /etc/motd au démarrage.

FreeBSD

Dans FreeBSD, le fichier motd est également généré un script de boot, qui préservera les modifications en ne modifiant que la ligne qui correspond (lâchement) au uname qui est mis à jour lors des redémarrages. Les lignes magiques :

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}

Références


CategoryCommandLineInterface