Linux komandasini o'rganing - wtmp

Ism

utmp, wtmp - kirish yozuvlari

Sinopsis

#include

Ta'rif

Utmp fayli, kimning hozir tizimdan foydalanayotganligi haqida ma'lumotni topishga imkon beradi. Hozirda tizimdan foydalanuvchi ko'p foydalanuvchilar bo'lishi mumkin, chunki barcha dasturlar utmp protokolini ishlatmaydi.

Ogohlantirish: utmp yoziladigan bo'lishi mumkin emas, chunki ko'plab tizim dasturlari (aqldan ozish) uning yaxlitligiga bog'liq. Har qanday foydalanuvchi uchun yoziladigan utmp ni tark etsangiz, sistema fayllari tizim fayllarini va tizim fayllarini modifikatsiyalashni tahlikaga solasiz.

Fayl, qo'shilgan faylda e'lon qilingan quyidagi strukturaga ega bo'lgan yozuvlar ketma-ketligidir (bu atrofdagi bir nechta ta'riflardan faqat bittasi ekanligini biling, batafsil libc versiyasiga bog'liq):

#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 {qisqa int e_termination; / * jarayonni tugatish holati. * / Qisqa int e_exit; / * jarayondagi chiqish holati. * /}; struct utmp {qisqa ut_type; / * login usuli * / pid_t ut_pid; / * login jarayonining pid * / char ut_line [UT_LINESIZE]; / * tty qurilmasining nomi - "/ dev /" * / char ut_id [4]; / * init id yoki abbrev. ttyname * / char ut_user [UT_NAMESIZE]; / * foydalanuvchi nomi * / char ut_host [UT_HOSTSIZE]; / * Masofaviy login uchun * hostname * / struct exit_status ut_exit; / * DEAD_PROCESS deb belgilangan jarayonning chiqish holati. * / Uzoq ut_session; / * Windowing uchun ishlatiladigan tizim identifikatori * / struct timeval ut_tv; / * Vaqt yozilgan edi. * / int32_t ut_addr_v6 [4]; / * Uzoq kompyuterning IP-manzili. * / char pad [20]; / * Kelajakda foydalanish uchun himoyalangan. * /}; / * Orqaga qarab muvofiqligi buziladi. * / #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]

Ushbu tizim foydalanuvchining terminaliga, foydalanuvchining loginiga va vaqt shaklida kiritilgan vaqtga bog'liq maxsus fayl nomini beradi (2). Dalagagi maydonlari maydonning o'lchamidan kattaroq bo'lsa, '\ 0' tugmachalari tugaydi.

Shu paytgacha yaratilgan birinchi yozuvlar init (8) processt inittab (5) dan olingan. Biror yozuvni qayta ishlashdan oldin, init (8) ut_typeni DEAD_PROCESS yoki RUN_LVL emas va PID ut_pid bilan hech qanday operatsiya mavjud bo'lmagan har bir yozuv uchun null bayt bilan ut_user , ut_host va ut_time ni ut_type ni DEAD_PROCESS ga sozlab , utmp ni tozalaydi. Agar zarurat bo'lmaganda ut_id bilan bo'sh yozuvlar topilmasa, init bir yangi fayl yaratadi. Ut_id, inittab, ut_pid va ut_time- dan joriy qiymatlarga va ut_type ni INIT_PROCESS uchun o'rnatadi .

Getty (8) pid tomonidan kiritilgan yozuvni topadi, ut_type ni LOGIN_PROCESS ga o'zgartiradi, ut_time o'zgartiradi, ut_lineni o'rnatadi va ulanishni kutadi. login (8), foydalanuvchi autentifikatsiya qilinganidan so'ng, ut_type ni USER_PROCESS ga o'zgartiradi, ut_timeni o'zgartiradi va ut_host va ut_addr-ni o'rnatadi . Getty (8) va login (8) ga qarab yozuvlar ut_line tomonidan afzal qilingan ut_pid o'rniga joylashtirilishi mumkin.

Agar init (8) jarayondan chiqsa, ut_pid tomonidan utmp kiritilishini topadi, ut_type ni DEAD_PROCESS ga sozlaydi va ut_user , ut_host va ut_time ni bo'sh bayt bilan tozalaydi.

xterm (1) va boshqa terminal emulyatorlari to'g'ridan-to'g'ri USER_PROCESS yozuvini yaratadi va / dev / ttyp % c ning oxirgi ikki harfini ishlatib ut_id ni yoki / dev / pts / % d uchun p % d dan foydalaning. Agar ular ushbu ID uchun DEAD_PROCESS topsalar, uni qaytadan ishlatadilar, aks holda ular yangi ariza yaratadilar. Agar ular imkon bersalar, buni DEAD_PROCESS deb belgilashadi va ular ut_line , ut_time , ut_user va ut_host ni null yo'q qilishlari kerak.

xdm (8) utmp yozuvini yaratmasligi kerak, chunki tayinlangan terminal mavjud emas. Yaratmoqchi bo'lsangiz, "barmoq: stat /dev/machine.dom" kabi xatolarga olib keladi. Biroq, ftpd (8) kabi, wtmp yozuvlari yaratish kerak.

telnetd (8) bir LOGIN_PROCESS usuli tuzadi va qolganlarni odatdagidek (8) kirish uchun qoldiradi. Telnet sessiyasi tugagandan so'ng, telnetd (8) utmp tasvirlangan usulda tozalaydi.

Wtmp fayli barcha kirish va logouts qayd qiladi. Uning formati faqat utmp-ga o'xshaydi, bunda null foydalanuvchi nomi biriktirilgan terminalda chiqishni ko'rsatadi. Bundan tashqari, "shutdown" yoki "reboot" foydalanuvchi nomi bilan "~" terminal nomi, tizimni o'chirish yoki qayta ishga tushirishni ko'rsatadi va "|" / "}" sana (1) uni o'zgartirganda eski / yangi tizim vaqtini qayd qiladi. wtmp login (1), init (1) va getty ning ba'zi versiyalari (1) tomonidan saqlanadi. Ushbu dasturlardan hech biri fayl yaratmaydi, shuning uchun olib tashlansa, yozuvni o'chirib qo'yish kerak.