losutmp El archivo permite descubrir información sobre quién está utilizando actualmente el sistema. Puede que haya más usuarios actualmente usando el sistema, porque no todos los programas usan el registro de utmp.
Advertencia: utmp No debe poder escribirse, porque muchos programas del sistema (tontamente) dependen de su integridad. Corre el riesgo de archivos de registro del sistema falsificados y modificaciones de los archivos del sistema si dejautmpSe puede escribir a cualquier usuario.
El archivo es una secuencia de entradas con la siguiente estructura declarada en el archivo de inclusión (tenga en cuenta que esta es solo una de varias definiciones; los detalles dependen de la 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. UT_HOSTSIZE 256 struct exit_status {short int e_termination; / * Estado de terminación del proceso. * / short int e_exit; / * Estado de salida del proceso. * /}; struct utmp {short ut_type; / * tipo de inicio de sesión * / pid_t ut_pid; / * pid del proceso de inicio de sesión * / char ut_line UT_LINESIZE; / * nombre del dispositivo de tty - "/ dev /" * / char ut_id 4; / * ID de inicio o abreviatura. ttyname * / char ut_user UT_NAMESIZE; / * nombre de usuario * / char ut_host UT_HOSTSIZE; / * nombre de host para inicio de sesión remoto * / struct exit_status ut_exit; / * El estado de salida de un proceso marcado como DEAD_PROCESS. * / long ut_session; / * ID de sesión, usado para ventanas * / struct timeval ut_tv; / * Se hizo la entrada de tiempo. * / int32_t ut_addr_v6 4; / * Dirección IP del host remoto. * / char pad 20; /* Reservado para uso futuro. * /}; / * Hacks de compatibilidad hacia atrás. * / #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 estructura proporciona el nombre del archivo especial asociado con el terminal del usuario, el nombre de inicio de sesión del usuario y la hora de inicio de sesión en forma dehora(2). Los campos de cadena son terminados por' ' si son más cortos que el tamaño del campo.
Las primeras entradas jamás creadas resultado de en eso (8) procesamiento inittab (5). Antes de que una entrada sea procesada, sin embargo, en eso (8) limpia utmp estableciendout_type aDEAD_PROCESSdespejandout_user, ut_hostyut_time con bytes nulos para cada registro queut_type no esDEAD_PROCESS oRUN_LVL y donde no hay proceso con PIDut_pid existe Si no hay registro vacío con el necesariout_id se puede encontrar, init crea uno nuevo. Se estableceut_id desde el inittab,ut_pid yut_time a los valores actuales, yut_type aINIT_PROCESS.
getty (8) localiza la entrada por el pid, cambiaut_type aLOGIN_PROCESScambiosut_timeconjuntosut_line, y espera a que se establezca la conexión. iniciar sesión (8), después de que un usuario ha sido autenticado, cambiaut_type aUSER_PROCESOcambiosut_time, y conjuntosut_host yut_addr. Dependiendo de getty (8) y iniciar sesión (8), los registros pueden ser localizados porut_line en lugar de lo preferibleut_pid.
Cuando en eso (8) encuentra que ha salido un proceso, localiza su entrada utmp porut_pidconjuntosut_type aDEAD_PROCESS, y despejaut_user, ut_host yut_time con bytes nulos.
xterm (1) y otros emuladores de terminal crean directamente unUSER_PROCESO grabar y generar elut_id utilizando las dos últimas letras de/ dev / ttyp %do o usandopag %re para/ dev / pts / %re . Si encuentran unDEAD_PROCESS para esta identificación, la reciclan, de lo contrario, crean una nueva entrada. Si pueden, lo marcarán comoDEAD_PROCESS Al salir y se aconseja que sean nulas. ut_line,ut_time, ut_useryut_host también.
xdm (8) no debe crear un registro utmp, porque no hay un terminal asignado. Si lo creamos, se producirán errores, como 'dedo: no se puede /dev/machine.dom'. Debe crear entradas wtmp, sin embargo, al igual que ftpd (8) hace.
telnetd (8) establece unaLOGIN_PROCESS Entrada y deja el resto para. iniciar sesión (8) como de costumbre. Después de que termine la sesión de telnet, telnetd (8) limpia utmp de la manera descrita.
loswtmp archivo registra todos los inicios de sesión y salidas de sesión. Su formato es exactamente igual autmp excepto que un nombre de usuario nulo indica un cierre de sesión en el terminal asociado. Además, el nombre del terminal'~'con nombre de usuario"apagar" o"reiniciar" indica un apagado o reinicio del sistema y el par de nombres de terminales'|'/'}' registra la hora antigua / nueva del sistema cuando fecha (1) lo cambia.wtmp es mantenido por iniciar sesión (1), en eso (1), y algunas versiones de getty (1). Ninguno de estos programas crea el archivo, por lo que si se elimina, el mantenimiento de registros se desactiva.




