Linux Command-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 ACCOUNTING 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {short int e_termination; / * процесті тоқтату мәртебесі. * / қысқа int e_exit; / * процестің шығу күйі. * /}; struct utmp {қысқа ut_type; / * кіру түрі * / pid_t ut_pid; / * login process * 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]; / * Қашықтан кіруге арналған хост атауы * / struct exit_status ut_exit; / * DEAD_PROCESS деп белгіленген процестің шығу күйі. * / Ұзын ut_session; / * терезе үшін пайдаланылатын сеанс идентификаторы * / 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 параметріне орнату арқылы utmp-ді тазартады, ut_type DEAD_PROCESS немесе RUN_LVL емес және PID ut_pid- мен ешқандай процесс жоқ әрбір жазба үшін null байтпен ut_user , ut_host және ut_time параметрлерін тазалайды. Егер қажеті жоқ 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 параметрін орнатады және қосылуды күтеді. login (8), пайдаланушы түпнұсқалығы расталғаннан кейін, ut_type түртіндісіне USER_PROCESS өзгертеді , ut_time өзгертеді және ut_host және ut_addr параметрлерін орнатады. Getty (8) және login (8) түріне байланысты, жазбалар ut_pid орнына ut_line арқылы орналасуы мүмкін.

Егер init (8) процестің аяқталғанын анықтаса , ut_pid арқылы utmp енгізуін анықтайды, ut_type мәнін DEAD_PROCESS етіп орнатады және ut_user , ut_host және ut_time мәндерін нөлдік байтпен тазалайды.

xterm (1) және басқа терминал эмуляторлары тікелей USER_PROCESS жазба жасайды және / dev / ttyp % c соңғы екі әріпін пайдаланып немесе / dev / pts / % d үшін p % d арқылы ut_id құрыңыз . Егер олар осы идентификаторға DEAD_PROCESS тапса , олар оны қайта өңдейді, әйтпесе олар жаңа жазба жасайды. Егер олар мүмкін болса, олар оны DEAD_PROCESS деп белгілейді және олар null ut_line , ut_time , ut_user және ut_host- ті де ұсынады.

xdm (8) utmp жазбасын жасамауы керек, өйткені тағайындалған терминал жоқ. Біреуін жасай отырып, «саусағыңыз: stat /dev/machine.dom» сияқты қателерге әкеледі. Ол wtmp жазбаларын жасауы керек, бірақ ftpd (8) сияқты.

telnetd (8) LOGIN_PROCESS жазбасын орнатады және қалғандарын әдеттегідей кіруге қалдырады (8). Telnet сеансы аяқталғаннан кейін telnetd (8) сипатталған жолмен utmp тазартады.

Wtmp файлы барлық логин мен жүйеден шығып кетеді. Оның пішімі дәл utmp сияқты, тек нөлдік пайдаланушы аты байланысқан терминалдағы шығуды көрсетеді. Бұған қоса, «өшіру» немесе «қайта жүктеу» деген терминді білдіретін «~» терминалы жүйені өшіруді немесе қайта жүктеуді көрсетеді және терминнің «|» / «}» ескі / жаңа жүйелік уақытты күн (1) өзгерткен кезде тіркейді. wtmp кіреді login (1), init (1) және getty кейбір нұсқалары (1). Бұл бағдарламалардың ешқайсысы файлды жасамайды , сондықтан жойылған жағдайда, жазбалар өшіріледі.