Jakie są różne sposoby wyświetlania komunikatu w powłoce bash po zalogowaniu się użytkownika?

14

Mam VPS CentOS 5.7 używający bash jako powłoki, która wyświetla markowe powitanie natychmiast po zalogowaniu przez SSH. Próbowałem to zmodyfikować, ale nie mogę znaleźć, gdzie to jest w zwykłych miejscach. Do tej pory zajrzałem do motdpliku i sprawdziłem sshd_configustawienia pliku banera. Plik baneru nie jest ustawiony.

Gdzie jeszcze mogę sprawdzić, gdzie może być komunikat logowania?

Wesley
źródło
1
Można spróbować rekurencyjnej grepw /etcjakiegoś podzbioru wiadomości.
Kevin
@Kevin Czekaj, śledzisz mnie na Twitterze? Właśnie pomyślałem, że używam grep -r do znalezienia czegoś. Tyle że jestem doofusem i postanowiłem zacząć od / =)
Wesley
Ja też zacząłem od /, trwa wiecznie na dysku 1 TB, powiem ci ... Ale nigdy nie byłem na Twitterze :)
Kevin
@WesleyDavid czy możesz opublikować zrzut ekranu?
Karlson

Odpowiedzi:

22

Tradycyjne systemy uniksowe są wyświetlane /etc/motdpo pomyślnym uwierzytelnieniu użytkownika i przed wywołaniem powłoki użytkownika. W nowoczesnych systemach odbywa się to przez pam_motdmoduł PAM, który można skonfigurować w /etc/pam.conflub /etc/pam.d/*wyświetlać inny plik.

Sam serwer ssh może być skonfigurowany do drukowania, /etc/motdjeśli PrintMotdopcja nie jest wyłączona /etc/sshd_config. Może także wydrukować czas poprzedniego logowania, jeśli PrintLastLognie zostanie wyłączony.

Kolejna tradycyjna wiadomość może powiedzieć, czy to You have new mailczy You have mail. W systemach z PAM jest to wykonywane przez pam_mailmoduł. Niektóre powłoki mogą wydrukować wiadomość o dostępnej poczcie.

Po uruchomieniu powłoki użytkownika pliki startowe użytkownika mogą wydrukować dodatkowe wiadomości. Dla interaktywnego logowania, jeśli powłoka logowania użytkownika jest powłoka Bourne stylu, spojrzeć w /etc/profile, ~/.profileplus ~/.bash_profilei ~/.bash_logindla bash. Dla interaktywnego logowania do zsh, należy szukać w /etc/zprofile, /etc/zlogin, /etc/zshrc, ~/.zprofile, ~/.zlogini ~/.zshrc. Aby uzyskać interaktywne logowanie do csh, zajrzyj do /etc/csh.logini ~/.login.

Jeśli powłoka logowania użytkownika to bash i jest to logowanie nieinteraktywne, wówczas bash jest wykonywany ~/.bashrc(co jest naprawdę dziwne, ponieważ ~/.bashrcjest wykonywane dla interaktywnych powłok tylko wtedy, gdy powłoka nie jest powłoką logowania). Może to być źródłem problemów; Zalecam umieszczenie następującego fragmentu u góry, ~/.bashrcaby się wycofać, jeśli powłoka nie jest interaktywna:

if [[ $- != *i* ]]; then return; fi
Gilles „SO- przestań być zły”
źródło
To była seria echa w moim .bash_profile. > _ <To pytanie jest obce oryginale, ale: Czy echo rzeczy w .bash_profile nie wydaje się złym sposobem wysłania wiadomości? Może lepiej, jeśli chcesz wysyłać wiadomości tylko do jednego użytkownika. To w końcu konto root. Z drugiej strony jestem noobem, więc nie jestem w stanie oceniać rzeczy zbyt krytycznie.
Wesley,
@WesleyDavid Echoing coś w .bash_profiletylko wysyła wiadomość do siebie. Niektóre osoby lubią widzieć przydatne lub śmieszne wiadomości po zalogowaniu. Nie mogę mówić o koncie głównym systemu, ponieważ nie znam ani treści wiadomości, ani zaangażowanych osób i ustawień.
Gilles 'SO - przestań być zły'
Umieszczenie wiadomości w / etc / motd działało na Mac OS X, co jest wszystkim, czego potrzebowałem. Dziękuję za to.
dgig
8

Jest kilka:

/etc/motd
/etc/issue
/etc/profile - Could echo the message
/etc/profile.d/* - Would be called from /etc/profile

do tego

/etc/bash_bashrc
/etc/.bashrc
/etc/bashrc
$HOME/.profile
$HOME/.bashrc

Być może będziesz musiał przejrzeć każdy program, który jest wywoływany z tych skryptów, ponieważ coś w tym rodzaju fortunemoże przechowywać znaki, w których się wyświetla /usr/share. Aby go wyodrębnić, możesz:

. /etc/profile
. /etc/bash.bashrc
. $HOME/.profile
. $HOME/.bashrc

Na Ubuntu jest także plik:

/etc/motd.tail
Karlson
źródło
1
/etc/issuejest tradycyjnie pokazywany przed zalogowaniem się użytkownika, a nie później.
Chris Down
Dzięki! Nie wiedziałem o profilei profile.d. Niestety, wszystkie cztery twoje sugestie niczego nie pokazały. Zastanawiam się, czy coś niestandardowego jest wkompilowane w plik bash ...?
Wesley
@ChrisDown Racja, ale nie znam żadnego systemu, który wyświetlałby cokolwiek na ekranie po wyświetleniu monitu.
Karlson
@WesleyDavid Poprawiłem odpowiedź.
Karlson
Dziękuję bardzo za wszystkie informacje! To dało mi wiele do nauczenia się różnych sposobów, w jakie powłoki mogą wysyłać informacje do sesji TTY. =)
Wesley
3

Nowsze systemy przechowują komponenty MOTD, /etc/update-motd.daby można było uruchamiać różne makra w celu dostosowania motd, aby wyświetlał informacje o aktualizacji, alerty systemowe itp. Podczas logowania.

Dodaj swoje dostosowanie jako inny plik z priorytetem od 00do99

99-footerzwykle ładuje się, /etc/motd.tailjeśli wystarcza sczepienie go do końca i nie chcesz używać żadnego z elementów makro.

Fiasco Labs
źródło
1

Możesz zajrzeć /etc/shell, tam znalazłem wiadomość, którą próbowałem zmienić. Komentowanie za pomocą „#” nie działa, wystarczy usunąć dowolny tekst i dodać własny. Podczas umieszczania ich w pliku pojawią się również spacje i nowe linie.

Miguel Herrera
źródło