Bagaimana cara mengatur Pesan dinamis hari ini (motd) di Debian Jessie 8.2 untuk ssh?

16

Saya ingin memiliki motd yang dinamis, tetapi saya tidak tahu bagaimana melakukannya.

Saya mencoba apa yang saya temukan, menambahkan /etc/update-motd.d/00-header, 10-sysinfo, 90-footer, dan symlinking untuk /etc/motd /var/run/motd.dynamic, /run/motd.dynamic, /run/motdatau /var/run/motd.

Saya memiliki baris-baris ini di /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

Saya juga bingung dengan systemd.

Apakah ada cara untuk melakukan ini? Bisakah seseorang memberikan contoh dengan kekayaan sederhana?

batisteo
sumber
tidak akan pam_motd.so noupdatemenjadi masalah di sana?
Jakuje

Jawaban:

11

Saya dapat menguji dinamik-motd sederhana dengan contoh keberuntungan pada host Debian Jessie 8.2 saya seperti di bawah ini dan menemukan masalah tersebut terkait dengan perilaku buggy.

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

Membuat dua file uji seperti di bawah ini dan membuatnya dapat dieksekusi

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

Namun saat ini, tidak ada perubahan motd. Jadi saya strace'd proses sshd. Dari jejak itu (bagian menarik yang ditunjukkan di bawah), Anda dapat melihat bahwa file motd.new yang baru dibuat diubah namanya menjadi / var / run / motd. Namun ini kemudian mencoba membaca dari /run/motd.dynamic - yang tidak pernah dibuat

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

Masalah ini tampaknya terkait dengan inkonsistensi dengan modul pam_motd. Lihat laporan bug https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=743286;msg=2

Cukup mengubah lokasi file motd dari /run/motd.dynamicmenjadi /run/motddi /etc/pam.d/sshd- membuatnya berfungsi untuk saya

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

Ini adalah contoh MOTD yang terlihat saat 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
sumber
Terima kasih, ini membantu! Saya harus menambahkan .newdi akhir di /etc/pam.d/sshd: session optional pam_motd.so motd=/run/motd.newdan tautan sudo ln ds /run/motd /etc/motd. Dan saya lupa export LANG="eo"untuk melihat keberuntungan.
batisteo
Solusi ini juga berfungsi untuk debian 7.
azmeuk
Solusi dasar ini juga berfungsi untuk Debian Stretch 9, dengan sedikit penyesuaian - file untuk dibaca adalah sekarang/run/etc/motd.dynamic.new
cam8001
12

Ini telah berubah selama bertahun-tahun:

Pertama ada /etc/motd(statis).

Kemudian Ubuntu datang dengan paket mereka sendiri update-motdberdasarkan pada skrip yang dipanggil dari cron.

Akhirnya, PAM menyalin ide Ubuntu tentang /etc/update-motd.d/, dan karenanya Debian dan yang lainnya juga memiliki perilaku itu.

Ada penjelasan di sini

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

Jadi beginilah keadaannya saat ini: PAM hanya akan membaca /var/run/motd.dynamicdan /etc/motdjika ada (tempel dari posting)

  • /etc/motd- File klasik dan statis. Tidak ada lagi di Ubuntu 16.04 LTS, bahkan tidak sebagai tautan simbolis ke / var / run / motd. Jika itu dibuat, namun isinya akan dicetak juga.
  • /var/run/motd- Ini digunakan oleh implementasi pertama Ubuntu. Itu tidak digunakan lagi. Itu hanya diabaikan oleh PAM.
  • /var/run/motd.dynamic- Inilah yang ditunjukkan saat masuk saat ini. Ini diperbarui oleh /etc/init.d/motd di setiap boot. Itu juga diperbarui oleh PAM dengan menjalankan skrip di /etc/update-motd.d/, jika ada.
  • /etc/motd.tail- Paket Ubuntu digunakan untuk mengisi /etc/update-motd.d. Salah satunya akan menambahkan konten file ini sehingga mudah untuk menambahkan konten statis. Script itu tidak ada dalam paket lagi, jadi file tidak memiliki efek yang diinginkan.

Contohnya dari postingan

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
sumber