Come impostare un messaggio dinamico del giorno (motd) in Debian Jessie 8.2 per ssh?


16

Vorrei avere un motivo dinamico, ma non riesco a capire come farlo.

Ho provato quello che ho trovato, aggiungendo /etc/update-motd.d/00-header, 10-sysinfo, 90-footer, e un collegamento simbolico a /etc/motd /var/run/motd.dynamic, /run/motd.dynamic, /run/motdo /var/run/motd.

Ho queste righe in /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

Sono anche confuso con systemd.

C'è un modo per fare questo? Qualcuno potrebbe fornire un esempio con una semplice fortuna?


non pam_motd.so noupdatesarebbe il problema lì?
Jakuje,

Risposte:


11

Sono in grado di testare un dinamico motd dinamico con un esempio di fortuna sul mio host Debian Jessie 8.2 come di seguito e ho riscontrato che il problema era correlato a un comportamento errato.

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

Creato due file di test come di seguito e li ha resi eseguibili

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

Tuttavia, in questo momento, non vi è stato alcun cambiamento nel motd. Quindi ho seguito il processo sshd. Da quella traccia (parti interessanti mostrate di seguito), puoi vedere che il file motd.new appena creato viene rinominato in / var / run / motd. Tuttavia, in seguito sta cercando di leggere da /run/motd.dynamic, che non è mai stato creato

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

Il problema sembra essere correlato a incoerenze con il modulo pam_motd. Vedi segnalazione bug https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=743286;msg=2

Semplicemente cambiando la posizione del file motd da /run/motd.dynamica /run/motdin /etc/pam.d/sshd- lo fa funzionare per me

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

Ecco l'esempio MOTD visto durante l'accesso 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

Grazie, mi ha aiutato! Ho dovuto aggiungere il .newalla fine in /etc/pam.d/sshd: session optional pam_motd.so motd=/run/motd.newe link sudo ln ds /run/motd /etc/motd. E mi sono dimenticato export LANG="eo"di vedere la fortuna.
Batisteo,

Questa soluzione funziona anche con Debian 7.
Azmeuk,

Questa soluzione di base funziona anche con Debian Stretch 9, con una piccola modifica: il file da leggere è ora/run/etc/motd.dynamic.new
cam8001,

12

Questo è cambiato nel corso degli anni:

Prima c'era /etc/motd(statico).

Quindi Ubuntu ha creato il proprio pacchetto update-motdbasato su uno script chiamato da cron.

Infine, PAM ha copiato l'idea di Ubuntu di /etc/update-motd.d/, e quindi Debian e altri hanno anche quel comportamento.

C'è una spiegazione qui

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

Ecco come stanno le cose attualmente: PAM leggerà /var/run/motd.dynamice /etc/motdse esiste (incolla dalla posta)

  • /etc/motd- Il classico file statico. Non esiste più in Ubuntu 16.04 LTS, nemmeno come collegamento simbolico a / var / run / motd. Se viene creato, tuttavia verrà stampato anche il suo contenuto.
  • /var/run/motd- Questo è stato usato dalla prima implementazione di Ubuntu. Non viene più utilizzato. Viene semplicemente ignorato da PAM.
  • /var/run/motd.dynamic- Questo è ciò che viene mostrato attualmente al login. È aggiornato da /etc/init.d/motd ad ogni avvio. Viene inoltre aggiornato da PAM eseguendo gli script in /etc/update-motd.d/, se presenti.
  • /etc/motd.tail- Il pacchetto Ubuntu usato per popolare /etc/update-motd.d. Uno di questi avrebbe cat il contenuto di questo file, quindi è stato facile aggiungere contenuto statico. Quello script non esiste più nel pacchetto, quindi il file non ha l'effetto desiderato.

L'esempio dal 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/*
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.