web-dev-qa-db-fra.com

MOTD est mis à jour très rarement

Je comprends que pam_motd met à jour le MOTD lors de la connexion, mais parfois, ce dernier n’est tout simplement pas mis à jour pendant des jours et je suis perplexe quant à ce qui pourrait en être la raison. J'aimerais ajouter uptime et who au MOTD, en les appelant correctement à partir de scripts /etc/update-motd.d/, mais il semble assez inutile de montrer aux utilisateurs des informations obsolètes.

De la page de manuel update-motd:

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).

A ma connaissance, le MOTD devrait être mis à jour à chaque connexion. Mais ça ne l'est pas. Et je ne trouve pas de script qui met à jour manuellement le MOTD. Je pourrais ajouter une ligne run-parts à la cron, mais je ne pense pas que ce soit la bonne façon de résoudre ce problème, car cela ressemble à un hack ou à une solution de contournement.

Mon dernier espoir était de définir /etc/pam.d/login comme ceci:

# Prints the message of the day upon succesful login.
# (Replaces the `MOTD_FILE' option in login.defs)
# This includes a dynamically generated part from /run/motd.dynamic
# and a static (admin-editable) part from /etc/motd.
#session    optional   pam_motd.so  motd=/run/motd.dynamic noupdate
session    optional   pam_motd.so  motd=/run/motd.dynamic
session    optional   pam_motd.so

Je pensais que supprimer noupdate résoudrait le problème, mais ce n’est pas le cas.

7
MegaBrutal

J'ai récemment rencontré le même problème. Vous devrez éditer /etc/pam.d/sshd pour supprimer ou commenter la noupdate également.

4
chrishas35

update-motd est un script simple qui s'exécute:

   run-parts --lsbsysinit /etc/update-motd.d 2>/dev/null

selon run-parts manuel:

   If  the  --lsbsysinit  option  is given, then the names must not end in
   .dpkg-old  or .dpkg-dist or .dpkg-new or .dpkg-tmp, and must belong  to
   one  or more of the following namespaces: the LANANA-assigned namespace
   (^[a-z0-9]+$);   the   LSB   hierarchical   and   reserved   namespaces
   (^_?([a-z0-9_.]+-)+[a-z0-9]+$);  and  the  Debian cron script namespace
   (^[a-zA-Z0-9_-]+$).

Donc, afin de vérifier si le problème est lié au nom du fichier update-motd, essayez:

   run-parts --test --lsbsysinit /etc/update-motd.d

cette commande affiche les noms des scripts à exécuter, mais ne les exécute pas réellement.

3
Lety