Chciałbym mieć dynamiczny motd, ale nie wiem, jak to zrobić.
Próbowałem co znalazłem, dodając /etc/update-motd.d/00-header
, 10-sysinfo
, 90-footer
, i symlinking do /etc/motd
/var/run/motd.dynamic
, /run/motd.dynamic
, /run/motd
lub /var/run/motd
.
Mam następujące linie /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
Jestem także mylony z systemd.
Czy jest na to sposób? Czy ktoś mógłby podać przykład z prostą fortuną?
pam_motd.so noupdate
byłoby problemu?Odpowiedzi:
Jestem w stanie przetestować prosty przykład z dynamiką z fortuną na moim hoście Debian Jessie 8.2, jak poniżej, i odkryłem, że problem ten jest związany z błędnym zachowaniem.
Utworzono dwa pliki testowe, jak poniżej, i wykonano je
Jednak w tym czasie motd nie zmienił się. Więc śledzę proces sshd. Z tego śladu (interesujące części pokazano poniżej) można zobaczyć, że nowo utworzony plik motd.new zmienia nazwę na / var / run / motd. Jednak później próbuje odczytać z /run/motd.dynamic - który nigdy nie został stworzony
Problem wydaje się być związany z niespójnościami z modułem pam_motd. Zobacz raport o błędzie https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=743286;msg=2
Po prostu zmiana lokalizacji pliku motd z
/run/motd.dynamic
na/run/motd
in/etc/pam.d/sshd
- sprawia, że działa dla mnieOto przykładowy MOTD widziany podczas logowania ssh ...
źródło
.new
na końcu w/etc/pam.d/sshd
:session optional pam_motd.so motd=/run/motd.new
i linksudo ln ds /run/motd /etc/motd
. I zapomniałemexport LANG="eo"
, aby zobaczyć fortunę./run/etc/motd.dynamic.new
Zmieniło się to przez lata:
Najpierw był
/etc/motd
(statyczny).Następnie Ubuntu opracowało własny pakiet
update-motd
oparty na skrypcie wywoływanym z crona.Wreszcie, PAM skopiowało pomysł Ubuntu na /etc/update-motd.d/, dlatego Debian i inni również mają takie zachowanie.
Tutaj jest wyjaśnienie
https://ownyourbits.com/2017/04/05/customize-your-motd-login-message-in-debian-and-ubuntu/
Tak to jest obecnie: PAM po prostu przeczyta
/var/run/motd.dynamic
i/etc/motd
jeśli istnieje (wklej z posta)/etc/motd
- Klasyczny, statyczny plik. Nie istnieje już w Ubuntu 16.04 LTS, nawet jako symboliczne łącze do / var / run / motd. Jeśli zostanie utworzony, jego zawartość również zostanie wydrukowana./var/run/motd
- Wykorzystano to przy pierwszej implementacji Ubuntu. Nie jest już używany. Jest to po prostu ignorowane przez PAM./var/run/motd.dynamic
- To jest obecnie wyświetlane przy logowaniu. Jest aktualizowany przez /etc/init.d/motd przy każdym uruchomieniu. Jest również aktualizowany przez PAM, uruchamiając skrypty w /etc/update-motd.d/, jeśli istnieją./etc/motd.tail
- Pakiet Ubuntu używany do wypełniania /etc/update-motd.d. Jeden z nich przechowałby zawartość tego pliku, dzięki czemu łatwo było dodać zawartość statyczną. Ten skrypt nie istnieje już w pakiecie, więc plik nie ma zamierzonego efektu.Przykład z postu
źródło