Как обновляется /etc/motd?

Мне было интересно, как / etc / motd автоматически обновляется (я на Ubuntu 10.04, серверная версия). Я нашел man-страницу update-motd через веб-поиск, но эта программа не установлена ​​на моем компьютере. Однако файл / etc / motd регулярно обновляется. Я просто не знаю, как и как часто. При выполнении locate motd, перечислены следующие файлы:

/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

3 ответа

Решение

Это обновлено pam_motd при входе Страница руководства update-motd описывает это:

   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.

Принятый ответ выше является правильным, однако неполным. Я надеюсь, что это дает немного больше информации для ОП.

В основном, при новой установке, motd генерируется из трех мест:

  1. Скрипты в /etc/update-motd.d/
  2. Скомпилированные двоичные файлы, контролируемые /etc/pam.d/login
  3. Файл / etc / legal

Номер 3 там относится к текстовому блоку в конце вашего motd, который включает "Ubuntu поставляется с АБСОЛЮТНО НЕТ ГАРАНТИИ...", это файл / etc / legal. Однако вы не найдете ничего в /etc/update-motd.d/, в котором это упоминается, и слово "legal" не появится нигде в файле /etc/pam.d/login. Это включение стало неясным, и я действительно не знаю, как оно туда попало. Я имею в виду, я знаю, что есть {$HOME}/. Cache/motd.legal-отображаемый, но я не знаю, откуда это (пока).

Файл pam.d / login отвечает за уведомление об ожидающем электронном письме, однако это не является неясным. Там есть хороший комментарий, описывающий "Печатает состояние почтового ящика пользователя при успешном входе в систему" ​​прямо в файле. Я полагаю, что технически это не является частью motd, но оно обнаруживается при входе в систему, и, если вы новичок, это тонкое различие не может быть оценено.

При новой установке 14.04 файл / etc / motd отсутствует. Если вы создадите его (или создадите motd.static и сделаете символическую ссылку на motd), содержимое этого файла будет добавлено к тексту, сгенерированному сценариями update-motd.d, но содержимое / etc / legal перестанет отображаться. Пойди разберись. Уведомление по электронной почте все еще появляется, поэтому это не прерывает сценарий pam.d / login, поэтому я сомневаюсь, что / etc / legal извлекается оттуда. Его поиск остается загадкой для читателя. Я заметил, что когда я удаляю ссылку (или файл) / etc / motd, юридический отказ от ответственности не возвращается немедленно. Это займет несколько минут. Я не хотел постоянно видеть отказ от ответственности, поэтому я удалил текст из этого файла.

Приветствия.

Чтобы немного расширить ответ Дэвида Куля:

При новой установке Ubuntu Server 14.04.1 LTS, очевидно, не устанавливаются общие пакеты landscape-common или update-notifier-common. Таким образом, следующие скрипты не установлены:

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

Таким образом, чтобы получить всю информацию о входе в систему через ssh, доступную с серверов, перенесенных с 12.04 LTS, необходимо установить вышеупомянутые пакеты вручную:

sudo apt-get install landscape-common update-notifier-common
Другие вопросы по тегам