Запознајте се со командата за Linux - wtmp

Име

utmp, wtmp - запис за најава

Синопсис

# Вклучи

Опис

Утмп датотеката овозможува да открие информации за тоа кој моментално го користи системот. Може да има повеќе корисници кои го користат системот, бидејќи не сите програми користат најавување.

Предупредување: utmp не смее да биде запишан, бидејќи многу системски програми (глупаво) зависат од нејзиниот интегритет. Вие ризикувате фалсификувани системски лозинки и модификации на системските датотеки ако го напуштите utmp кој може да се запише на кој било корисник.

Датотеката е низа на записи со следната структура објавена во датотеката за вклучување (забележете дека ова е само една од неколкуте дефиниции наоколу, деталите зависат од верзијата на 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 {краток int e_termination; / * статус на престанок на процесот. * / short int e_exit; / * статус излез од процесот. * /}; struct utmp {краток ut_type; / * тип на најава * / pid_t ut_pid; / * pid на процесот на најавување * / char ut_line [UT_LINESIZE]; / * името на уредот на tty - "/ dev /" * / char ut_id [4]; / * init id или abbrev. ttyname * / char ut_user [UT_NAMESIZE]; / * корисничко име * / char ut_host [UT_HOSTSIZE]; / * hostname за далечинско најавување * / struct exit_status ut_exit; / * Излезниот статус на процес означен како DEAD_PROCESS. * / long ut_session; / * сесија ID, се користи за прозорец * / struct timeval ut_tv; / * е направен внес на време. * / int32_t ut_addr_v6 [4]; / * IP адресата на оддалечениот компјутер. * / char pad [20]; / * Резервирано за понатамошна употреба. * /}; / * Назад хардвер хакери. * / #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]

Оваа структура го дава името на специјалната датотека поврзана со терминалот на корисникот, корисничкото име на корисникот и времето на најавување во форма на време (2). Стринг-полињата се прекинуваат со '\ 0' ако се пократки од големината на полето.

Првите записи некогаш создадени се резултат на init (8) обработка inittab (5). Пред да се обработи записот, init (8) го чисти утмп со поставување на ut_type на DEAD_PROCESS , отворајќи ги ut_user , ut_host и ut_time со нулти бајти за секој запис кој ut_type не е DEAD_PROCESS или RUN_LVL и каде што не постои процес со PID ut_pid . Ако не може да се најде празен запис со потребната ut_id , init создава нова. Поставува ut_id од inittab, ut_pid и ut_time до моменталните вредности, и ut_type во INIT_PROCESS .

getty (8) го лоцира влезот од pid, менува ut_type на LOGIN_PROCESS , промени ut_time , поставува ut_line , и чека да се воспостави врска. најавување (8), откако корисникот е најавен, промени ut_type до USER_PROCESS , промени ut_time , и ги поставува ut_host и ut_addr . Зависно од Getty (8) и најава (8), евиденцијата може да биде лоцирана по ut_line наместо пожелно ut_pid .

Кога init (8) открива дека процесот излезе, го лоцира својот упад во влез од ut_pid , поставува ut_type во DEAD_PROCESS и ги бриши ut_user , ut_host и ut_time со нулти бајти.

xterm (1) и други терминални емулатори директно креираат запис USER_PROCESS и генерираат ut_id со користење на последните две букви од / dev / ttyp % c или со користење на p % d за / dev / pts / % d . Ако најдат DEAD_PROCESS за овој идентификатор, тие го рециклираат, инаку создаваат нов запис. Ако тие можат, тие ќе го обележат како DEAD_PROCESS при излегување и се советува дека тие нулти ut_line , ut_time , ut_user и ut_host, исто така.

xdm (8) не треба да создаде запис за utmp, бидејќи нема назначен терминал. Да се ​​дозволи да создаде еден, ќе резултира со грешки, како што се "прст: не може да биде stat /dev/machine.dom". Таа треба да создаде записи wtmp, иако, исто како и ftpd (8).

telnetd (8) поставува запис за LOGIN_PROCESS и го остава остатокот да се најавува (8) како и обично. По завршувањето на телнет-сесијата, telnetd (8) го исчистува utmp на опишаниот начин.

Датотеката wtmp ги запишува сите најави и одјавувања. Неговиот формат е токму како utmp, освен што нулелното корисничко име укажува на одјава на придружниот терминал. Покрај тоа, името на терминалот "~" со корисничко име "исклучување" или "рестартирање" означува системско исклучување или рестартирање и пар терминални имиња "|" / "}" го најавува старото / новото системско време кога датумот (1) го менува. wtmp се одржува со најавување (1), init (1), и некои верзии на Getty (1). Ниту една од овие програми не ја создава датотеката , па ако е отстранета, запишувањето е исклучено.