Ssh için Debian Jessie 8.2'de dinamik bir Günün Mesajı (motd) nasıl ayarlanır?


16

Dinamik bir motif istiyorum ama nasıl yapılacağını anlayamıyorum.

Ben ekleyerek, ne buldum çalıştı /etc/update-motd.d/00-header, 10-sysinfo, 90-footer, ve sembolik bağlantılarını /etc/motd /var/run/motd.dynamic, /run/motd.dynamic, /run/motdveya /var/run/motd.

Şu satırları aldım /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

Ayrıca systemd ile kafam karıştı.

Bunu yapmanın bir yolu var mı? Birisi basit bir servetle örnek verebilir mi?


olmaz pam_motd.so noupdatesorun olmaması?
Jakuje

Yanıtlar:


11

Debian Jessie 8.2 sunucumdaki servet örneğiyle basit dinamik motd'i aşağıdaki gibi test edebiliyorum ve sorunun bir hata davranışı ile ilgili olduğunu buldum.

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

Aşağıdaki gibi iki test dosyası oluşturdu ve yürütülebilir

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

Ancak şu anda motd'da bir değişiklik olmamıştır. Bu nedenle (aşağıda gösterilen ilginç parçalar) yeni oluşturulan motd.new dosyasının / var / run / motd olarak yeniden adlandırıldığını görebilirsiniz. Ancak daha sonra /run/motd.dynamic'den okumaya çalışıyor - ki bu hiç oluşturulmamış

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

Sorun pam_motd modülündeki tutarsızlıklar ile ilgili gibi görünüyor. Hata raporuna bakın https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=743286;msg=2

Basitçe motd dosya konumu değişen /run/motd.dynamiciçin /run/motdde /etc/pam.d/sshd- bu iş için beni yapar

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

İşte ssh girişi sırasında görülen örnek MOTD ...

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

Teşekkür ederim, yardımcı oldu! .newSonunda eklemek zorunda kaldı /etc/pam.d/sshd: session optional pam_motd.so motd=/run/motd.newve bağlantı sudo ln ds /run/motd /etc/motd. Ve export LANG="eo"serveti görmek için unuttum .
batisteo

Bu çözüm aynı zamanda debian 7 için de çalışır.
azmeuk

Bu temel çözüm, küçük bir değişiklikle Debian Stretch 9 için de çalışıyor - okunacak dosya şimdi/run/etc/motd.dynamic.new
cam8001

12

Bu yıllar içinde değişti:

İlk önce /etc/motd(statik) vardı.

Sonra Ubuntu kendi paketini update-motdcron denen bir senaryoya dayanarak buldu.

Son olarak PAM, Ubuntu'nun /etc/update-motd.d/ fikrini kopyaladı ve Debian ve diğerleri de bu davranışa sahipler.

Burada bir açıklama var

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

Yani şu anda işler şu şekilde: PAM sadece okuyacak /var/run/motd.dynamicve /etc/motdvarsa (postadan yapıştır)

  • /etc/motd- Klasik, statik dosya. Artık Ubuntu 16.04 LTS'de, / var / run / motd'ye sembolik bir bağlantı olarak bile mevcut değildir. Ancak oluşturulursa içeriği de yazdırılır.
  • /var/run/motd- Bu Ubuntu'nun ilk uygulaması tarafından kullanıldı. Artık kullanılmamaktadır. Sadece PAM tarafından göz ardı edilir.
  • /var/run/motd.dynamic- Şu anda girişte gösterilen budur. Her önyüklemede /etc/init.d/motd tarafından güncellenir. Varsa, /etc/update-motd.d/ içindeki komut dosyalarını çalıştırarak PAM tarafından da güncellenir.
  • /etc/motd.tail- /etc/update-motd.d dosyasını doldurmak için kullanılan Ubuntu paketi. Bunlardan biri bu dosyanın içeriğini değiştirir, böylece statik içerik eklemek kolaydır. Bu komut dosyası artık pakette yok, bu nedenle dosyanın amaçlanan etkisi yok.

Gönderiden örnek

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/*
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.