web-dev-qa-db-fra.com

Comment définir un message dynamique de la journée (MOTD) à Debian Jessie 8.2 pour SSH?

J'aimerais avoir un moth dynamique, mais je ne peux pas comprendre comment le faire.

J'ai essayé ce que j'ai trouvé, ajoutant /etc/update-motd.d/00-header, 10-sysinfo, 90-footer et symbolique à /etc/motd/var/run/motd.dynamic, /run/motd.dynamic, /run/motd ou /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 offrir un exemple avec une fortune simple?

16
batisteo

Je suis capable de tester de simples moteurs dynamiques avec l'exemple de Fortune sur mon hôte de Debian Jessie 8.2 comme ci-dessous et trouvé que le problème est 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 ont fait exécuter

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-là, il n'y avait pas de changement de MOTD. Donc, je strace'd sshd process.from Cette trace (pièces intéressantes présentées ci-dessous), vous pouvez voir que le fichier MOTD.New nouvellement créé est renommé TO/VAR/VAR/RUN/MOTD. Cependant, il tente plus tard de lire 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/motd dans /etc/pam.d/sshd - le 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 de 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
11
VenkatC

Cela a changé au fil des ans:

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

Ensuite, Ubuntu est venu avec leur propre paquet update-motd Basé sur un script appelé de 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/

C'est donc la façon dont les choses sont actuellement: PAM va simplement lire /var/run/motd.dynamic et /etc/motd Si cela existe (Coller de Poste)

  • /etc/motd - Le fichier classique et statique. N'existe plus dans Ubuntu 16.04 LTS, pas même en tant que lien symbolique vers/var/run/motd. S'il est créé, mais son contenu sera également imprimé.
  • /var/run/motd - Ceci a été utilisé par la première mise en œuvre de Ubuntu. Il n'est plus utilisé. C'est juste ignoré par PAM.
  • /var/run/motd.dynamic - C'est ce qui est montré sur la connexion actuellement. 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 package Ubuntu utilisé pour remplir /etc/update-motd.d. L'un d'entre eux chat le contenu de ce fichier serait donc facile d'ajouter du contenu statique. Ce script n'existe plus dans l'emballage, le fichier n'a donc pas l'effet prévu.

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/*
12
nachoparker