ฉันสามารถทดสอบแบบไดนามิกอย่างง่ายพร้อมตัวอย่างโชคลาภในโฮสต์ Debian Jessie 8.2 ของฉันด้านล่างและพบปัญหาที่เกี่ยวข้องกับพฤติกรรมบั๊กกี้
mkdir /etc/update-motd.d
cd /etc/update-motd.d
สร้างไฟล์ทดสอบสองไฟล์ดังต่อไปนี้และทำให้สามารถใช้งานได้
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
อย่างไรก็ตามในเวลานี้ไม่มีการเปลี่ยนแปลงใน motd ดังนั้นฉัน strace'd กระบวนการ sshd จากการติดตามนั้น (ส่วนที่น่าสนใจที่แสดงด้านล่าง) คุณจะเห็นว่าไฟล์ motd.new ที่สร้างขึ้นใหม่ถูกเปลี่ยนชื่อเป็น / var / run / motd อย่างไรก็ตามในภายหลังพยายามอ่านจาก /run/motd.dynamic - ซึ่งไม่เคยสร้างขึ้นมา
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
ดูเหมือนว่าปัญหาจะเกี่ยวข้องกับความไม่สอดคล้องกับโมดูล pam_motd ดูรายงานข้อผิดพลาดhttps://bugs.debian.org/cgi-bin/bugreport.cgi?bug=743286;msg=2
เพียงแค่เปลี่ยนตำแหน่งของแฟ้ม motd จาก/run/motd.dynamic
ไป/run/motd
ใน/etc/pam.d/sshd
- ทำให้มันทำงานสำหรับฉัน
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
นี่คือตัวอย่าง MOTD ที่เห็นระหว่างการล็อกอิน 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
pam_motd.so noupdate
เป็นปัญหาที่นั่น?