Alamin ang Linux Command - wtmp

Pangalan

utmp, wtmp - mga tala sa pag-login

Buod

# isama ang

Paglalarawan

Pinapayagan ka ng utmp file na 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) ay nakasalalay sa integridad nito. Naka-peligro ka sa mga logfiles ng sistema ng pag-faked at mga pagbabago sa mga file system kung umalis ka sa utmp na writable 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 istraktura na 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 ng oras (2). Ang mga patlang ng string ay tinapos ng '\ 0' kung mas maikli kaysa sa sukat ng field.

Ang unang mga entry na nilikha ng resulta mula sa init (8) processing inittab (5). Bago ang proseso ng pagpasok, bagaman, init (8) linisin ang utmp sa pamamagitan ng pagtatakda ng ut_type sa DEAD_PROCESS , pag-clear ng ut_user , ut_host , at ut_time na may null byte para sa bawat talaan na ut_type ay hindi DEAD_PROCESS o RUN_LVL at kung saan walang prosesong may PID ut_pid na umiiral. Kung walang nakikitang talaan na may kinakailangang ut_id , ang init ay lumilikha ng bago. Nagtatakda ito ng ut_id mula sa inittab, ut_pid at ut_time sa kasalukuyang mga halaga, at ut_type sa INIT_PROCESS .

Ang getty (8) ay naglalagay ng entry sa pamamagitan ng pid, nagbabago ut_type sa LOGIN_PROCESS , nagbabago ut_time , nakatakda ut_line , at naghihintay para maitatag ang koneksyon. login (8), matapos ang isang user ay napatotohanan, ang mga ut_type na pagbabago sa USER_PROCESS , nagbabago ut_time , at nagtatakda ng ut_host at ut_addr . Depende sa getty (8) at pag- login (8), ang mga tala ay maaaring matatagpuan sa ut_line sa halip na ang ginustong ut_pid .

Kapag natuklasan ng init (8) na lumabas ang isang proseso, tinitingnan nito ang utmp entry sa pamamagitan ng ut_pid , nagtatakda ut_type sa DEAD_PROCESS , at nililimas ang ut_user , ut_host at ut_time na may null bytes.

Direktang lumikha ng xterm (1) at iba pang mga terminal emulators ang isang USER_PROCESS record at bubuuin ang ut_id sa pamamagitan ng paggamit ng huling dalawang titik ng / dev / ttyp % c o sa pamamagitan ng paggamit ng p % d para sa / dev / pts / % d . Kung nakakita sila ng isang DEAD_PROCESS para sa id na ito, muling recycle nila ito, kung hindi, lumikha sila ng bagong entry. Kung maaari nila, markahan nila ito bilang DEAD_PROCESS sa paglabas at ipinapayo na null null ut_line , ut_time , ut_user , at ut_host .

Ang xdm (8) ay hindi dapat gumawa 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, bagaman, tulad ng ftpd (8).

Ang telnetd (8) ay nagtatakda ng entry ng LOGIN_PROCESS at iniiwan ang natitira upang mag- login (8) gaya ng dati. Matapos magwakas ang telnet session, telnetd (8) linisin ang utmp sa inilarawan na paraan.

Itinatala ng wtmp file ang lahat ng mga pag-login at logout. Ang format nito ay eksakto tulad ng utmp maliban na ang isang null na pangalan ng user ay nagpapahiwatig ng isang pag-logout sa nauugnay na terminal. Bukod dito, ang terminal name "~" na may pangalan ng user na "shutdown" o "reboot" ay nagpapahiwatig ng isang sistema ng shutdown o reboot at ang pares ng mga pangalan ng terminal "|" / "}" ang mga log ng luma / bagong oras ng sistema kapag ang petsa (1) ay nagbabago. Ang wtmp ay pinananatili sa pamamagitan ng pag- login (1), init (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.