Como o / etc / motd é atualizado?

58

Eu queria saber como / etc / motd é atualizado automaticamente (eu estou no Ubuntu 10.04, edição de servidor). Encontrei a página de manual update-motd através de uma pesquisa na web, mas esse programa não está instalado na minha máquina. O arquivo / etc / motd é atualizado regularmente, no entanto. Só não sei como e com que frequência. Ao fazer um locate motd, os seguintes arquivos são listados:

/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
fonte
Eu não sou / etc / motd no Ubuntu 14.04 LTS. Os arquivos agora são /var/run/motd.dynamic e /run/motd.dynamic que estão vinculados por hardware. motd é atualizado se você não fizer o login oculto. Nesse caso, você veria o conteúdo criado por último quando um usuário fizer um login no modo "não silencioso".
RandominstanceOfLivingThing

Respostas:

57

É atualizado por pam_motdno login. A página de manual update-motd descreve isso:

   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
fonte
26
você pode forçar comsudo run-parts /etc/update-motd.d/
Pete
@Pete, eu tentei esse comando e, embora tenha impresso as informações relevantes, na verdade não foi alterado o texto /etc/motd. Isso é esperado?
snapfractalpop
5
@snapfractalpop, Desculpe, eu estava errado. Você pode usar peças de execução para depuração, pois isso irá cuspir qual será o motivo resultante se você estiver fazendo adições /etc/update-motd.d. Até onde eu sei, a única maneira de atualizar o arquivo é acionando o pam_motd. No meu sistema parece ser o login serviços e sshd ( grep pam_motd /etc/pam.d/*)
Pete
7
@snapfractalpop Sim, isso é esperado. Se você deseja atualizar, /etc/motdredirecione a saída para lá:run-parts /etc/update-motd.d/ | sudo tee /etc/motd
n.st
2
Para acelerar os logins na minha máquina, mudei de libpam-motd para update-motd. O Update-motd usa um cronjob em vez de acionar a atualização no login. sudo apt-get remove libpam-motd; sudo apt-get install update-motd
Xer0x
11

A resposta aceita acima está correta, porém incompleta. Espero que isso forneça um pouco mais de informações para o OP.

Basicamente, em uma nova instalação, o motd é gerado a partir de três locais:

  1. Os scripts em /etc/update-motd.d/
  2. Os binários compilados controlados por /etc/pam.d/login
  3. O arquivo / etc / legal

O número 3 refere-se ao bloco de texto no final do seu motivo que inclui "O Ubuntu vem com absolutamente nenhuma garantia ...", esse é o arquivo / etc / legal . No entanto, você não encontrará nada em /etc/update-motd.d/ que mencione isso, nem a palavra "legal" aparece em qualquer lugar do arquivo /etc/pam.d/login. Sua inclusão ficou obscura e eu realmente não sei como isso acontece lá. Quero dizer, eu sei que há um {$ HOME} /. Cache / motd.legal exibido, mas também não sei de onde isso vem.

O arquivo pam.d / login é responsável pela notificação de email pendente, no entanto, isso não é obscuro. Há um bom comentário descrevendo "Imprime o status da caixa de correio do usuário após um login bem-sucedido" ali no arquivo. Suponho que tecnicamente isso não faz parte do motd, mas aparece no login e, se você é novo, essa distinção pode não ser apreciada.

Em uma nova instalação do 14.04, não arquivo / etc / motd. Se você criar um (ou criar um motd.static e vinculá-lo ao motd), o conteúdo desse arquivo será anexado ao texto gerado pelos scripts update-motd.d, mas o conteúdo do / etc / legal irá parar de aparecer. Vai saber. O aviso por e-mail ainda aparece, portanto, isso não interrompe o script pam.d / login, portanto duvido que o / etc / legal esteja sendo retirado de lá. Sua fonte continua sendo um mistério para o leitor. Percebi que, quando removo o link / etc / motd (ou arquivo), o aviso legal não volta imediatamente. Demora alguns minutos. Como não queria ver constantemente o aviso, excluí o texto desse arquivo.

Felicidades.

David Kuhl
fonte
11
Ah, esqueci uma parte. Se você estiver acessando sua máquina via ssh, também haverá uma configuração no arquivo / etc / ssh / sshd_config de "PrintLastLog". É isso que controla a linha "Último login: ...", que é a última coisa a ser impressa após um login bem-sucedido. Definir como "não" não fará a linha desaparecer, apenas oculte o endereço IP da última conexão ssh bem-sucedida. Novamente, tecnicamente não faz parte do motivo, mas também não é o aviso legal e continua aparecendo.
David Kuhl
10

Para expandir um pouco a resposta de David Kuhl :

Uma nova instalação do Ubuntu Server 14.04.1 LTS aparentemente não instala pacotes landscape-common nem update-notifier-common. Portanto, os seguintes scripts não estão instalados:

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

Portanto, para obter todas as informações de login ssh disponíveis dos servidores migrados do 12.04 LTS, é necessário instalar os pacotes acima manualmente:

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