Sinau perintah Linux - wtmp

Jeneng

utmp, wtmp - cathetan login

Sinopsis

#include

Gambaran

Berkas utmp ngijini sampeyan nemokake informasi babagan sing saiki nggunakake sistem. Ana sawetara panganggo sing lagi migunakake sistem iki, amarga ora kabeh program migunakake logging utmp.

Pènget: utmp kudu ora bisa ditulis, amarga akèh program sistem (bodoh) gumantung marang integritas. Sampeyan bisa ngganti logfiles sistem faked lan modifikasi file sistem yen sampeyan ninggalake utm writable kanggo sembarang user.

Berkas iki minangka urutan entri kanthi struktur ing ngisor iki sing diandharake ing file kalebu (catheten yen iki mung salah siji saka sawetara definisi nang; rincian gumantung marang versi 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; / * proses terminasi status. * / short int e_exit; / * proses metu status. * /}; struct utmp {short ut_type; / * tipe login * / pid_t ut_pid; / * pid proses login * / char ut_line [UT_LINESIZE]; / * jeneng piranti tty - "/ dev /" * / char ut_id [4]; / * init id utawa abbrev. ttyname * / char ut_user [UT_NAMESIZE]; / * jeneng panganggo * / char ut_host [UT_HOSTSIZE]; / * hostname kanggo remote login * / struct exit_status ut_exit; / * Status metu saka proses sing ditandhani minangka DEAD_PROCESS. * / ut_session dawa; / * ID sesi, digunakake kanggo windowing * / struct timeval ut_tv; / * entri wektu digawe. * / int32_t ut_addr_v6 [4]; / * Alamat IP saka remote host. * / char pad [20]; / * Reserved kanggo mangsa nggunakake. * /}; / * Backwards kompatibilitas 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]

Struktur iki menehi jeneng file khusus sing digandhengake karo terminal pangguna, jeneng panganggo pangguna, lan wektu mlebu sajrone wektu (2). Kothak string ditandhani dening '\ 0' yen luwih cendhek tinimbang ukuran kolom.

Entri kapisan tau digawe akibat pangolahan init (8) inittab (5). Sadurunge entri diproses, sanadyan, init (8) ngresiki utm kanthi ngeset ut_type menyang DEAD_PROCESS , ngresiki ut_user , ut_host , lan ut_time kanthi byte null kanggo saben rekaman sing ut_type ora DEAD_PROCESS utawa RUN_LVL lan ora ana proses karo PID ut_pid ana . Yen ora ana catetan kosong karo ut_id sing dibutuhake, init nggawe sing anyar. Nyetel ut_id saka inittab, ut_pid lan ut_time kanggo nilai saiki, lan ut_type kanggo INIT_PROCESS .

getty (8) nemokake entri kanthi pid, ganti ut_type dadi LOGIN_PROCESS , owah-owahan ut_time , mranata ut_line , lan ngenteni supaya sambungan bisa diadhekake. login (8), sawise pangguna wis diotentikasi , ganti ut_type dadi USER_PROCESS , ganti ut_time , lan mlebu ut_host lan ut_addr . Gumantung marang getty (8) lan login (8), cathetan bisa ditemokake dening ut_line tinimbang ut_pid sing luwih disengaja .

Nalika init (8) nemokake proses kasebut wis metu, nemokake entri utmp dening ut_pid , ngeset ut_type menyang DEAD_PROCESS , lan ngilangake ut_user , ut_host lan ut_time karo byte nil .

xterm (1) lan emulator terminal liyane langsung nggawe rekaman USER_PROCESS lan generate ut_id kanthi nggunakake rong huruf pungkasan / dev / ttyp % c utawa kanthi nggunakake p % d kanggo / dev / pts / % d . Yen nemokake DEAD_PROCESS kanggo id iki, daur ulang, yen ora nggawe entri anyar. Yen bisa, bakal menehi tandha minangka DEAD_PROCESS nalika metu lan disaranake padha mbatalake ut_line , ut_time , ut_user , lan ut_host uga.

xdm (8) ora nggawe rekaman utf, amarga ora ana terminal sing ditugasi. Ngeculake nggawe siji bakal kasil kasalahan, kayata 'driji: ora bisa stat /dev/machine.dom'. Sampeyan kudu nggawe entri wtmp, senadyan, kaya ftpd (8).

telnetd (8) masang entri LOGIN_PROCESS lan godhong liyane kanggo mlebet (8) kaya biasanipun. Sawise telnet sesi rampung, telnetd (8) cleans up utmp kanthi cara sing dijelasake.

File wtmp ngrekam kabeh logging lan logout. Format kasebut persis kaya utmp kejaba jeneng pangguna null nuduhake logout ing terminal kasebut. Salajengipun, jeneng terminal "~" kanthi jeneng panganggo "shutdown" utawa "reboot" nuduhake sistem shutdown utawa reboot lan pasangan jeneng terminal "|" / "}" nglebokake wektu sistem sing lawas / anyar nalika tanggal (1) ngganti. WTP dikelola kanthi login (1), init (1), lan sawetara versi getty (1). Sanadyan program-program kasebut nggawe file , supaya yen dibusak, rekaman tetep dipateni.