Skip to main content

Bagaimana Menggunakan Unix Command Utmp di Linux

Fix Kali Linux Login Problem (Jun 2026)

Fix Kali Linux Login Problem (Jun 2026)
Anonim

Theutmp fail 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 kepada integriti. Anda risiko logfiles sistem yang dipalsukan dan pengubahsuaian fail sistem jika anda pergiutmpboleh tulis 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 login pengguna, dan masa login dalam bentukmasa(2). Medan rentetan ditamatkan oleh'' jika mereka lebih pendek daripada saiz padang.

Penyertaan pertama yang dihasilkan hasil dari di dalamnya (8) pemprosesan inittab (5). Sebelum kemasukan diproses, walaupun, di dalamnya (8) membersihkan utmp dengan menetapkanut_type kepadaDEAD_PROCESS, membersihkanut_user, ut_host, danut_time dengan bait null untuk setiap rekod yang manaut_type tidakDEAD_PROCESS atauRUN_LVL dan di mana tiada proses dengan PIDut_pid wujud. Jika tiada rekod kosong dengan yang diperlukanut_id boleh didapati, init mencipta yang baru. Ia ditetapkanut_id dari inittab,ut_pid danut_time kepada nilai semasa, danut_type kepadaINIT_PROCESS.

getty (8) menempatkan kemasukan oleh pid, perubahanut_type kepadaLOGIN_PROCESS, perubahanut_time, setut_line, dan menunggu sambungan akan ditubuhkan. log masuk (8), selepas pengguna telah disahkan, perubahanut_type kepadaUSER_PROCESS, perubahanut_time, dan setut_host danut_addr. Bergantung kepada getty (8) dan log masuk (8), rekod mungkin terletak olehut_line bukannya yang lebih baikut_pid.

Bila di dalamnya (8) mendapati bahawa proses telah keluar, ia menempatkan kemasukan utmpnya olehut_pid, setut_type kepadaDEAD_PROCESS, dan membersihkanut_user, ut_host danut_time dengan null bytes.

xterm (1) dan emulator terminal lain terus menciptaUSER_PROCESS rekod dan menjanaut_id dengan menggunakan dua huruf terakhir/ dev / ttyp % c atau dengan menggunakanp % d untuk/ dev / pts / % d . Jika mereka mendapati aDEAD_PROCESS untuk id ini, mereka mengitar semula ia, jika tidak, mereka membuat entri baru. Sekiranya mereka boleh, mereka akan menandakannya sebagaiDEAD_PROCESS semasa keluar dan dinasihatkan supaya mereka batal ut_line,ut_time, ut_user, danut_host juga.

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

telnetd (8) menetapkan aLOGIN_PROCESS kemasukan dan meninggalkan selebihnya kepada log masuk (8) seperti biasa. Selepas sesi telnet berakhir, telnetd (8) membersihkan utmp dengan cara yang dijelaskan.

Thewtmp rekod fail semua log masuk dan log keluar. Formatnya betul-betul sepertiutmp kecuali bahawa nama pengguna null menunjukkan log keluar pada terminal yang berkaitan. Tambahan pula, nama terminal'~'dengan nama pengguna"menutup" atau"reboot" menunjukkan sistem shutdown atau reboot dan sepasang nama terminal'|'/'}' log sistem masa lama / baru ketika Tarikh (1) mengubahnya.wtmp dikekalkan oleh log masuk (1), di dalamnya (1), dan beberapa versi getty (1). Program-program ini tidak membuat fail, jadi jika ia dikeluarkan, penyimpanan rekod dimatikan.