Skip to main content

Jak używać Unix Command Utmp w systemie Linux

002 Kurs Linuxa: podstawowe komendy w systemie (Czerwiec 2026)

002 Kurs Linuxa: podstawowe komendy w systemie (Czerwiec 2026)
Anonim

Theutmp plik pozwala odkryć informacje o tym, kto aktualnie korzysta z systemu. Z systemu może korzystać więcej użytkowników, ponieważ nie wszystkie programy korzystają z rejestrowania w protokole utmp.

Ostrzeżenie: utmp nie może być zapisywalny, ponieważ wiele programów systemowych (głupio) zależy od jego integralności. Ryzykujesz sfałszowane logi systemowe i modyfikacje plików systemowych, jeśli opuściszutmpzapisywalny dla dowolnego użytkownika.

Plik jest sekwencją wpisów o następującej strukturze zadeklarowanej w pliku włączającym (zwróć uwagę, że jest to tylko jedna z wielu definicji, szczegóły zależą od wersji libc):

#define UT_UNKNOWN 0 #define RUN_LVL 1 #define BOOT_TIME 2 #define NEW_TIME 3 #define OLD_TIME 4 #define INIT_PROCESS 5 #define LOGIN_PROCESS 6 #define USER_PROCESS 7 #define DEAD_PROCESS 8 #define RACHUNKOWOŚĆ 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {short int e_termination; / * status zakończenia procesu. * / short int e_exit; / * przetwarza status wyjścia. * /}; struct utmp {short ut_type; / * typ logowania * / pid_t ut_pid; / * pid procesu logowania * / char ut_line UT_LINESIZE; / * nazwa urządzenia tty - "/ dev /" * / char ut_id 4; / * init id lub abbrev. ttyname * / char ut_user UT_NAMESIZE; / * nazwa użytkownika * / char ut_host UT_HOSTSIZE; / * nazwa hosta do zdalnego logowania * / struct exit_status ut_exit; / * Status wyjścia procesu oznaczonego jako DEAD_PROCESS. * / long ut_session; / * identyfikator sesji, używany do okienkowania * / struct timeval ut_tv; / * wprowadzono wpis czasowy. * / int32_t ut_addr_v6 4; / * Adres IP zdalnego hosta. * / podkładka 20; / * Zarezerwowany do przyszłego użytku. * /}; / * Wsteczne hacki kompatybilności. * / #define ut_name ut_user #ifndef _NO_UT_TIME #define ut_time ut_tv.tv_sec #endif #define ut_xtime ut_tv.tv_sec #define ut_addr ut_addr_v6 0

Ta struktura podaje nazwę specjalnego pliku powiązanego z terminalem użytkownika, nazwę logowania użytkownika i czas logowania w postaciczas(2). Pola ciągów są kończone przez'' jeśli są krótsze niż rozmiar pola.

Pierwsze wpisy, które kiedykolwiek utworzono, pochodzą z w tym (8) przetwarzanie inittab (5). Jednak przed przetworzeniem wpisu w tym (8) czyści utmp przez ustawienieut_type doDEAD_PROCESS, oczyszczanieut_user, ut_host, iut_time z pustymi bajtami dla każdego rekordu, któryut_type nie jestDEAD_PROCESS lubRUN_LVL i gdzie nie ma procesu z PIDut_pid istnieje. Jeśli nie ma pustego rekordu z potrzebnąut_id można go znaleźć, init tworzy nowy. Ustawiaut_id od inittab,ut_pid iut_time do bieżących wartości, orazut_type doINIT_PROCESS.

getty (8) lokalizuje wpis przez pid, zmianyut_type doLOGIN_PROCESS, zmianyut_time, zestawyut_linei czeka na nawiązanie połączenia. Zaloguj Się (8), po uwierzytelnieniu użytkownika, zmianyut_type doUSER_PROCESS, zmianyut_timei zestawyut_host iut_addr. Zależy od getty (8) i Zaloguj Się (8), zapisy mogą być zlokalizowane przezut_line zamiast preferowanegout_pid.

Gdy w tym (8) stwierdza, że ​​proces został zakończony, lokalizuje swój wpis utmp przezut_pid, zestawyut_type doDEAD_PROCESSi usuwa sięut_user, ut_host iut_time z pustymi bajtami.

xterm (1) i inne emulatory terminala tworzą bezpośrednioUSER_PROCESS nagrywać i generowaćut_id używając dwóch ostatnich liter/ dev / ttyp %do lub za pomocąstr %re dla/ dev / pts / %re . Jeśli znajdąDEAD_PROCESS dla tego identyfikatora przetwarzają go, w przeciwnym razie tworzą nowy wpis. Jeśli to możliwe, oznaczy to jakoDEAD_PROCESS przy wyjściu i zaleca się, aby były puste ut_line,ut_time, ut_user, iut_host także.

xdm (8) nie powinien tworzyć rekordu utmp, ponieważ nie ma przypisanego terminala. Pozwolenie na jej utworzenie spowoduje błędy, takie jak "finger: can not stat /dev/machine.dom". Powinien jednak tworzyć wpisy wtmp ftpd (8) ma.

telnetd (8) ustawia aLOGIN_PROCESS wejście i pozostawia resztę Zaloguj Się (8) jak zwykle. Po zakończeniu sesji telnetu telnetd (8) czyści utmp w opisany sposób.

Thewtmp plik rejestruje wszystkie loginy i wylogowania. Jego format jest dokładnie taki jakutmp z tym że zerowa nazwa użytkownika wskazuje wylogowanie na powiązanym terminalu. Ponadto nazwa terminalu'~'z nazwą użytkownika"zamknąć" lub"restart" wskazuje zamknięcie systemu lub ponowne uruchomienie i parę nazw terminali'|'/'}' rejestruje stary / nowy czas systemowy kiedy data (1) zmienia to.wtmp jest utrzymywany przez Zaloguj Się (1), w tym (1) i niektóre wersje getty (1). Żaden z tych programów nie tworzy pliku, więc jeśli zostanie usunięty, rejestrowanie jest wyłączone.