Я хотел бы иметь динамический MOTD, но я не могу понять, как это сделать.
Я попробовал то , что я нашел, добавив /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
было бы проблемы там?Ответы:
Я могу протестировать простой динамический пример с motd на моем хосте Debian Jessie 8.2, как показано ниже, и обнаружил, что проблема связана с ошибочным поведением.
Создал два тестовых файла, как показано ниже, и сделал их исполняемыми
Однако в это время не было никаких изменений в MOTD. Итак, я выполняю процесс sshd. Из этой трассы (интересные части показаны ниже) вы можете видеть, что вновь созданный файл motd.new переименовывается в / var / run / motd. Однако позже он пытается прочитать из /run/motd.dynamic - который никогда не был создан
Кажется, проблема связана с несоответствиями с модулем pam_motd. См. Отчет об ошибке https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=743286;msg=2.
Простое изменение MotD местоположение файла с
/run/motd.dynamic
к/run/motd
в/etc/pam.d/sshd
- делает работу для меняВот пример MOTD, замеченный во время входа в систему через ssh ...
источник
.new
в конце в/etc/pam.d/sshd
:session optional pam_motd.so motd=/run/motd.new
и ссылкуsudo ln ds /run/motd /etc/motd
. И я забылexport LANG="eo"
, чтобы увидеть удачу./run/etc/motd.dynamic.new
Это изменилось за эти годы:
Сначала был
/etc/motd
(статичный).Затем Ubuntu разработала собственный пакет,
update-motd
основанный на скрипте, который вызывается из cron.Наконец, PAM скопировал идею Uetntu о /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. Один из них следил за содержимым этого файла, поэтому было легко добавить статический контент. Этот скрипт больше не существует в пакете, поэтому файл не имеет ожидаемого эффекта.Пример из поста
источник