Chciałbym edytować Last login:
informacje wydrukowane wraz z komunikatem dnia, ale nie mogę znaleźć skryptu, który generuje i generuje echo.
Gdzie to jest zdefiniowane, w łatwym do edycji skrypcie powłoki, lub zamknięte w pliku binarnym?
Uwaga: różni się to od ServerFault: Jak mogę edytować wiadomość powitalną po uruchomieniu ssh? . Informacje o „ostatnim logowaniu” nie są drukowane od wewnątrz /etc/update-motd.d/
, ale są definiowane poprzez ustawienie PrintLastLog
flagi, dlatego nie można ich edytować tak jak inne części wiadomości dnia.
utmp
iwtmp
pliki (w zależności od dystrybucji, zameldowania/var/run/utmp
lub/var/log/utmp
lub szukać w/var
katalogu). Pliki te nie są zapisywane jako tekst, ale jako pliki binarne, więc będziesz potrzebować specjalnych narzędzi do ich edycji. Plik utmp śledzi bieżący stan logowania każdego użytkownika. Plik wtmp rejestruje całą historię logowania i wylogowania. Będziesz potrzebował specjalnych narzędzi do ich edycji, ale tak naprawdę nic nie mogłem znaleźć.Odpowiedzi:
Wygląda na to, że format drukowanej linii jest wkompilowany w
sshd
:[me@risby ~]$ ssh lory
Last login: Fri May 23 10:59:01 2014 from 2a01:2c0:e:300:7271:bcff:feac:445a
[me@lory ~]$ strings /usr/sbin/sshd | grep -i "last login"
Last login: %s
Last login: %s from %s
Nie widzę też żadnej opcji konfiguracji, aby to zmienić, więc musisz edytować źródło i ponownie skompilować.
Edycja : W ograniczającym przypadku możesz znaleźć źródło na http://www.openssh.org . Ale nie mówisz nam, że używasz OpenSSH, ani nic na temat swojej platformy, więc trudno jest być bardziej szczegółowym. Jeśli jest to system Linux, znacznie lepiej byłoby, gdyby źródło było właściwe dla twojej dystrybucji w zwykły sposób i ponownie skompilowałaś za pomocą mechanizmów specyficznych dla tej dystrybucji.
Ale tak naprawdę, to nie powinien robić tego w ogóle , chyba że masz bardzo przekonujące-biznesu powód, aby to zrobić: robisz konserwacyjnych koszmar dla siebie, będzie ręcznie skompilowane wersji pakietu bezpieczeństwa wrażliwych.
źródło
sshd
?wtmp
, ustawiająPrintLastLog
flagęno
i ponownie tworzą powiadomienie o „ostatnim logowaniu” z własnym skryptemupdate-motd.d
. Znacznie bardziej przyjazny w utrzymaniu. :)motd
wyniki nie są całkowicie aktualne. Myślę więc, żeupdate-motd
może nie być uruchamiane przy każdym logowaniu.Informacje o ostatnim logowaniu są przechowywane
/var/log/wtmp
lub/var/log/utmp
są to pliki binarne. Nie patrząc na kod źródłowy sshd, nie mogę być całkowicie pewien, ale spodziewałbym się, że pobiera informacje z tych plików za pomocą odpowiednich wywołań systemowychWydaje się mało prawdopodobne, że znajdziesz sposób na łatwą zmianę tych informacji, mimo że stanowią one część bezpieczeństwa użytkowników.
Jeśli naprawdę potrzebujesz krwawych szczegółów, musisz spojrzeć na kod źródłowy funkcji, w
login_get_lastlog
której można znaleźćloginrec.c
źródło
Innym rozwiązaniem byłoby wyczyszczenie ekranu na początku pliku motd w następujący sposób:
Uwaga: zamień
^[
na symbol ucieczki (który możesz utworzyć w edytorze nano, naciskając następujące klawisze: esc+ v+ esc)źródło
Być może trochę się obejdzie na wypadek, gdybyś chciał zmienić adres IP ostatniego logowania?
Na przykład możesz zmienić wyświetlany adres IP na „localhost”, logując się ponownie do ssh ze zdalnego komputera!
Zdalne logowanie za pośrednictwem ssh >> nazwa użytkownika ssh @ localhost
Teraz ostatnim zarejestrowanym adresem IP będzie localhost
źródło