Wie wird / etc / motd aktualisiert?

58

Ich habe mich gefragt, wie / etc / motd automatisch aktualisiert wird (ich bin auf Ubuntu 10.04, Server Edition). Ich habe die update-motd-Manpage über eine Websuche gefunden, aber dieses Programm ist nicht auf meinem Computer installiert. Die Datei / etc / motd wird jedoch regelmäßig aktualisiert. Ich weiß nur nicht wie und wie oft. Dabei locate motdwerden folgende Dateien aufgelistet:

/etc/motd
/etc/update-motd.d
/etc/update-motd.d/00-header
/etc/update-motd.d/10-help-text
/etc/update-motd.d/20-cpu-checker
/etc/update-motd.d/50-landscape-sysinfo
/etc/update-motd.d/90-updates-available
/etc/update-motd.d/91-release-upgrade
/etc/update-motd.d/98-reboot-required
/etc/update-motd.d/99-footer
/home/me/.cache/motd.legal-displayed
/lib/security/pam_motd.so
/usr/bin/motd+shell
/usr/lib/update-manager/release-upgrade-motd
/usr/lib/update-notifier/update-motd-cpu-checker
/usr/lib/update-notifier/update-motd-reboot-required
/usr/lib/update-notifier/update-motd-updates-available
/usr/share/base-files/motd.md5sums
/usr/share/man/man1/motd+shell.1.gz
/usr/share/man/man5/motd.5.gz
/usr/share/man/man5/motd.tail.5.gz
/usr/share/man/man5/update-motd.5.gz
/usr/share/man/man8/pam_motd.8.gz
/usr/share/ubuntu-serverguide/html/C/pam_motd.html
Daniel Kullmann
quelle
Ich bin nicht / etc / motd auf Ubuntu 14.04 LTS. Die Dateien sind jetzt /var/run/motd.dynamic und /run/motd.dynamic, die fest miteinander verbunden sind. motd wird aktualisiert, wenn Sie sich nicht vertuscht haben. In diesem Fall werden die zuletzt erstellten Inhalte angezeigt, wenn ein Benutzer sich im "nicht vertuschten" Modus anmeldet.
randominstanceOfLivingThing

Antworten:

57

Es wird pam_motdbei der Anmeldung aktualisiert . Die Handbuchseite von update-motd beschreibt dies:

   Ubuntu introduced the update-motd framework, by which  the  motd(5)  is
   dynamically assembled from a collection of scripts at login.

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

   On   Ubuntu   systems,  /etc/motd  is  typically  a  symbolic  link  to
   /var/run/motd.
Marius Gedminas
quelle
26
Sie können mitsudo run-parts /etc/update-motd.d/
Pete
@Pete, ich habe diesen Befehl ausprobiert, und obwohl er die relevanten Informationen ausgedruckt hat, hat er den Text tatsächlich nicht geändert /etc/motd. Wird das erwartet?
Snapfractalpop
5
@ snapfractalpop, Sorry, ich habe mich geirrt. Sie können Run-Parts zum Debuggen verwenden, es wird die resultierende Motd ausspucken, wenn Sie Ergänzungen vornehmen /etc/update-motd.d. Soweit ich weiß, kann die Datei nur durch Auslösen von pam_motd aktualisiert werden. Auf meinem System scheint es die Dienste Login und sshd ( grep pam_motd /etc/pam.d/*)
Pete
7
@ snapfractalpop Ja, das wird erwartet. Wenn Sie /etc/motddie Ausgabe dort aktualisieren möchten, leiten Sie sie um:run-parts /etc/update-motd.d/ | sudo tee /etc/motd
4.
2
Um die Anmeldung auf meinem Computer zu beschleunigen, habe ich von libpam-motd auf update-motd umgestellt. Update-motd verwendet einen Cronjob, anstatt das Update beim Login auszulösen. sudo apt-get remove libpam-motd; sudo apt-get install update-motd
xer0x
11

Die oben akzeptierte Antwort ist korrekt, jedoch unvollständig. Ich hoffe, dass dies ein bisschen mehr Informationen für das OP bietet.

Grundsätzlich wird bei einer Neuinstallation die Motd aus drei Stellen generiert:

  1. Die Skripte in /etc/update-motd.d/
  2. Die kompilierten Binärdateien werden von /etc/pam.d/login gesteuert
  3. Die Datei / etc / legal

Nummer 3 bezieht sich auf den Textblock am Ende Ihres Dokuments, der enthält "Ubuntu kommt mit ABSOLUT KEINER GARANTIE ...", das ist die Datei / etc / legal . Unter /etc/update-motd.d/ finden Sie jedoch weder etwas, das dies erwähnt, noch wird das Wort "legal" irgendwo in der Datei /etc/pam.d/login angezeigt. Die Einbeziehung wurde unklar gemacht und ich weiß wirklich nicht, wie es dort hineinkommt. Ich meine, ich weiß, dass ein {$ HOME} /. Cache / motd.legal angezeigt wird, aber ich weiß (noch) nicht, woher das kommt.

Die pam.d / login-Datei ist für die Benachrichtigung über ausstehende E-Mails verantwortlich, dies ist jedoch nicht unklar. Dort in der Datei befindet sich ein netter Kommentar mit der Beschreibung "Druckt den Status der Mailbox des Benutzers nach erfolgreicher Anmeldung". Ich nehme an, technisch gesehen ist das nicht wirklich Teil des Motds, aber es wird beim Anmelden angezeigt und wenn Sie neu sind, wird dieser feine Unterschied möglicherweise nicht gewürdigt.

Bei einer Neuinstallation von 14.04 gibt es keine / etc / motd-Datei. Wenn Sie eine Datei erstellen (oder eine motd.static erstellen und mit motd verknüpfen), wird der Inhalt dieser Datei an den von den Skripten update-motd.d generierten Text angehängt, der Inhalt von / etc / legal wird jedoch nicht mehr angezeigt. Stelle dir das vor. Die E-Mail-Benachrichtigung wird weiterhin angezeigt, damit das pam.d / login-Skript nicht unterbrochen wird. Ich bezweifle, dass / etc / legal von dort abgerufen wird. Die Beschaffung bleibt für den Leser ein Rätsel. Ich habe festgestellt, dass beim Entfernen des Links (oder der Datei) / etc / motd der Haftungsausschluss nicht sofort wieder angezeigt wird. Es dauert einige Minuten. Ich wollte den Haftungsausschluss nicht ständig sehen, also habe ich den Text aus dieser Datei gelöscht.

Prost.

David Kuhl
quelle
1
Oh, ich habe einen Teil vergessen. Wenn Sie über ssh auf Ihr Gerät zugreifen, gibt es auch eine Einstellung in der Datei / etc / ssh / sshd_config von "PrintLastLog". Dies steuert die Zeile "Letzte Anmeldung: ...", die nach einer erfolgreichen Anmeldung als letztes gedruckt wird. Wenn Sie "Nein" wählen, wird die Leitung nicht unterbrochen. Verbergen Sie lediglich die IP-Adresse der letzten erfolgreichen SSH-Verbindung. Auch dies ist technisch gesehen kein Teil des Motivs, aber auch nicht der verdammte rechtliche Haftungsausschluss, und er taucht immer wieder auf.
David Kuhl
10

Um ein wenig auf die Antwort von David Kuhl einzugehen:

Eine Neuinstallation von Ubuntu Server 14.04.1 LTS installiert anscheinend weder Landscape-Common- noch Update-Notifier-Common-Pakete. Daher werden die folgenden Skripte nicht installiert:

/etc/update-motd.d/50-landscape-sysinfo
/etc/update-motd.d/90-updates-available

Um alle SSH-Anmeldeinformationen zu erhalten, die von Servern verfügbar sind, die von 12.04 LTS migriert wurden, muss man die obigen Pakete manuell installieren:

sudo apt-get install landscape-common update-notifier-common
Skitheo
quelle