Ituutmp file memungkinkan seseorang untuk menemukan informasi tentang siapa yang saat ini menggunakan sistem. Mungkin ada lebih banyak pengguna saat ini menggunakan sistem, karena tidak semua program menggunakan utmp logging.
Peringatan: utmp tidak boleh dapat ditulis, karena banyak program sistem (secara bodoh) bergantung pada integritasnya. Anda berisiko memalsukan logfile sistem dan modifikasi file sistem jika Anda pergiutmpdapat ditulis ke semua pengguna.
File adalah urutan entri dengan struktur berikut yang dinyatakan dalam file include (perhatikan bahwa ini hanya salah satu dari beberapa definisi di sekitar; detail bergantung pada 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 pengakhiran proses. * / short int e_exit; / * memproses status keluar. * /}; struct utmp {short ut_type; / * Jenis login * / pid_t ut_pid; / * pid proses login * / char ut_line UT_LINESIZE; / * nama perangkat tty - "/ dev /" * / char ut_id 4; / * id atau singkatan init. ttyname * / char ut_user UT_NAMESIZE; / * nama pengguna * / char ut_host UT_HOSTSIZE; / * nama host untuk login jarak jauh * / struct exit_status ut_exit; / * Status keluar dari proses ditandai sebagai DEAD_PROCESS. * / panjang ut_session; / * ID sesi, digunakan untuk windowing * / struct timeval ut_tv; / * Entri waktu dibuat. * / int32_t ut_addr_v6 4; / * Alamat IP host jarak jauh. * / char pad 20; / * Dicadangkan untuk penggunaan di masa mendatang. * /}; / * Pencocokan kompatibilitas mundur. * / #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 file khusus yang terkait dengan terminal pengguna, nama login pengguna, dan waktu login dalam bentukwaktu(2). Bidang string diakhiri oleh' ' jika lebih pendek dari ukuran lapangan.
Entri pertama yang pernah dibuat hasil dari init (8) pemrosesan inittab (5). Sebelum entri diproses, init (8) bersihkan utmp dengan pengaturanut_type untukDEAD_PROCESS, membersihkanut_user, ut_host, danut_time dengan null byte untuk setiap record yangut_type tidakDEAD_PROCESS atauRUN_LVL dan di mana tidak ada proses dengan PIDut_pid ada. Jika tidak ada catatan kosong dengan yang dibutuhkanut_id dapat ditemukan, init membuat yang baru. Ini setut_id dari inittab,ut_pid danut_time ke nilai saat ini, danut_type untukINIT_PROCESS.
getty (8) menempatkan entri oleh pid, perubahanut_type untukLOGIN_PROCESS, berubahut_time, setut_line, dan menunggu koneksi dibuat. masuk (8), setelah pengguna diautentikasi, berubahut_type untukUSER_PROCESS, berubahut_time, dan setut_host danut_addr. Bergantung kepada getty (8) dan masuk (8), catatan dapat ditemukan olehut_line bukannya yang lebih disukaiut_pid.
Kapan init (8) menemukan bahwa proses telah keluar, itu menempatkan entri utmp olehut_pid, setut_type untukDEAD_PROCESS, dan membersihkanut_user, ut_host danut_time dengan null byte.
xterm (1) dan emulator terminal lainnya langsung membuatUSER_PROCESS merekam dan menghasilkanut_id dengan menggunakan dua huruf terakhir dari/ dev / ttyp % c atau dengan menggunakanp % d untuk/ dev / pts / % d . Jika mereka menemukanDEAD_PROCESS untuk id ini, mereka mendaur ulangnya, jika tidak, mereka membuat entri baru. Jika mereka bisa, mereka akan menandainya sebagaiDEAD_PROCESS saat keluar dan disarankan untuk membatalkannya ut_line,ut_time, ut_user, danut_host demikian juga.
xdm (8) tidak boleh membuat catatan utmp, karena tidak ada terminal yang ditetapkan. Membiarkan itu membuat satu akan menghasilkan kesalahan, seperti 'jari: tidak dapat stat / dev / machine.dom'. Ini seharusnya membuat entri wtmp, seperti halnya ftpd (8) tidak.
telnetd (8) menyiapkan aLOGIN_PROCESS masuk dan biarkan sisanya masuk (8) seperti biasa. Setelah sesi telnet berakhir, telnetd (8) bersihkan utmp dengan cara yang dijelaskan.
Ituwtmp file mencatat semua login dan logout. Formatnya persis sepertiutmp kecuali bahwa nama pengguna null menunjukkan logout pada terminal terkait. Selanjutnya, nama terminalnya'~'dengan nama pengguna"mematikan" atau"reboot" menunjukkan sistem shutdown atau reboot dan sepasang nama terminal'|'/'}' log waktu sistem lama / baru kapan tanggal (1) mengubahnya.wtmp dikelola oleh masuk (1), init (1), dan beberapa versi dari getty (1). Tidak satu pun dari program ini yang membuat file, jadi jika dihapus, pencatatan dinonaktifkan.




