Dysgwch Reolaeth Linux - wtmp

Enw

utmp, wtmp - cofnodion mewngofnodi

Crynodeb

#include

Disgrifiad

Mae'r ffeil utmp yn caniatáu i un ddarganfod gwybodaeth am bwy sy'n defnyddio'r system ar hyn o bryd. Efallai y bydd mwy o ddefnyddwyr yn defnyddio'r system ar hyn o bryd, oherwydd nid yw pob rhaglen yn defnyddio logio utmp.

Rhybudd: ni ddylai utmp fod yn writable , oherwydd mae llawer o raglenni'r system (ffôl) yn dibynnu ar ei gyfanrwydd. Rydych yn peryglu cofnodau ffeiliau system ac addasiadau ffeiliau'r system os byddwch yn gadael utmp y gellir ei hysgrifennu i unrhyw ddefnyddiwr.

Mae'r ffeil yn gyfres o gofnodion gyda'r strwythur canlynol wedi'i ddatgan yn y ffeil yn cynnwys (nodwch mai dim ond un o sawl diffiniad yw hwn; mae manylion yn dibynnu ar y fersiwn o 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; / * statws terfynu prosesau. * / short int e_exit; / * statws gadael y broses. * /}; strwyth utmp {short ut_type; / * math o fewngofnodi * / pid_t ut_pid; / * pid o broses mewngofnodi * / char ut_line [UT_LINESIZE]; / * enw dyfais tty - "/ dev /" * / char ut_id [4]; / * init id neu abbrev. ttyname * / char ut_user [UT_NAMESIZE]; / * enw defnyddiwr * / char ut_host [UT_HOSTSIZE]; / * enw gwesteiwr ar gyfer mewngofnod anghysbell * / struct exit_status ut_exit; / * Statws ymadael proses a nodir fel DEAD_PROCESS. * / long ut_session; / * ID sesiwn, a ddefnyddir ar gyfer ffenestri * / struct timeval ut_tv; / * cofnodwyd amser. * / int32_t ut_addr_v6 [4]; / * Cyfeiriad IP y gwesteiwr pell. * / pad pad [20]; / * Wedi'i gadw ar gyfer defnydd yn y dyfodol. * /}; / * Halogion cydweddoldeb yn ôl. * / #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]

Mae'r strwythur hwn yn rhoi enw'r ffeil arbennig sy'n gysylltiedig â therfynell y defnyddiwr, enw mewngofnodi y defnyddiwr, ac amser mewngofnodi ar ffurf amser (2). Caiff caeau llinynnol eu terfynu gan '\ 0' os ydynt yn fyrrach na maint y cae.

Y canlyniadau cyntaf a grëwyd erioed wedi deillio o init (8) inittab prosesu (5). Cyn prosesu cofnod, fodd bynnag, mae init (8) yn glanhau utmp trwy osod ut_type i DEAD_PROCESS , gan glirio ut_user , ut_host , a ut_time gyda null bytes ar gyfer pob cofnod nad ut_type DEAD_PROCESS neu RUN_LVL a lle nad oes proses gyda PID ut_pid yn bodoli. Os na ellir dod o hyd i unrhyw gofnod gwag gyda'r ut_id angenrheidiol, mae cychwyn yn creu un newydd. Mae'n gosod ut_id o'r inittab, ut_pid a ut_time i'r gwerthoedd cyfredol, ac ut_type i INIT_PROCESS .

Mae getty (8) yn gosod y cofnod gan y pid, yn newid ut_type i LOGIN_PROCESS , yn newid ut_time , yn gosod ut_line , ac yn aros i gael ei sefydlu. mewngofnodi (8), ar ôl i ddefnyddiwr gael ei ddilysu, newid ut_type i USER_PROCESS , newid ut_time , a gosod ut_host a ut_addr . Yn dibynnu ar getty (8) a mewngofnodi (8), mae'n bosibl y bydd cofnodion yn cael eu lleoli trwy ut_line yn hytrach na'r ut_pid yn well.

Pan fydd init (8) yn canfod bod proses wedi dod i ben, mae'n lleoli ei fynediad utmp trwy ut_pid , yn gosod ut_type i DEAD_PROCESS , ac yn clirio ut_user , ut_host a ut_time gyda null bytes.

Mae xterm (1) ac emulawyr terfynol eraill yn creu cofnod USER_PROCESS yn uniongyrchol ac yn cynhyrchu'r ut_id trwy ddefnyddio'r ddau lythyr olaf / dev / ttyp % c neu drwy ddefnyddio p % d ar gyfer / dev / pts / % d . Os byddant yn dod o hyd i DEAD_PROCESS ar gyfer yr id hwn, maent yn ei ailgylchu, neu fel arall maent yn creu cofnod newydd. Os gallant, byddant yn ei nodi fel DEAD_PROCESS ar ddod allan ac fe'u cynghorir eu bod yn null ut_line , ut_time , ut_user , a ut_host hefyd.

Ni ddylai xdm (8) greu record defnydd, oherwydd nid oes terfynell neilltuedig. Bydd gadael iddo greu un yn arwain at gamgymeriadau, fel 'bys: ni all stat /dev/machine.dom'. Dylai greu cofnodion wtmp, fodd bynnag, yn union fel ftpd (8).

mae telnetd (8) yn sefydlu cofnod LOGIN_PROCESS ac yn gadael y gweddill i fewngofnodi (8) fel arfer. Ar ôl i'r sesiwn telnet ddod i ben, telnetd (8) yn glanhau utmp yn y ffordd a ddisgrifir.

Mae'r ffeil wtmp yn cofnodi'r holl logiau a logouts. Mae ei fformat yn union fel utmp ac eithrio bod enw defnyddiwr null yn dynodi logout ar y terfynell gysylltiedig. Ar ben hynny, mae'r enw terfynol "~" gydag enw'r defnyddiwr "shutdown" neu "resboot" yn dangos system i gau neu ailgychwyn y system ac mae'r ddau enw terfynol "|" / "}" yn cofnodi'r hen system / amser newydd pan fo dyddiad (1) yn ei newid. Mae wtmp yn cael ei gynnal trwy fewngofnodi (1), init (1), a rhai fersiynau o getty (1). Nid yw'r naill a'r llall o'r rhaglenni hyn yn creu'r ffeil , felly os caiff ei dynnu, cadw cofnodion yn cael ei ddiffodd.