Як встановити динамічне Повідомлення дня (motd) у Debian Jessie 8.2 для ssh?


16

Мені б хотілося мати динамічну модель, але я не можу зрозуміти, як це зробити.

Я спробував то , що я знайшов, додавши /etc/update-motd.d/00-header, 10-sysinfo, 90-footerі символічне посилання на /etc/motd /var/run/motd.dynamic, /run/motd.dynamic, /run/motdабо /var/run/motd.

Ці рядки у мене /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

Я також плутаю з systemd.

Чи є спосіб це зробити? Чи міг би хтось навести приклад з простим станом?


не pam_motd.so noupdateбуло б там проблеми?
Jakuje

Відповіді:


11

Я в змозі перевірити простий динамічний motd з прикладом фортуни на своєму хості 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 process.З цього сліду (цікаві частини показано нижче) ви бачите, що новостворений файл 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

Дякую, допомогло! Мені довелося додати .newкінець у /etc/pam.d/sshd: session optional pam_motd.so motd=/run/motd.newта посилання sudo ln ds /run/motd /etc/motd. І я забув export LANG="eo", щоб побачити удачу.
batisteo

Це рішення також працює для debian 7.
azmeuk

Це базове рішення також працює для Debian Stretch 9, з невеликою настройкою - файл для читання зараз/run/etc/motd.dynamic.new
cam8001

12

За роки змінилося це:

Спочатку було /etc/motd(статично).

Тоді Ubuntu придумав власний пакет update-motdна основі сценарію, який називається з cron.

Нарешті, PAM скопіювала ідею Ubuntu про /etc/update-motd.d/, і тому Debian та інші також мають таку поведінку.

Тут є пояснення

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

Отже, ось як зараз: PAM буде просто читати, /var/run/motd.dynamicі /etc/motdякщо він існує (вставити з повідомлення)

  • /etc/motd- Класичний, статичний файл. Більше не існує в Ubuntu 16.04 LTS, навіть як символічне посилання на / var / run / motd. Якщо він створений, проте його вміст також буде надруковано.
  • /var/run/motd- Це було використано першою реалізацією Ubuntu. Він більше не використовується. Це просто ігнорується PAM.
  • /var/run/motd.dynamic- Це те, що відображається на вході в даний момент. Він оновлюється /etc/init.d/motd при кожному завантаженні. Він також оновлюється PAM, запускаючи скрипти в /etc/update-motd.d/, якщо вони існують.
  • /etc/motd.tail- Пакет Ubuntu, який використовується для заповнення /etc/update-motd.d. Один з них переглядав би вміст цього файлу, тому було легко додати статичний вміст. Цей сценарій вже не існує в пакеті, тому файл не має наміченого ефекту.

Приклад з поста

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/*
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.