Velvet Star Monitor

Standout celebrity highlights with iconic style.

general

How is /etc/motd updated?

Writer Mia Lopez

I was wondering how /etc/motd is automatically updated (I'm on Ubuntu 10.04, server edition). I found the update-motd manpage via a web search, but that program is not installed on my machine. The /etc/motd file is regularly updated, however. I just don't know how and how often. When doing a locate motd, following files are listed:

/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
1

3 Answers

It's updated by pam_motd on login. The update-motd manual page describes this:

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

The accepted answer above is correct, however incomplete. I'm hoping this provides a bit more info for the OP.

Basically, on a fresh install, the motd is generated from three places:

  1. The scripts in /etc/update-motd.d/
  2. The compiled binaries controlled by /etc/pam.d/login
  3. The /etc/legal file

Number 3 there refers to the block of text at the end of your motd that includes "Ubuntu comes with ABSOLUTELY NO WARRANTY ...", that's the /etc/legal file. However you will not find anything under /etc/update-motd.d/ that mentions it, nor does the word "legal" appear anywhere in the /etc/pam.d/login file. It's inclusion has been made obscure and I really don't know how it gets in there. I mean I know there's a {$HOME}/.cache/motd.legal-displayed but I don't know where that comes from either (yet).

The /etc/pam.d/login file is responsible for the notification of pending email, however that is not obscure. There's a nice comment describing:

Prints the status of the user's mailbox upon successful login

...right there in the file. I suppose technically that is not really a part of the motd, but it shows up at login and if you're new that fine distinction may not be appreciated.

On a fresh install of 14.04 there is no /etc/motd file. If you create one (or create a motd.static and symlink it to motd) the contents of that file will be appended to text generated by the update-motd.d scripts but the contents of /etc/legal will stop showing up. Go figure. The email notice still appears so this does not interrupt the /etc/pam.d/login script so I doubt /etc/legal is being pulled in from there. Its sourcing remains a mystery for the reader. I have noticed that when I remove the /etc/motd link (or file) the legal disclaimer does not immediately come back. It takes a few minutes. I did not want to constantly see the disclaimer so I deleted the text from that file.

Cheers.

1

To expand a little on David Kuhl's answer:

A fresh install of Ubuntu Server 14.04.1 LTS apparently does not install landscape-common nor update-notifier-common packages. Thus the following scripts are not installed:

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

Thus, to get all of the ssh login information available from servers migrated from 12.04 LTS one must install the above packages manually:

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

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy