Линукс Тушаалын талаар суралцаарай - wtmp

Нэр

wmpmp - нэвтрэлтийн бүртгэл

Ерөнхий агуулга

# 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 ACCOUNTING 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {богино int e_termination; / * процесс дуусгавар болох төлөв. * / богино int e_exit; / * үйл явцын гарцын төлөв. * /}; бүтцийн 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]; / * нэртэй алсын нэвтрэх * / бүтээс exit_status ut_exit; / * DEAD_PROCESS гэж тэмдэглэгдсэн үйл явцын гарах статус. * / урт ut_session; / * Сессийн ID цонхыг * ашигладаг / timestream ut_tv; / * цаг оруулав. * / int32_t ut_addr_v6 [4]; / * Алсын хостын IP хаяг. * / char дэвсгэр [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 болгож цэвэрлээд utduser , ut_host , ut_time -г null bytes -аар цэвэрлэж DEE_PROCESS эсвэл RUN_LVL биш бөгөөд PID -тай процесс байхгүй эсэхийг үзээрэй . Шаардлагатай ut_id бүхий хоосон бичлэг олдохгүй бол init шинээр үүсгэх болно. Энэ нь inittab , ut_pid болон ut_time-ээс ut_id -г одоогийн утгууд руу, ut_id- ийг INIT_PROCESS-д заадаг .

getty (8) нь pid оруулгуудыг байршуулах, ut_type- г LOGIN_PROCESS руу өөрчлөх , ut_time- г өөрчлөх , ut_line- г тохируулах , холболтыг хүлээж авахыг хүлээж байдаг. login (8), хэрэглэгчийг таниулсны дараа ut_time- г өөрчлөх, ut_time- г өөрчлөх, ut_host болон ut_addr гэж зааж өгдөг . Getty (8) болон нэвтрэлт (8) -аас хамаараад бичлэгүүд нь илүү зохимжтой ut_pid-ийн оронд ut_line -ээр байрлана .

Init (8) процесс гарсныг үзэхэд өөрийн utmp оруулга нь ut_pid -ээр байрлах , ut_type- г DEAD_PROCESS болгож, ut_user , ut_host болон ut_time -г null bytes гэсэн аргаар тодорхойлдог.

xterm (1) болон бусад терминалийн emulators нь USER_PROCESS бичлэгийг үүсгээд ut_id -г / dev / ttyp % c -ийн сүүлийн хоёр үсэгийг ашиглан эсвэл / dev / pts / % d -ийг p % d -ийг ашиглан үүсгэнэ . Хэрэв тэд энэ ID-г DEAD_PROCESS олж авбал тэдгээрийг дахин боловсруулах бөгөөд ингэхгүй бол тэд шинэ бүртгэл үүсгэнэ. Хэрэв боломжтой бол тэдгээрийг DEAD_PROCESS гэж гарчигдах болно гэж тэмдэглэх бөгөөд тэдгээр нь null ut_line , ut_time , ut_user , ut_host бас байхыг зөвлөж байна.

xdm (8) нь заагдсан терминал байхгүй учир utmp бичлэг үүсгэх ёсгүй. Үүнийг үүсгэхийг зөвшөөрөх нэг нь алдаа үүсгэх болно, жишээ нь: finger: /dev/machine.dom файл үүсгэж болохгүй. Энэ нь wtmp оруулгуудыг үүсгэх ёстой, гэхдээ ftpd (8) -ийг яг ашигладаг.

telnetd (8) нь LOGIN_PROCESS бичлэгийг үүсгэж , үлдсэнийг нь ердийн логинд нэвтрэхэд (8) оруулдаг . Телектийн сесс дууссаны дараа telnetd (8) нь зааж өгсөн зам дахь utmp-г цэвэрлэх.

Wtmp файл нь бүх нэвтрэлтүүд ба бүртгэлүүдийг бүртгэдэг. Энэ хэлбэр нь utmp-тэй яг адилхан null гэсэн нэртэй нь холбогдох терминал дээр гарахыг заана. Цаашлаад "~" нэртэй "shutdown" буюу "дахин ачаалах" нэртэй терминал нь системийг унтрааж эсвэл дахин ачаална гэсэн үг бөгөөд "|" / "}" огноо (1) өөрчлөгдсөн үед хуучин / шинэ системийн цагийг бүртгэдэг. wtmp нь login (1), init (1), болон getty (1) -ийн зарим хувилбараар зохицуулагддаг. Эдгээр програмуудын аль нь ч файлыг үүсгэдэг, тиймээс устгагдсан бол бүртгэлийг хаасан байна.