Como definir uma mensagem dinâmica do dia (motd) no Debian Jessie 8.2 para ssh?

16

Eu gostaria de ter um motivo dinâmico, mas não consigo descobrir como fazê-lo.

Eu tentei o que eu encontrei, acrescentando /etc/update-motd.d/00-header, 10-sysinfo, 90-footer, e criar um link simbólico para /etc/motd /var/run/motd.dynamic, /run/motd.dynamic, /run/motdou /var/run/motd.

Eu tenho essas linhas em /etc/pam.d/sshd:

# Print the message of the day upon successful login.
# This includes a dynamically generated part from /run/motd.dynamic
# and a static (admin-editable) part from /etc/motd.
session    optional     pam_motd.so  motd=/run/motd.dynamic
session    optional     pam_motd.so noupdate

Também estou confuso com o systemd.

Existe uma maneira de fazer isso? Alguém poderia dar um exemplo com uma simples fortuna?

batisteo
fonte
não pam_motd.so noupdateseria o problema lá?
Jakuje 30/11/2015

Respostas:

11

Eu sou capaz de testar um dinâmico-motd simples com um exemplo de fortuna no meu host Debian Jessie 8.2 como abaixo e achei que o problema estava relacionado a um comportamento de buggy.

mkdir /etc/update-motd.d
cd /etc/update-motd.d

Criou dois arquivos de teste como abaixo e os tornou executáveis

root@debian:/# cd /etc/update-motd.d/
root@debian:/etc/update-motd.d# ls -l 
total 8
-rwxr-xr-x 1 root root 58 Dec  1 23:21 00-header
-rwxr-xr-x 1 root root 41 Dec  1 22:52 90-fortune
root@debian:/etc/update-motd.d# cat 00-header 
#!/bin/bash
echo
echo 'Welcome !! This is a header'
echo
root@debian:/etc/update-motd.d# cat 90-fortune 
#!/bin/bash
echo
/usr/games/fortune
echo

No entanto, neste momento, não houve alteração no motd. A partir do rastreio (partes interessantes mostradas abaixo), você pode ver que o arquivo motd.new recém-criado é renomeado para / var / run / motd. No entanto, mais tarde, está tentando ler em /run/motd.dynamic - que nunca foi criado

20318 rename("/var/run/motd.new", "/var/run/motd") = 0
20318 open("/run/motd.dynamic", O_RDONLY) = -1 ENOENT (No such file or directory)
20318 open("/etc/motd", O_RDONLY)       = 8

O problema parece estar relacionado a inconsistências com o módulo pam_motd. Veja o relatório de bug https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=743286;msg=2

Simplesmente alterar o local do arquivo motd de /run/motd.dynamicpara /run/motddentro /etc/pam.d/sshd- faz funcionar para mim

root@debian:/etc/pam.d# grep pam_motd sshd
#session    optional     pam_motd.so motd=/run/motd.dynamic
session    optional     pam_motd.so motd=/run/motd
session    optional     pam_motd.so noupdate

Aqui está o exemplo MOTD visto durante o login ssh ...

Welcome !! This is a header


* Culus fears perl - the language with optional errors


The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have new mail.
Last login: Tue Dec  1 23:49:57 2015 from x.x.x.x
VenkatC
fonte
Obrigado, ajudou! Eu tive que adicionar o .newno final em /etc/pam.d/sshd: session optional pam_motd.so motd=/run/motd.newe link sudo ln ds /run/motd /etc/motd. E eu esqueci export LANG="eo"para ver a fortuna.
batisteo
Esta solução também funciona para debian 7.
azmeuk
Esta solução básica também funciona para Debian estiramento 9, com um pequeno puxão - o arquivo para leitura é agora/run/etc/motd.dynamic.new
cam8001
12

Isso mudou ao longo dos anos:

Primeiro houve /etc/motd(estático).

Então o Ubuntu criou seu próprio pacote com update-motdbase em um script chamado cron.

Finalmente, o PAM copiou a idéia do Ubuntu de /etc/update-motd.d/ e, portanto, o Debian e outros também têm esse comportamento.

Há uma explicação aqui

https://ownyourbits.com/2017/04/05/customize-your-motd-login-message-in-debian-and-ubuntu/

Portanto, é assim que as coisas estão atualmente: o PAM apenas lerá /var/run/motd.dynamice, /etc/motdse existir (cole na postagem)

  • /etc/motd- O arquivo estático clássico. Não existe mais no Ubuntu 16.04 LTS, nem mesmo como um link simbólico para / var / run / motd. Se for criado, seu conteúdo também será impresso.
  • /var/run/motd- Isso foi usado pela primeira implementação do Ubuntu. Não é mais usado. É apenas ignorado pelo PAM.
  • /var/run/motd.dynamic- É o que é mostrado no login atualmente. É atualizado por /etc/init.d/motd a cada inicialização. Também é atualizado pelo PAM executando os scripts em /etc/update-motd.d/, se eles existirem.
  • /etc/motd.tail- O pacote Ubuntu usado para preencher o /etc/update-motd.d. Um deles classificaria o conteúdo desse arquivo, facilitando a adição de conteúdo estático. Esse script não existe mais no pacote, portanto, o arquivo não tem o efeito pretendido.

O exemplo da postagem

mkdir /etc/update-motd.d
rm -f /etc/motd                  # in Debian still exists
cat > /etc/update-motd.d/10logo <<EOF
#!/bin/sh
echo
cat /etc/issue
EOF

cat > /etc/update-motd.d/20updates <<'EOF'
#!/bin/sh
echo
echo "uptime is $( uptime )"
echo "date   is $( date   )"
EOF

chmod a+x /etc/update-motd.d/*
nachoparker
fonte