Comment / etc / motd est-il mis à jour?

58

Je me demandais comment / etc / motd est automatiquement mis à jour (je suis sur Ubuntu 10.04, édition du serveur). J'ai trouvé la page de manuel update-motd via une recherche Web, mais ce programme n'est pas installé sur ma machine. Le fichier / etc / motd est cependant régulièrement mis à jour. Je ne sais tout simplement pas comment et à quelle fréquence. Lorsque vous faites un locate motd, les fichiers suivants sont listés:

/etc/motd
/etc/update-motd.d
/etc/update-motd.d/00-header
/etc/update-motd.d/10-help-text
/etc/update-motd.d/20-cpu-checker
/etc/update-motd.d/50-landscape-sysinfo
/etc/update-motd.d/90-updates-available
/etc/update-motd.d/91-release-upgrade
/etc/update-motd.d/98-reboot-required
/etc/update-motd.d/99-footer
/home/me/.cache/motd.legal-displayed
/lib/security/pam_motd.so
/usr/bin/motd+shell
/usr/lib/update-manager/release-upgrade-motd
/usr/lib/update-notifier/update-motd-cpu-checker
/usr/lib/update-notifier/update-motd-reboot-required
/usr/lib/update-notifier/update-motd-updates-available
/usr/share/base-files/motd.md5sums
/usr/share/man/man1/motd+shell.1.gz
/usr/share/man/man5/motd.5.gz
/usr/share/man/man5/motd.tail.5.gz
/usr/share/man/man5/update-motd.5.gz
/usr/share/man/man8/pam_motd.8.gz
/usr/share/ubuntu-serverguide/html/C/pam_motd.html
daniel kullmann
la source
Je ne suis pas / etc / motd sur Ubuntu 14.04 LTS. Les fichiers sont maintenant /var/run/motd.dynamic et /run/motd.dynamic, qui sont liés en dur. motd est mis à jour si vous ne vous connectez pas à voix basse. Dans ce cas, vous verriez le contenu créé en dernier lorsqu'un utilisateur se connecte en mode "non pressé".
randominstanceOfLivingThing

Réponses:

57

Il est mis à jour par pam_motdlors de la connexion. La page de manuel update-motd décrit ceci:

   Ubuntu introduced the update-motd framework, by which  the  motd(5)  is
   dynamically assembled from a collection of scripts at login.

   Executable  scripts in /etc/update-motd.d/* are executed by pam_motd(8)
   as the root user at each login, and this information is concatenated in
   /var/run/motd.  The order of script execution is determined by the run-
   parts(8) --lsbsysinit option (basically alphabetical order, with a  few
   caveats).

   On   Ubuntu   systems,  /etc/motd  is  typically  a  symbolic  link  to
   /var/run/motd.
Marius Gedminas
la source
26
vous pouvez forcer avecsudo run-parts /etc/update-motd.d/
Pete
@Pete, j’ai essayé cette commande et, bien qu’elle ait imprimé les informations pertinentes, elle n’a pas réellement modifié le texte /etc/motd. Est-ce attendu?
Snapfractalpop
5
@ Snapfractalpop, Désolé, je me suis trompé. Vous pouvez utiliser des parties d’exécution pour le débogage. Cela vous donnera ce que sera le motd résultant si vous faites des ajouts /etc/update-motd.d. Autant que je sache, le seul moyen de mettre à jour le fichier est de déclencher pam_motd. Sur mon système, il semble que ce soit les services de connexion et sshd ( grep pam_motd /etc/pam.d/*)
Pete
7
@snapfractalpop Oui, c'est prévu. Si vous voulez mettre à jour /etc/motdla sortie, redirigez-la ici:run-parts /etc/update-motd.d/ | sudo tee /etc/motd
n.st
2
Pour accélérer les connexions sur ma machine, je suis passé de libpam-motd à update-motd. Update-motd utilise un cronjob au lieu de déclencher la mise à jour lors de la connexion. sudo apt-get remove libpam-motd; sudo apt-get install update-motd
xer0x
11

La réponse acceptée ci-dessus est correcte mais incomplète. J'espère que cela fournit un peu plus d'informations pour le PO.

En gros, sur une nouvelle installation, le motd est généré à partir de trois emplacements:

  1. Les scripts dans /etc/update-motd.d/
  2. Les fichiers binaires compilés contrôlés par /etc/pam.d/login
  3. Le fichier / etc / legal

Le numéro 3 fait référence au bloc de texte à la fin de votre motd qui inclut "Ubuntu est livré avec ABSOLUMENT AUCUNE GARANTIE ...", c’est le fichier / etc / legal . Cependant, vous ne trouverez rien dans /etc/update-motd.d/ qui le mentionne, et le mot "legal" n'apparaît nulle part dans le fichier /etc/pam.d/login. Son inclusion est devenue obscure et je ne sais vraiment pas comment cela se passe là-bas. Je veux dire, je sais qu’il ya {$ HOME} /. Cache / motd.legal-affiché mais je ne sais pas d’où cela vient (encore).

Le fichier pam.d / login est responsable de la notification des courriels en attente, mais cela n’est pas obscur. Il y a un gentil commentaire décrivant "Imprime le statut de la boîte aux lettres de l'utilisateur en cas de connexion réussie" dans le fichier. Je suppose que techniquement, cela ne fait pas vraiment partie du mot, mais cela se voit à la connexion et si vous êtes nouveau, cette distinction ne sera peut-être pas appréciée.

Sur une nouvelle installation de 14.04, il n’ya pas de fichier / etc / motd. Si vous en créez un (ou créez un motd.static et créez un lien symbolique avec motd), le contenu de ce fichier sera ajouté au texte généré par les scripts update-motd.d, mais le contenu de / etc / legal ne s'affichera plus. Allez comprendre. La notification par e-mail apparaît toujours pour ne pas interrompre le script pam.d / login, donc je doute que / etc / legal soit extrait de là. Son sourcing reste un mystère pour le lecteur. J'ai remarqué que lorsque je supprime le lien (ou le fichier) / etc / motd, l'avertissement juridique ne revient pas immédiatement. Cela prend quelques minutes. Je ne voulais pas voir constamment le disclaimer, j'ai donc supprimé le texte de ce fichier.

À votre santé.

David Kuhl
la source
1
Oh, j'ai oublié une partie. Si vous accédez à votre machine via ssh, un paramètre est également défini dans le fichier / etc / ssh / sshd_config de "PrintLastLog". C'est ce qui contrôle la ligne "Dernière connexion: ...", qui est la dernière chose à imprimer après une connexion réussie. Le réglage sur "non" ne fera pas disparaître la ligne, il suffit de cacher l'adresse IP de la dernière connexion ssh réussie. Encore une fois, cela ne fait pas techniquement partie de la proposition, mais il en va de même de la déclaration de non-responsabilité légale et elle continue à apparaître.
David Kuhl
10

Pour développer un peu la réponse de David Kuhl :

Une nouvelle installation de Ubuntu Server 14.04.1 LTS n’installe apparemment pas les paquetages landscape-common ni update-notifier-common. Ainsi, les scripts suivants ne sont pas installés:

/etc/update-motd.d/50-landscape-sysinfo
/etc/update-motd.d/90-updates-available

Ainsi, pour obtenir toutes les informations de connexion ssh disponibles à partir des serveurs migrés à partir de 12.04 LTS, vous devez installer les packages ci-dessus manuellement:

sudo apt-get install landscape-common update-notifier-common
skithéo
la source