Jak aktualizowany jest plik / etc / motd?

58

Zastanawiałem się, jak / etc / motd jest automatycznie aktualizowany (korzystam z Ubuntu 10.04, edycja serwerowa). Znalazłem stronę aktualizacji z motd poprzez wyszukiwanie w sieci, ale ten program nie jest zainstalowany na moim komputerze. Jednak plik / etc / motd jest regularnie aktualizowany. Po prostu nie wiem jak i jak często. Podczas wykonywania a locate motdwyświetlane są następujące pliki:

/etc/motd
/etc/update-motd.d
/etc/update-motd.d/00-header
/etc/update-motd.d/10-help-text
/etc/update-motd.d/20-cpu-checker
/etc/update-motd.d/50-landscape-sysinfo
/etc/update-motd.d/90-updates-available
/etc/update-motd.d/91-release-upgrade
/etc/update-motd.d/98-reboot-required
/etc/update-motd.d/99-footer
/home/me/.cache/motd.legal-displayed
/lib/security/pam_motd.so
/usr/bin/motd+shell
/usr/lib/update-manager/release-upgrade-motd
/usr/lib/update-notifier/update-motd-cpu-checker
/usr/lib/update-notifier/update-motd-reboot-required
/usr/lib/update-notifier/update-motd-updates-available
/usr/share/base-files/motd.md5sums
/usr/share/man/man1/motd+shell.1.gz
/usr/share/man/man5/motd.5.gz
/usr/share/man/man5/motd.tail.5.gz
/usr/share/man/man5/update-motd.5.gz
/usr/share/man/man8/pam_motd.8.gz
/usr/share/ubuntu-serverguide/html/C/pam_motd.html
Daniel Kullmann
źródło
Nie mam / etc / motd na Ubuntu 14.04 LTS. Pliki są teraz /var/run/motd.dynamic i /run/motd.dynamic, które są na stałe połączone. motd jest aktualizowany, jeśli nie wyłączysz logowania. W takim przypadku zobaczysz zawartość, która jest tworzona na końcu, gdy użytkownik zaloguje się w trybie „nie wyciszonym”.
randominstanceOfLivingThing

Odpowiedzi:

57

Jest aktualizowany przez pam_motdprzy logowaniu. Update-motd strona podręcznika opisuje w ten sposób:

   Ubuntu introduced the update-motd framework, by which  the  motd(5)  is
   dynamically assembled from a collection of scripts at login.

   Executable  scripts in /etc/update-motd.d/* are executed by pam_motd(8)
   as the root user at each login, and this information is concatenated in
   /var/run/motd.  The order of script execution is determined by the run-
   parts(8) --lsbsysinit option (basically alphabetical order, with a  few
   caveats).

   On   Ubuntu   systems,  /etc/motd  is  typically  a  symbolic  link  to
   /var/run/motd.
Marius Gedminas
źródło
26
możesz wymusić zsudo run-parts /etc/update-motd.d/
Pete
@Pete, próbowałem tego polecenia i chociaż wydrukowało odpowiednie informacje, w rzeczywistości nie zmieniło tekstu /etc/motd. Czy jest to oczekiwane?
snapfractalpop,
5
@ snapfractalpop, Przepraszamy, myliłem się. Możesz użyć części run do debugowania, wypluje to, jaki będzie wynikowy motd, jeśli będziesz dokonywał dodatków /etc/update-motd.d. O ile wiem, jedynym sposobem na aktualizację pliku jest uruchomienie pam_motd. W moim systemie wydaje się, że jest to login usług i sshd ( grep pam_motd /etc/pam.d/*)
Pete
7
@ snapfractalpop Tak, tego się oczekuje. Jeśli chcesz zaktualizować /etc/motdprzekieruj tam dane wyjściowe:run-parts /etc/update-motd.d/ | sudo tee /etc/motd
n.
2
Aby przyspieszyć logowanie na moim komputerze, przestawiłem się z libpam-motd na update-motd. Update-motd używa cronjobu zamiast wyzwalania aktualizacji podczas logowania. sudo apt-get remove libpam-motd; sudo apt-get install update-motd
xer0x
11

Przyjęta powyżej odpowiedź jest poprawna, ale niekompletna. Mam nadzieję, że to zapewni nieco więcej informacji dla OP.

Zasadniczo przy nowej instalacji motd jest generowany z trzech miejsc:

  1. Skrypty w /etc/update-motd.d/
  2. Skompilowane pliki binarne kontrolowane przez /etc/pam.d/login
  3. Plik / etc / legal

Liczba 3 odnosi się do bloku tekstu na końcu twojego motd, który zawiera „Ubuntu ma ABSOLUTNIE BRAK GWARANCJI ...”, to jest plik / etc / legal . Jednak w /etc/update-motd.d/ nie znajdziesz niczego, co by o nim wspominało, ani słowa „legal” nie pojawia się nigdzie w pliku /etc/pam.d/login. Włączenie to stało się niejasne i naprawdę nie wiem, jak się tam dostanie. Mam na myśli, że wiem, że wyświetla się {$ HOME} /. Cache / motd.legal, ale nie wiem, skąd to się bierze (jeszcze).

Plik pam.d / login odpowiada za powiadomienie o oczekującym e-mailu, jednak nie jest to niejasne. W pliku znajduje się ładny komentarz opisujący „Drukuje stan skrzynki pocztowej użytkownika po udanym zalogowaniu”. Przypuszczam, że technicznie nie jest to tak naprawdę częścią motd, ale pojawia się przy logowaniu, a jeśli jesteś nowy, to dobre rozróżnienie może nie zostać docenione.

W nowej instalacji 14.04 nie ma pliku / etc / motd. Jeśli stworzysz taki (lub utworzysz motd.static i dowiązasz go do motd), zawartość tego pliku zostanie dołączona do tekstu wygenerowanego przez skrypty update-motd.d, ale zawartość / etc / legal przestanie się wyświetlać. Domyśl. Powiadomienie e-mail wciąż się pojawia, więc nie przerywa to skryptu pam.d / login, więc wątpię, by stamtąd pobierano / etc / legal. Jego pozyskiwanie pozostaje tajemnicą dla czytelnika. Zauważyłem, że po usunięciu linku / pliku / etc / motd (lub plik) prawne wyłączenie odpowiedzialności nie wraca natychmiast. To zajmuje kilka minut. Nie chciałem ciągle widzieć zrzeczenia się odpowiedzialności, więc usunąłem tekst z tego pliku.

Twoje zdrowie.

David Kuhl
źródło
1
Och, zapomniałem jednej części. Jeśli uzyskujesz dostęp do swojego komputera za pośrednictwem ssh, istnieje również ustawienie w pliku / etc / ssh / sshd_config w „PrintLastLog”. To właśnie kontroluje wiersz „Ostatnie logowanie: ...”, który jest ostatnią rzeczą do wydrukowania po udanym zalogowaniu. Ustawienie na „nie” nie spowoduje, że linia zniknie, wystarczy ukryć adres IP ostatniego udanego połączenia ssh. Ponownie, technicznie nie jest to część motd, ale nie jest to również prawna nota prawna i wciąż się pojawia.
David Kuhl,
10

Aby rozwinąć nieco odpowiedź Davida Kuhla :

Nowa instalacja Ubuntu Server 14.04.1 LTS najwyraźniej nie instaluje pakietów typowych dla krajobrazu ani typowych dla aktualizacji-powiadamiającego. Dlatego następujące skrypty nie są instalowane:

/etc/update-motd.d/50-landscape-sysinfo
/etc/update-motd.d/90-updates-available

Tak więc, aby uzyskać wszystkie informacje logowania ssh dostępne z serwerów migrowanych z 12.04 LTS, należy ręcznie zainstalować powyższe pakiety:

sudo apt-get install landscape-common update-notifier-common
skitheo
źródło