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

58

Мне было интересно, как / 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
Даниэль Куллманн
источник
У меня нет / etc / motd в Ubuntu 14.04 LTS. Теперь это файлы /var/run/motd.dynamic и /run/motd.dynamic, которые жестко связаны между собой. Motd обновляется, если вы не делаете скрытый вход в систему. В этом случае вы увидите содержимое, которое создается в последний раз, когда пользователь выполняет вход в режиме «без звука».
randominstanceOfLivingThing

Ответы:

57

Это обновляется при pam_motdвходе в систему. Обновление-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.
Мариус Гедминас
источник
26
Вы можете заставить сsudo run-parts /etc/update-motd.d/
Пит
@ Пит, я попробовал эту команду, и хотя она распечатала соответствующую информацию, она фактически не изменила текст /etc/motd. Это ожидается?
snapfractalpop
5
@snapfractalpop, прости, я ошибся. Вы можете использовать run-parts для отладки, он будет отображать то, что будет в результате motd, если вы делаете дополнения /etc/update-motd.d. Насколько я могу судить, единственный способ обновить файл - это запустить pam_motd. В моей системе это, кажется, службы входа в систему и sshd ( grep pam_motd /etc/pam.d/*)
Пит
7
@snapfractalpop Да, это ожидается. Если вы хотите обновить /etc/motdперенаправить вывод там:run-parts /etc/update-motd.d/ | sudo tee /etc/motd
n.st
2
Чтобы ускорить вход на мою машину, я переключился с libpam-motd на update-motd. Update-motd использует cronjob вместо запуска обновления при входе в систему. sudo apt-get remove libpam-motd; sudo apt-get install update-motd
xer0x
11

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

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

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

Дэвид Куль
источник
1
О, я забыл одну часть. Если вы обращаетесь к своей машине через ssh, в файле / etc / ssh / sshd_config «PrintLastLog» также есть настройка. Это то, что контролирует строку «Last login: ...», которая печатается последней после успешного входа в систему. Установка значения «нет» не приведет к исчезновению линии, просто скрыть IP-адрес последнего успешного ssh-соединения. Опять же, технически не является частью motd, но, тем не менее, это и не проклятая юридическая оговорка, и она продолжает появляться.
Дэвид Куль
10

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

При новой установке 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
skitheo
источник