Lue Linux Command - wtmp

Nimi

utmp, wtmp - kirjautumistietueet

tiivistelmä

#include

Kuvaus

Utmp- tiedoston avulla voidaan löytää tietoa siitä, kuka käyttää järjestelmää tällä hetkellä. Järjestelmää voi käyttää useampia käyttäjiä, koska kaikki ohjelmat eivät käytä utmp-kirjautumista.

Varoitus: utmp ei saa olla kirjoitettavissa, koska monet järjestelmäohjelmat (typerästi) riippuvat sen eheydestä. Vakuutat järjestelmän lokitiedostoista ja järjestelmän tiedostojen muutoksista, jos jätät komennon käyttäjälle kirjoitettavaksi.

Tiedosto on joukko merkintöjä, joilla on seuraava rakenne, joka on ilmoitettu sisällytettävässä tiedostossa (huomaa, että tämä on vain yksi useista määritelmistä, yksityiskohdat riippuvat libc-versiosta):

#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 TILINPÄÄTÖS 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {lyhyt int e_termination; / * prosessin lopetustila. * / short int e_exit; / * prosessin poistumistila. * /}; struct utmp {short ut_type; / * kirjautumistyyppi * / pid_t ut_pid; / * pid kirjautumisprosessista * / char ut_line [UT_LINESIZE]; / * tty - "/ dev /" * / char ut_id laitteen nimi [4]; / * init id tai lyhenne. ttyname * / char ut_user [UT_NAMESIZE]; / * käyttäjätunnus * / char ut_host [UT_HOSTSIZE]; / * palvelimen nimi kauko-kirjautumiseen * / struct exit_status ut_exit; / * DEAD_PROCESS-merkinnän prosessin poistumistila. * / pitkä ut_session; / * istunto ID, jota käytetään ikkunointiin * / struct timeval ut_tv; / * aika merkittiin. * / int32_t ut_addr_v6 [4]; / * Etäisännän IP-osoite. * / char pad [20]; / * Varattu myöhempää käyttöä varten. * /}; / * Taaksepäin yhteensopivuus hakata. * / #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]

Tämä rakenne antaa käyttäjän päätelaitteeseen liittyvän erityistiedoston nimen, käyttäjän kirjautumisnimen ja sisäänkirjautumisaika ajan muodossa (2). String-kentät päättyvät "\ 0", jos ne ovat lyhyempiä kuin kentän koko.

Ensimmäiset luodut tulokset tulevat init (8) inittab- käsittelystä (5). Ennen tulon käsittelyä kuitenkin init (8) puhdistaa utmp: n asettamalla ut_type : n DEAD_PROCESS-arvoon , poistamalla ut_user , ut_host ja ut_time null tavuilla jokaiselle tietueelle, jonka ut_type ei ole DEAD_PROCESS tai RUN_LVL ja jossa ei ole olemassa prosessia PID ut_pid: n kanssa . Jos ei löydy tyhjää tietuetta, jossa tarvittava ut_id löytyy, init luo uuden. Se asettaa ut_id inittab, ut_pid ja ut_time nykyisiin arvoihin ja ut_type INIT_PROCESSiin .

getty (8) etsii merkinnän pid, muuttaa ut_type : n LOGIN_PROCESS , muuttaa ut_time , asettaa ut_line ja odottaa yhteyden muodostamista. kirjautumis (8), kun käyttäjä on todennut, muuttaa ut_typeä USER_PROCESS , muuttaa ut_time ja asettaa ut_host ja ut_addr . Getty (8) ja kirjautumis (8) mukaan tietueet voidaan sijoittaa ut_line: n sijaan suositeltavan ut_pid sijasta.

Kun init (8) havaitsee, että prosessi on poistunut, se etsii utmp-merkintänsä ut_pid: llä , asettaa ut_type- arvon DEAD_PROCESS ja tyhjentää ut_user , ut_host ja ut_time null tavuilla.

xterm (1) ja muut pääteemulaattorit luo suoraan USER_PROCESS- tietueen ja luo ut_id käyttämällä kahta viimeistä kirjainta / dev / ttyp % c tai käyttämällä % d / dev / pts / % d . Jos he löytävät DEAD_PROCESS tämän tunnuksen, he kierrättävät sitä, muuten ne luovat uuden merkinnän. Jos he voivat, he merkitsevät sen DEAD_PROCESSin poistumishetkellä ja on suositeltavaa, että ne ovat null ut_line , ut_time , ut_user ja ut_host samoin.

xdm (8) ei saa luoda utmp-tietuetta, koska ei ole määritettyä päätelaitetta. Salli sen luominen johtaa virheisiin, kuten "sormi: ei voi stat /dev/machine.dom". Sen pitäisi luoda wtmp-merkinnät, kuten ftpd (8).

telnetd (8) asettaa LOGIN_PROCESS- merkinnän ja jättää loput kirjautumiseen (8) tavalliseen tapaan. Telnet-istunnon päätyttyä telnetd (8) puhdistaa ylöspäin kuvatulla tavalla.

Wtmp-tiedosto tallentaa kaikki sisäänkirjautumiset ja kirjautumiset. Sen muoto on täsmälleen sama kuin utmp paitsi, että nolla-käyttäjätunnus ilmoittaa uloskirjauksen liittyvältä päätteeltä. Lisäksi terminaalin nimi "~", jolla on käyttäjänimi "shutdown" tai "reboot", osoittaa järjestelmän sammuttamisen tai uudelleenkäynnistyksen ja terminaalien nimien "|" / "}" kirjaa vanhan / uuden järjestelmän ajan, kun päivämäärä (1) muuttaa sen. wtmp ylläpidetään kirjautumalla (1), init (1) ja eräillä getty (1) -versioilla. Kumpikaan näistä ohjelmista ei luo tiedostoa , joten jos se poistetaan, tallennustila ei ole käytössä.