Wie stelle ich in Debian Jessie 8.2 eine dynamische Botschaft des Tages (motd) für ssh ein?

16

Ich hätte gerne ein dynamisches Motiv, aber ich kann nicht herausfinden, wie das geht.

Ich habe versucht , was ich gefunden habe, und fügte hinzu /etc/update-motd.d/00-header, 10-sysinfo, 90-footer, und SymLink auf /etc/motd /var/run/motd.dynamic, /run/motd.dynamic, /run/motdoder /var/run/motd.

Ich habe diese Zeilen 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

Ich bin auch mit systemd verwechselt.

Gibt es eine Möglichkeit, dies zu tun? Könnte jemand ein Beispiel mit einem einfachen Vermögen geben?

batisteo
quelle
Wäre da nicht pam_motd.so noupdatedas Problem?
Jakuje

Antworten:

11

Ich bin in der Lage, einfaches Dynamic-Motd mit Glücksbeispiel auf meinem Debian Jessie 8.2-Host wie folgt zu testen und habe festgestellt, dass das Problem mit einem fehlerhaften Verhalten zusammenhängt.

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

Erstellt zwei Testdateien wie folgt und macht sie ausführbar

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

Zu diesem Zeitpunkt gab es jedoch keine Änderung des Motivs. Also habe ich den sshd-Prozess gestartet. Aus diesem Trace (interessante Teile siehe unten) können Sie ersehen, dass die neu erstellte Datei motd.new in / var / run / motd umbenannt wurde. Es wird jedoch später versucht, aus /run/motd.dynamic zu lesen - was nie erstellt wurde

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

Das Problem scheint auf Inkonsistenzen mit dem Modul pam_motd zurückzuführen zu sein. Siehe Fehlerbericht https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=743286;msg=2

Einfach motd Datei Standortwechsel von /run/motd.dynamiczu /run/motdin /etc/pam.d/sshd- macht es für mich arbeiten

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

Hier ist das MOTD-Beispiel, das beim SSH-Login angezeigt wurde ...

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
quelle
Danke, es hat geholfen! Ich musste das .newam Ende hinzufügen in /etc/pam.d/sshd: session optional pam_motd.so motd=/run/motd.newund verlinken sudo ln ds /run/motd /etc/motd. Und ich habe es vergessen, export LANG="eo"um das Vermögen zu sehen.
Batisteo
Diese Lösung funktioniert auch für Debian 7.
Azmeuk
Diese grundlegende Lösung funktioniert auch für Debian Stretch 9 mit einer kleinen Änderung - die zu lesende Datei ist jetzt/run/etc/motd.dynamic.new
cam8001
12

Dies hat sich im Laufe der Jahre geändert:

Zuerst war da /etc/motd(statisch).

Dann hat Ubuntu ein eigenes Paket entwickelt, update-motddas auf einem Skript basiert, das von cron aufgerufen wurde.

Schließlich kopierte PAM Ubuntus Idee von /etc/update-motd.d/, und daher haben Debian und andere auch dieses Verhalten.

Hier gibt es eine Erklärung

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

So sieht es aktuell aus: PAM liest nur /var/run/motd.dynamicund /etc/motdob es existiert (Einfügen aus dem Beitrag)

  • /etc/motd- Die klassische, statische Datei. Gibt es in Ubuntu 16.04 LTS nicht mehr, auch nicht als symbolische Verknüpfung zu / var / run / motd. Wenn es erstellt wird, wird jedoch auch sein Inhalt gedruckt.
  • /var/run/motd- Dies wurde von Ubuntus erster Implementierung verwendet. Es wird nicht mehr verwendet. Es wird von PAM einfach ignoriert.
  • /var/run/motd.dynamic- Dies wird aktuell beim Login angezeigt. Es wird bei jedem Start von /etc/init.d/motd aktualisiert. Es wird auch von PAM aktualisiert, indem die Skripte in /etc/update-motd.d/ ausgeführt werden, sofern sie vorhanden sind.
  • /etc/motd.tail- Das Ubuntu-Paket, mit dem /etc/update-motd.d gefüllt wird. Einer von ihnen hat den Inhalt dieser Datei kategorisiert, sodass statische Inhalte einfach hinzugefügt werden konnten. Dieses Skript ist nicht mehr im Paket enthalten, daher hat die Datei nicht den beabsichtigten Effekt.

Das Beispiel aus der 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
quelle