Aprende o comando Linux - wtmp

Nome

utmp, wtmp - rexistros de inicio de sesión

Sinopse

#include

Descrición

O ficheiro utmp permite descubrir información sobre quen está a usar o sistema actualmente. Pode haber máis usuarios que usan actualmente o sistema, porque non todos os programas utilizan o rexistro de utmp.

Aviso: o utmp non se pode escribir, porque moitos programas do sistema (tolamente) dependen da súa integridade. Corremos os ficheiros de rexistro falsos do sistema e as modificacións dos ficheiros do sistema se deixas de escribir calquera usuario a utmp .

O ficheiro é unha secuencia de entradas coa seguinte estrutura declarada no ficheiro de inclusión (ten en conta que esta é só unha das varias definicións en torno; os detalles dependen da versión de 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 CONTABILIDADE 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {short int e_termination; / * estado de finalización do proceso. * / short int e_exit; / * estado de saída do proceso. * /}; struct utmp {short ut_type; / * tipo de inicio de sesión * / pid_t ut_pid; / * pid do proceso de inicio de sesión * / char ut_line [UT_LINESIZE]; / * nome do dispositivo de tty - "/ dev /" * / char ut_id [4]; / * init id ou abbrev. ttyname * / char ut_user [UT_NAMESIZE]; / * nome de usuario * / char ut_host [UT_HOSTSIZE]; / * nome do servidor para o inicio de sesión remoto * / struct exit_status ut_exit; / * O estado de saída dun proceso marcado como DEAD_PROCESS. * / longa sesión; / * ID de sesión, usado para fiestras * / struct timeval ut_tv; / * entrada de tempo foi feita. * / int32_t ut_addr_v6 [4]; / * Enderezo IP do host remoto. * / char pad [20]; / * Reservado para uso futuro. * /}; / * Hacks de compatibilidade con versións anteriores. * / #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]

Esta estrutura dá o nome do ficheiro especial asociado ao terminal do usuario, o nome de usuario do usuario e a hora de inicio de sesión en forma de tempo (2). Os campos de cadea termínanse con '\ 0' se son máis curtos que o tamaño do campo.

As primeiras entradas creadas desde init (8) inittab de procesamento (5). Antes de que se procesue unha entrada, sen embargo, init (8) limpa o utmp establecendo ut_type en DEAD_PROCESS , borrando ut_user , ut_host e ut_time con bytes nulos para cada rexistro que ut_type non é DEAD_PROCESS ou RUN_LVL e onde non hai ningún proceso con PID ut_pid . Se non se atopa un rexistro baleiro co ut_id necesario, init crea un novo. Establece ut_id desde inittab, ut_pid e ut_time aos valores actuais e ut_type a INIT_PROCESS .

getty (8) localiza a entrada mediante o pid, cambia o tipo de letra a LOGIN_PROCESS , cambia a hora ut_ , define ut_line e agarda que se estableza a conexión. inicio de sesión (8), despois de que un usuario foi autenticado, cambia o tipo de usuario a USER_PROCESS , cambia a hora ut_ , e establece ut_host e ut_addr . Dependendo de getty (8) e de inicio de sesión (8), os rexistros poden estar situados por ut_line en lugar do preferido ut_pid .

Cando init (8) descobre que un proceso saíu, sitúa a súa entrada utp por ut_pid , define ut_type como DEAD_PROCESS e elimina ut_user , ut_host e ut_time con bytes nulos.

xterm (1) e outros emuladores de terminal crean directamente un rexistro USER_PROCESS e xeran o ut_id empregando as dúas últimas letras de / dev / ttyp % c ou empregando p % d para / dev / pts / % d . Se atopan un DEAD_PROCESS para esta identificación, o reciclan, se non, crean unha nova entrada. Se poden, marcaranse como DEAD_PROCESS ao saír e recoméndase que non teñen nengunha utilidade , ut_time , ut_user e ut_host tamén.

xdm (8) non debería crear un rexistro utmp, porque non hai ningún terminal asignado. Deixalo crear un fará que se producen erros, como 'dedo: non se pode stat /dev/machine.dom'. Debe crear entradas de wtmp, pero, como fpd (8) fai.

telnetd (8) configura unha entrada LOGIN_PROCESS e deixa o resto para iniciar sesión (8) como de costume. Despois de que a sesión de telnet remata, telnetd (8) limpa o utmp do xeito descrito.

O ficheiro wtmp rexistra todos os logins e logouts. O seu formato é exactamente igual a utmp, agás que un nome de usuario nulo indica un logout no terminal asociado. Ademais, o nome de terminal "~" co nome de usuario "apagado" ou "reinicio" indica un apagado ou reinicio do sistema eo par de nomes de terminal "|" / "}" rexistra o tempo do sistema antigo / novo cando a data (1) cámbiala. wtmp é mantido por login (1), init (1), e algunhas versións de getty (1). Ningún destes programas crea o ficheiro , polo que se se elimina, o mantemento de rexistros está desactivado.