Вывучаюць каманды Linux - wtmp

імя

utmp, wtmp - лагін запісу

канспект

#include

апісанне

Файл utmp дазваляе выявіць інфармацыю аб тым, хто ў цяперашні час выкарыстоўвае сістэму. Там можа быць больш карыстальнікаў у цяперашні час выкарыстоўвае сістэму, так як не ўсе праграмы выкарыстоўваюць utmp рэгістрацыі.

Увага: 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 бухгалтарскія 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 структура exit_status {кароткі INT e_termination; / * Статус завяршэння працэсу. * / Кароткі INT e_exit; / * Статус завяршэння працэсу. * /}; структура utmp {кароткі ut_type; / * Тып Лагін * / pid_t ut_pid; / * Ідэнтыфікатар працэсу ўваходу ў працэс * / паўкокс ut_line [UT_LINESIZE]; / * Імя прылады TTY - "/ DEV /" * / сімвал ut_id [4]; / * Ідэнтыфікатар ініцыялізацыі або скарачэнне. ttyname * / сімвал ut_user [UT_NAMESIZE]; / * Імя карыстальніка * / сімвал ut_host [UT_HOSTSIZE]; / * Імя хаста для аддаленага ўваходу ў сістэму * / структура exit_status ut_exit; / * Статус выхаду працэсу, пазначаны як DEAD_PROCESS. * / Доўгі ut_session; / * Ідэнтыфікатар сеансу, які выкарыстоўваецца для аконнага * / структура ut_tv фармату: першы фармат; / * Запіс часу была зроблена. * / Int32_t ut_addr_v6 [4]; / * IP-адрас аддаленага хаста. * / Сімвал калодкі [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» , калі яны карацей , чым памер поля.

Першыя запісы калі - небудзь створаных вынік ініцыялізацыі (8) inittab апрацоўкі (5). Перад тым як запіс апрацоўваецца, хоць, ініцыялізацыі (8) ачышчае utmp шляхам ўстаноўкі ut_type да DEAD_PROCESS, чысцячы ut_user, ut_host і ut_time нулявымі байтамі для кожнага запісу , якая ut_type ня DEAD_PROCESS або RUN_LVL і дзе ні адзін працэс з PID ut_pid не існуе. Калі не пустая запіс з неабходнай ut_id не можа быць знойдзена, ініцыялізацыя стварае новую. Ён устанаўлівае ut_id з inittab, ut_pid і ut_time з бягучымі значэннямі, і ut_type да INIT_PROCESS.

Геці (8) знаходзіць ўвод ПІД, змены ut_type да LOGIN_PROCESS, змяняе ut_time, ўсталёўвае ut_line, і чакае будзе ўстаноўлена злучэнне. Лагін (8), пасля таго, як карыстальнік быў ідэнтыфікаваны, мяняе ut_type да USER_PROCESS, змяняе ut_time, і ўстанаўлівае ut_host і ut_addr. У залежнасці ад Геці (8) і Лагін (8), запісы могуць быць размешчаны па ut_line замест пераважнага ut_pid.

Пры ініцыялізацыі (8) выяўляе , што працэс завяршыўся, ён знаходзіць свой запіс utmp па ut_pid, ўсталёўвае ut_type да DEAD_PROCESS, і ачышчае ut_user, ut_host і ut_time з нулявымі байтамі.

Xterm (1) і іншыя эмулятары тэрміналу непасрэдна ствараюць запіс USER_PROCESS і генераваць ut_id, выкарыстоўваючы апошнія дзве літары / Dev / ttyp% C або з дапамогай р% D для / Dev / PTS /% D. Калі яны знаходзяць DEAD_PROCESS для гэтага ідэнтыфікатара, яны перапрацоўваюць яго, у адваротным выпадку яны ствараюць новую запіс. Калі яны могуць, яны будуць адзначаць яго як DEAD_PROCESS на выхадзе , і паведаміў , што яны абнуліць ut_line, ut_time, ut_user і ut_host , а таксама.

XDM (8) не павінен ствараць utmp запісы, таму што не прызначылі тэрмінал. Дазволіць гэта стварыць прывядзе да памылак, напрыклад, як «палец: не можа стат /dev/machine.dom. Ён павінен стварыць wtmp запісу, хоць, так жа , як даемон (8) робіць.

Telnetd (8) устанаўлівае запіс LOGIN_PROCESS а астатняе для ўваходу (8) , як звычайна. Пасля заканчэння сеансу Telnet, Telnetd (8) ачышчае utmp апісаным спосабам.

Файл wtmp запісвае ўсе ўваходы і выхады з сістэмы. Яго фармат сапраўды як utmp выключэннем таго, што нулявое імя карыстальніка паказвае на выхад з сістэмы на адпаведны тэрмінал. Акрамя таго, імя тэрмінала «~» з імем карыстальніка «выключэнне» або «перазагрузка» азначае адключэнне сістэмы або перазагрузку і пару імёнаў тэрміналаў «|» / "}» Заносы старое / новае сістэмны час , калі дата (1) змяняе яго. wtmp падтрымліваецца ўваходу ў сістэму (1), ініцыялізацыі (1), і некаторыя версіі Геці (1). Ні адна з гэтых праграм стварае файл , таму калі ён будзе выдалены, справаводства выключаны.