Ketahui Command Linux - wtmp

Nama

utmp, wtmp - rekod masuk

Sinopsis

#include

Penerangan

Fail utmp membenarkan seseorang untuk mengetahui maklumat mengenai siapa yang sedang menggunakan sistem. Mungkin ada lebih banyak pengguna yang menggunakan sistem ini, kerana tidak semua program menggunakan pembalakan utmp.

Amaran: utmp tidak boleh ditulis, kerana banyak program sistem (kebodohan) bergantung pada integritasnya. Anda risiko logfiles sistem yang dipalsukan dan pengubahsuaian fail sistem jika anda meninggalkan utm yang boleh ditulis kepada mana-mana pengguna.

Fail ini adalah urutan entri dengan struktur berikut yang diisytiharkan dalam fail termasuk (ambil perhatian bahawa ini hanya satu daripada beberapa definisi di sekitar; butiran bergantung kepada 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; / * status penamatan proses. * / int int e_exit; / * proses keluar status. * /}; struct utmp {short ut_type; / * jenis log masuk * / pid_t ut_pid; / * pid proses log masuk * / char ut_line [UT_LINESIZE]; / * nama peranti tty - "/ dev /" * / char ut_id [4]; / * init id atau abbrev. ttyname * / char ut_user [UT_NAMESIZE]; / * nama pengguna * / char ut_host [UT_HOSTSIZE]; / * nama hos untuk log masuk jauh * / struct exit_status ut_exit; / * Status keluar proses yang ditandakan sebagai DEAD_PROCESS. * / panjang ut_session; / * ID sesi, yang digunakan untuk tetingkap * / struct ut_tv akhir zaman; / * kemasukan masa telah dibuat. * / int32_t ut_addr_v6 [4]; / * Alamat IP hos jauh. * / char char [20]; / * Disimpan untuk kegunaan masa depan. * /}; / * Hacks keserasian belakang. * / #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 ini memberikan nama fail khas yang berkaitan dengan terminal pengguna, nama pengguna masuk, dan masa login dalam bentuk waktu (2). Medan rentetan ditamatkan dengan '\ 0' jika mereka lebih pendek daripada saiz medan.

Penyertaan pertama yang dihasilkan hasil dari init (8) pemprosesan inittab (5). Sebelum kemasukan diproses, walaupun, init (8) membersihkan utmp dengan menetapkan ut_type ke DEAD_PROCESS , membersihkan ut_user , ut_host , dan ut_time dengan byte null untuk setiap rekod yang ut_type tidak DEAD_PROCESS atau RUN_LVL dan jika tidak ada proses dengan PID ut_pid ada. Sekiranya tiada rekod kosong dengan ut_id yang diperlukan boleh didapati, init mencipta yang baru. Ia menetapkan ut_id dari inittab, ut_pid dan ut_time ke nilai semasa, dan ut_type ke INIT_PROCESS .

getty (8) menempatkan kemasukan oleh pid, menukar ut_type ke LOGIN_PROCESS , perubahan ut_time , menetapkan ut_line , dan menunggu sambungan akan ditubuhkan. login (8), selepas pengguna telah disahkan, ubah ut_type ke USER_PROCESS , perubahan ut_time , dan set ut_host dan ut_addr . Bergantung pada getty (8) dan log masuk (8), rekod mungkin terletak oleh ut_line dan bukan ut_pid yang lebih baik.

Apabila init (8) mendapati bahawa proses telah keluar, ia menempatkan kemasukan utmpnya dengan ut_pid , set ut_type ke DEAD_PROCESS , dan kosongkan ut_user , ut_host dan ut_time dengan byte null.

xterm (1) dan emulator terminal lain terus mencipta rekod USER_PROCESS dan menghasilkan ut_id dengan menggunakan dua huruf terakhir / dev / ttyp % c atau dengan menggunakan p % d untuk / dev / pts / % d . Jika mereka mendapati DEAD_PROCESS untuk id ini, mereka mengitar semulanya , jika tidak, mereka membuat entri baru. Sekiranya mereka boleh, mereka akan menandakannya sebagai DEAD_PROCESS semasa keluar dan ia dinasihatkan supaya mereka batal ut_line , ut_time , ut_user , dan ut_host juga.

xdm (8) tidak boleh membuat rekod utmp, kerana tiada terminal yang diberikan. Membiarkannya membuat satu akan menyebabkan ralat, seperti 'jari: tidak boleh stat /dev/machine.dom'. Ia seharusnya membuat entri wtmp, walaupun, seperti ftpd (8).

telnetd (8) menetapkan kemasukan LOGIN_PROCESS dan meninggalkan selebihnya untuk login (8) seperti biasa. Selepas sesi telnet berakhir, telnetd (8) membersihkan utmp dengan cara yang dijelaskan.

Fail wtmp merekodkan semua log masuk dan log keluar. Formatnya betul-betul seperti utmp kecuali nama pengguna null menunjukkan log keluar pada terminal yang berkaitan. Selain itu, nama terminal "~" dengan nama pengguna "shutdown" atau "reboot" menandakan sistem shutdown atau reboot dan sepasang nama terminal "|" / "}" log sistem lama / baru ketika tarikh (1) mengubahnya. wtmp dikekalkan oleh login (1), init (1), dan beberapa versi getty (1). Program-program ini tidak membuat fail , jadi jika ia dikeluarkan, penyimpanan rekod dimatikan.