Skip to main content

Paano Gamitin ang Unix Command Utmp sa Linux

How to Monitor User Login and System Restart Activities (Hunyo 2026)

How to Monitor User Login and System Restart Activities (Hunyo 2026)
Anonim

Angutmp file ay nagbibigay-daan sa isa upang matuklasan ang impormasyon tungkol sa kung sino ang kasalukuyang gumagamit ng system. Maaaring mayroong higit pang mga gumagamit na kasalukuyang gumagamit ng system, dahil hindi lahat ng mga programa ay gumagamit ng utmp na pag-log.

Babala: utmp ay hindi dapat maging writable, sapagkat maraming mga programa ng sistema (maloko) ang nakasalalay sa integridad nito. Nagdudulot ka ng peligro sa mga logfiles ng system at pagbabago ng mga file system kung umalis kautmpwritable sa anumang user.

Ang file ay isang pagkakasunud-sunod ng mga entry na may sumusunod na istraktura na ipinahayag sa isama ang file (tandaan na ito ay isa lamang sa ilang mga kahulugan sa paligid; ang mga detalye ay depende sa bersyon ng 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 ACCOUNTING 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {short int e_termination; / * proseso ng pagwawakas ng proseso. * / maikling int e_exit; / * proseso ng exit status. * /}; struct utmp {short ut_type; / * type of login * / pid_t ut_pid; / * pid ng proseso ng pag-login * / char ut_line UT_LINESIZE; / * device name of tty - "/ dev /" * / char ut_id 4; / * init id o abbrev. ttyname * / char ut_user UT_NAMESIZE; / * user name * / char ut_host UT_HOSTSIZE; / * hostname para sa remote login * / struct exit_status ut_exit; / * Ang exit status ng isang proseso na minarkahan bilang DEAD_PROCESS. * / mahaba ut_session; / * session ID, na ginagamit para sa windowing * / struct timeval ut_tv; / * oras entry ay ginawa. * / int32_t ut_addr_v6 4; / * IP address ng remote host. * / char pad 20; / * Nakalaan para sa hinaharap na paggamit. * /}; / * Mga pabalik na compatibility hacks. * / #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

Ang istrakturang ito ay nagbibigay sa pangalan ng espesyal na file na nauugnay sa terminal ng gumagamit, ang pangalan ng pag-login ng gumagamit, at ang oras ng pag-login sa anyo ngoras(2). Tinatapos ng mga patlang ng string'' kung mas maikli kaysa sa sukat ng patlang.

Ang unang mga entry na nilikha kailanman resulta mula sa sa loob (8) pagproseso inittab (5). Bago pa naproseso ang isang entry, bagaman, sa loob (8) linisin ang utmp sa pamamagitan ng pagtatakdaut_type saDEAD_PROCESS, pag-clearut_user, ut_host, atut_time na may null bytes para sa bawat rekord kung saanut_type ay hindiDEAD_PROCESS oRUN_LVL at kung saan walang proseso sa PIDut_pid umiiral. Kung walang rekord na walang laman na kinakailanganut_id ay matatagpuan, ang init ay lumilikha ng bago. Nagtatakda itout_id mula sa inittab,ut_pid atut_time sa mga kasalukuyang halaga, atut_type saINIT_PROCESS.

getty (8) ay naglalagay ng entry sa pamamagitan ng pid, mga pagbabagout_type saLOGIN_PROCESS, mga pagbabagout_time, nagtatakdaut_line, at naghihintay para maitatag ang koneksyon. mag log in (8), matapos ang isang user ay napatotohanan, ang mga pagbabagout_type saUSER_PROCESS, mga pagbabagout_time, at mga setut_host atut_addr. Depende sa getty (8) at mag log in (8), ang mga rekord ay maaaring matatagpuan sa pamamagitan ngut_line sa halip na mas mainamut_pid.

Kailan sa loob (8) ay natagpuan na ang isang proseso ay lumabas, tinitingnan nito ang utmp entry ngut_pid, nagtatakdaut_type saDEAD_PROCESS, at nililimasut_user, ut_host atut_time na may null bytes.

xterm (1) at iba pang mga terminal emulators direktang lumikha ng isangUSER_PROCESS itala at buuin angut_id sa pamamagitan ng paggamit ng huling dalawang titik ng/ dev / ttyp % c o sa pamamagitan ng paggamitp % d para sa/ dev / pts / % d . Kung nakakita sila ng isangDEAD_PROCESS para sa id na ito, i-recycle nila ito, kung hindi, lumikha sila ng bagong entry. Kung magagawa nila, markahan nila ito bilangDEAD_PROCESS sa paglabas at ito ay pinapayuhan na sila null ut_line,ut_time, ut_user, atut_host din.

xdm (8) ay hindi dapat lumikha ng isang utmp record, dahil walang nakatalagang terminal. Ang pagpapaalam sa paggawa nito ay magreresulta sa mga pagkakamali, gaya ng 'daliri: hindi maaaring stat /dev/machine.dom'. Dapat itong lumikha ng mga entry sa wtmp, gayunpaman, tulad nito ftpd (8) ang ginagawa.

telnetd (8) nagtatakda ng isangLOGIN_PROCESS entry at umalis sa iba pa mag log in (8) gaya ng dati. Matapos ang pagtatapos ng telnet, telnetd (8) linisin ang utmp sa paraan ng inilarawan.

Angwtmp Itinatala ng file ang lahat ng mga pag-login at logout. Tulad ng format nitoutmp maliban na ang isang null na pangalan ng user ay nagpapahiwatig ng pag-logout sa nauugnay na terminal. Bukod dito, ang pangalan ng terminal'~'na may pangalan ng user"shutdown" o"reboot" ay nagpapahiwatig ng isang sistema ng shutdown o reboot at ang pares ng mga pangalan ng terminal'|'/'}' nag-log ng luma / bagong oras ng sistema kung kailan petsa (1) nagbabago ito.wtmp ay pinananatili ng mag log in (1), sa loob (1), at ilang mga bersyon ng getty (1). Ang alinman sa mga programang ito ay lumilikha ng file, kaya kung ito ay tinanggal, ang pag-record ay naka-off.