Comment définir un message dynamique du jour (motd) dans Debian Jessie 8.2 pour ssh?

16

J'aimerais avoir un motd dynamique, mais je ne sais pas comment le faire.

J'ai essayé ce que je trouvais, en ajoutant /etc/update-motd.d/00-header, 10-sysinfo, 90-footeret un lien symbolique à /etc/motd /var/run/motd.dynamic, /run/motd.dynamic, /run/motdou /var/run/motd.

J'ai ces lignes dans /etc/pam.d/sshd:

# Print the message of the day upon successful login.
# 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
session    optional     pam_motd.so noupdate

Je suis également confondu avec systemd.

Y a-t-il un moyen de faire cela? Quelqu'un pourrait-il donner un exemple avec une fortune simple?

batisteo
la source
ne serait pas pam_motd.so noupdatele problème là-bas?
Jakuje

Réponses:

11

Je suis capable de tester un mot-dynamique simple avec un exemple de fortune sur mon hôte Debian Jessie 8.2 comme ci-dessous et j'ai trouvé que le problème était lié à un comportement de buggy.

mkdir /etc/update-motd.d
cd /etc/update-motd.d

Créé deux fichiers de test comme ci-dessous et les a rendus exécutables

root@debian:/# cd /etc/update-motd.d/
root@debian:/etc/update-motd.d# ls -l 
total 8
-rwxr-xr-x 1 root root 58 Dec  1 23:21 00-header
-rwxr-xr-x 1 root root 41 Dec  1 22:52 90-fortune
root@debian:/etc/update-motd.d# cat 00-header 
#!/bin/bash
echo
echo 'Welcome !! This is a header'
echo
root@debian:/etc/update-motd.d# cat 90-fortune 
#!/bin/bash
echo
/usr/games/fortune
echo

Cependant à ce moment, il n'y a pas eu de changement de motd. Donc, je strace'd processus sshd. À partir de cette trace (parties intéressantes illustrées ci-dessous), vous pouvez voir que le fichier motd.new nouvellement créé est renommé en / var / run / motd. Cependant, il essaie plus tard de lire à partir de /run/motd.dynamic - qui n'a jamais été créé

20318 rename("/var/run/motd.new", "/var/run/motd") = 0
20318 open("/run/motd.dynamic", O_RDONLY) = -1 ENOENT (No such file or directory)
20318 open("/etc/motd", O_RDONLY)       = 8

Le problème semble être lié aux incohérences avec le module pam_motd. Voir le rapport de bogue https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=743286;msg=2

Il suffit de changer l' emplacement du fichier motd de /run/motd.dynamicà /run/motden /etc/pam.d/sshd- fait fonctionner pour moi

root@debian:/etc/pam.d# grep pam_motd sshd
#session    optional     pam_motd.so motd=/run/motd.dynamic
session    optional     pam_motd.so motd=/run/motd
session    optional     pam_motd.so noupdate

Voici l'exemple MOTD vu lors de la connexion ssh ...

Welcome !! This is a header


* Culus fears perl - the language with optional errors


The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have new mail.
Last login: Tue Dec  1 23:49:57 2015 from x.x.x.x
VenkatC
la source
Merci, ça a aidé! J'ai dû ajouter le .newà la fin dans /etc/pam.d/sshd: session optional pam_motd.so motd=/run/motd.newet le lien sudo ln ds /run/motd /etc/motd. Et j'ai oublié export LANG="eo"pour voir la fortune.
batisteo
Cette solution fonctionne également pour debian 7.
azmeuk
Cette solution de base fonctionne également pour Debian Stretch 9, avec un petit ajustement - le fichier à lire est maintenant/run/etc/motd.dynamic.new
cam8001
12

Cela a changé au fil des ans:

Il y a d'abord eu /etc/motd(statique).

Ubuntu a ensuite créé son propre package update-motdbasé sur un script appelé depuis cron.

Enfin, PAM a copié l'idée d'Ubuntu de /etc/update-motd.d/, et donc Debian et d'autres ont également ce comportement.

Il y a une explication ici

https://ownyourbits.com/2017/04/05/customize-your-motd-login-message-in-debian-and-ubuntu/

Voici donc comment les choses se passent actuellement: PAM va simplement lire /var/run/motd.dynamicet /etc/motds'il existe

  • /etc/motd- Le fichier classique et statique. N'existe plus dans Ubuntu 16.04 LTS, même pas en tant que lien symbolique vers / var / run / motd. S'il est créé, son contenu sera également imprimé.
  • /var/run/motd- Ceci a été utilisé par la première implémentation d'Ubuntu. Il n'est plus utilisé. Il est simplement ignoré par PAM.
  • /var/run/motd.dynamic- C'est ce qui s'affiche actuellement lors de la connexion. Il est mis à jour par /etc/init.d/motd à chaque démarrage. Il est également mis à jour par PAM en exécutant les scripts dans /etc/update-motd.d/, s'ils existent.
  • /etc/motd.tail- Le paquet Ubuntu utilisé pour remplir /etc/update-motd.d. L'un d'eux catcherait le contenu de ce fichier, il était donc facile d'ajouter du contenu statique. Ce script n'existe plus dans le package, donc le fichier n'a pas l'effet voulu.

L'exemple du post

mkdir /etc/update-motd.d
rm -f /etc/motd                  # in Debian still exists
cat > /etc/update-motd.d/10logo <<EOF
#!/bin/sh
echo
cat /etc/issue
EOF

cat > /etc/update-motd.d/20updates <<'EOF'
#!/bin/sh
echo
echo "uptime is $( uptime )"
echo "date   is $( date   )"
EOF

chmod a+x /etc/update-motd.d/*
nachoparker
la source