Nasza mała firma prowadzi Ubuntu Server 11.10, do którego kilka osób ma dostęp do SSH. Czasami używane są również rzeczywiste terminale. Jak możemy lokalnie zapisać wszystkie uruchomione polecenia Bash, wraz z użytkownikiem i znacznikiem czasu?
Możemy założyć, że nikt nie jest nikczemny i aktywnie próbuje uniknąć rejestrowania, ale nadal wolelibyśmy, aby użytkownicy nie mieli bezpośredniego dostępu do zapisu do swoich plików dziennika. Sesje jednoczesne muszą być obsługiwane poprawnie.
PROMPT_COMMAND
lub uruchamiając powłokę inną niż bash.System rozliczania procesów może być pomocny w tym względzie, szczególnie pakiet acct , który udostępnia polecenia lastcomm i ac.
Polecenia ac drukują statystyki dotyczące czasu połączenia użytkowników w godzinach. Jest to czas, przez jaki użytkownik był podłączony do systemu, albo zdalnie przez SSH lub terminal szeregowy, albo w konsoli.
Polecenie lastcomm wyświetla informacje o wcześniej wykonanych poleceniach. Najnowsze wpisy znajdują się na górze listy. Wyświetlana jest również łączna ilość czasu procesora, którą wykorzystał każdy proces.
Stary samouczek, który może być pomocny, znajduje się tutaj:
http://www.linuxjournal.com/article/6144?page=0,1
W tym samouczku można znaleźć inne polecenia księgowe, takie jak ostatni itd.:
http://www.techrepublic.com/article/system-accounting-in-linux/1053377
źródło
Możesz użyć snoopy .
Snoopy logger może dobrze pasować do twojego celu. Nie ma być nieuniknionym rozwiązaniem do rejestrowania, ale raczej pomocnym narzędziem dla rzetelnych administratorów, którzy wolą śledzić własne działania.
Ujawnienie: Jestem opiekunem snoopy.
źródło
Znajdziesz tutaj skrypt do rejestrowania wszystkich poleceń bash / wbudowanych w pliku tekstowym lub serwerze syslog bez użycia łaty lub specjalnego narzędzia wykonywalnego.
Bardzo łatwe do wdrożenia, ponieważ jest to prosty skrypt powłoki, który należy wywołać raz podczas inicjalizacji bash .
Jest bezpłatny i mam nadzieję, że odpowiada Twoim potrzebom.
źródło
Aby zająć się wieloma sesjami, nie nadpisując pliku historii, będziesz musiał umieścić „shopt -s histappend” w pliku startowym Bash. Zobacz także to pytanie dotyczące tego samego problemu.
źródło
spróbuj tego (powyższe rozwiązania nie będą działać w 100% z bash 4.3):
robi to logowanie ORAZ zapobiega rejestrowaniu znaczników czasu, które są używane dla pliku historii bash. pułapka jest potrzebna, ponieważ bash wyśle sygnały do „subjob” po wielokrotnym naciśnięciu strg + c (testowane z bash 4.3). wymusi to wylogowanie bieżącego użytkownika (np. zalogowanego za pomocą sudo)
źródło
Możesz także spróbować zainstalować acct. Acct prowadzi szczegółową ścieżkę audytu tego, co dzieje się w systemach Linux.
źródło