.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1993 Michael Haardt (michael@cantor.informatik.rwth-aachen.de), .\" Fri Apr 2 11:32:09 MET DST 1993 .\" .\" %%%LICENSE_START(GPLv2+_DOC_FULL) .\" This is free documentation; you can redistribute it and/or .\" modify it under the terms of the GNU General Public License as .\" published by the Free Software Foundation; either version 2 of .\" the License, or (at your option) any later version. .\" .\" The GNU General Public License's references to "object code" .\" and "executables" are to be interpreted as the output of any .\" document formatting or typesetting system, including .\" intermediate and printed output. .\" .\" This manual is distributed in the hope that it will be useful, .\" but WITHOUT ANY WARRANTY; without even the implied warranty of .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the .\" GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this manual; if not, see .\" . .\" %%%LICENSE_END .\" .\" Modified 1993-07-25 by Rik Faith (faith@cs.unc.edu) .\" Modified 1995-02-26 by Michael Haardt .\" Modified 1996-07-20 by Michael Haardt .\" Modified 1997-07-02 by Nicolás Lichtmaier .\" Modified 2004-10-31 by aeb, following Gwenole Beauchesne .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH UTMP 5 "21 Diciembre 2020" Linux "Manual del Programador de Linux" .SH NOMBRE utmp, wtmp \- registro de sesiones .SH SINOPSIS \fB#include \fP .SH DESCRIPCIÓN El archivo \fIutmp\fP nos permite obtener información acerca de qué usuarios están usando el sistema actualmente. No todas las aplicaciones usan el registro de utmp por lo que puede haber usuarios que no figuren. .PP \fBAtención:\fP \fIutmp\fP no debe ser modificable ya que muchos programas del sistema dependen (tontamente) de su integridad. Corre el riesgo de tener registros del sistema ("logs" en inglés) incorrectos e incluso modificaciones indeseadas de archivos del sistema si deja que cualquiera pueda escribir en \fIutmp\fP. .PP El archivo es una secuencia de estructuras de \fIutmp\fP, declaradas a continuación en el archivo \fI\fP (esto es sólo una posible definición ya que los detalles dependen de la versión de libc): .PP .in +4n .EX /* Valores para el campo ut_type */ #define EMPTY 0 /* El registro no contiene información válida (definido anteriormente en Linux como UT_UNKNOWN) */ #define RUN_LVL 1 /* Modifica el nivel de ejecución del sistema (vea \fBinit\fP(1)) */ #define BOOT_TIME 2 /* Hora de arranque del sistema (en \fIut_tv\fP) */ #define NEW_TIME 3 /* Hora después de modificar el reloj del sistema (en \fIut_tv\fP) */ #define OLD_TIME 4 /* Hora antes de modificar el reloj del sistema (en \fIut_tv\fP) */ #define INIT_PROCESS 5 /* Proceso iniciado por \fBinit\fP(1) */ #define LOGIN_PROCESS 6 /* Proceso principal para el inicio de sesión del usuario */ #define USER_PROCESS 7 /* Proceso corriente*/ #define DEAD_PROCESS 8 /* Proceso finalizado */ #define ACCOUNTING 9 /* Actualmente sin uso */ #define UT_LINESIZE 32 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status { /* Type for ut_exit, below */ short e_termination; /* Process termination status */ short e_exit; /* Process exit status */ }; struct utmp { short ut_type; /* Tipo de registro */ pid_t ut_pid; /* PID del proceso de inicio de sesión */ char ut_line[UT_LINESIZE]; /* Nombre de dispositivo del terminal \- "/dev/" */ char ut_id[4]; /* Extensión del nombre de terminal, o ID de inittab(5) */ char ut_user[UT_NAMESIZE]; /* Nombre de usuario */ char ut_host[UT_HOSTSIZE]; /* Nombre del host para sesión remota o versión del núcleo para los mensajes del nivel de ejecución */ struct exit_status ut_exit; /* Estado de salida de un proceso marcado como DEAD_PROCESS; no se usa en el init(1) de Linux*/ /* ut_session y ut_tv fields tiene que tener el mismo tamaño al compilarse en 32\- y en 64\-bit. Esto permite compartir datos y memoria entre aplicaciones de 32\- y de 64\-bits. */ #if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32 int32_t ut_session; /* ID de sesión (\fBgetsid\fP(2)), para la ventana */ struct { int32_t tv_sec; /* segundos */ int32_t tv_usec; /* microsegundos */ } ut_tv; /* Hora de anotación de la entrada */ #else long ut_session; /* ID de sesión */ struct timeval ut_tv; /* Hora de la entrada */ #endif int32_t ut_addr_v6[4]; /* Dirección de internet del host remoto; las direcciones IPv4 emplean just ut_addr_v6[0] */ char __unused[20]; /* Reservado para un uso futuro */ }; /* Para compatibilidad con versiones 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] .EE .in .PP Esta estructura nos da el nombre del fichero especial asociado con el terminal del usuario, el nombre del usuario y el momento de inicio de sesión en el formato definido en \fBtime\fP(2). Los campos del tipo cadena terminan con bytes nulos ( (\(aq\e0\(aq)) si no completan la totalidad del campo. .PP Las primeras entradas que se crean siempre proceden del procesamiento de \fBinittab\fP(5) por parte de \fBinit\fP(1). Sin embargo, antes de que se procese una entrada, \fBinit\fP(1) limpia utmp asignando a \fBut_type\fP el valor \fBDEAD_PROCESS\fP, limpiando los campos \fBut_user\fP, \fBut_host\fP y \fBut_time\fP con caracteres nulos para cada registro cuyo campo \fBut_type\fP no sea \fBDEAD_PROCESS\fP ni \fBRUN_LVL\fP y donde no exista ningún proceso con PID \fBut_pid\fP. Si no se puede encontrar ningún registro vacío con el \fBut_id\fP que se necesita, \fBinit\fP(1) crea uno nuevo. Asigna un valor a \fBut_id\fP a partir del inittab, a \fBut_pid\fP y a \fBut_time\fP a partir de los valores actuales y asigna a \fBut_type\fP el valor \fBINIT_PROCESS\fP. .PP \fBmingetty\fP(8) (o \fBagetty\fP(8)) busca la entrada por el PID, cambia el valor de \fIut_type\fP a \fBLOGIN_PROCESS\fP, cambia \fIut_time\fP, asigna un valor a \fIut_line\fP y espera a que se establezca la conexión. Una vez que se produjo la autentifiación del usuario, \fBlogin\fP(1), cambia el valor de \fIut_type\fP a \fBUSER_PROCESS\fP, cambia \fIut_time\fP y asigna un valor a \fIut_host\fP y a \fIut_addr\fP. Dependiendo de \fBmingetty\fP(8) (o \fBagetty\fP(8)) y \fBlogin\fP(8), los registros se pueden buscar por \fIut_line\fP en lugar de por \fIut_pid\fP, como sería preferible. .PP Cuando \fBinit\fP(1) detecta que un proceso ha terminado, busca su entrada utmp mediante \fBut_pid\fP, asigna a \fBut_type\fP el valor \fBDEAD_PROCESS\fP y limpia \fBut_user\fP, \fBut_host\fP y \fBut_time\fP con bytes nulos. .PP \fBxterm\fP(1) y otros emuladores de terminal crean directamente un registro \fBUSER_PROCESS\fP y generan \fBut_id\fP con los caracteres siguientes de la cadena \fI/dev/[pt]ty\fP. Si encuentran un \fBDEAD_PROCESS\fP para este ID, lo reutilizan; en caso contrario, crean una nueva entrada. Si pueden, las marcarán como \fBDEAD_PROCESS\fP al terminar y se aconseja que también rellenen con bytes nulos los campos \fIut_line\fP, \fIut_time\fP, \fIut_user\fP y \fIut_host\fP. .PP \fBtelnetd\fP(8) establece una entrada \fBLOGIN_PROCESS\fP y deja el resto a \fBlogin\fP(1), como es habitual. Después de que termine la sesión de telnet, \fBtelnetd\fP(8) limpia utmp de la forma descrita. .PP El fichero \fBwtmp\fP registra todos los inicios y finales de sesión. Su formato es como el de \fButmp\fP salvo que un nombre nulo de usuario indica el fin de sesión en la terminal asociada. Además, el nombre de terminal \fB~\fP con nombre de usuario \fBshutdown\fP r \fBreboot\fP indica un cierre (shutdown) o rearranque del sistema y el par de nombres de terminal \fB|\fP/\fB}\fP registra la fecha antigua/nueva del sistema cuando la cambia \fBdate\fP(1). \fBwtmp\fP es mantenido por \fBlogin\fP(1), e \fBinit\fP(1) y algunas versiones de \fBgetty\fP(1). Ninguno de estos programas crea el fichero, por lo que si se borra se desactiva el mantenimiento de los registros. .SH ARCHIVOS \fI/var/run/utmp\fP .br \fI/var/log/wtmp\fP .SH "CONFORME A" .PP POSIX.1 no define la estructura de \fIutmp\fP, en cambio la define para \fIutmpx\fP detallando especificaciones para los campos \fIut_type\fP, \fIut_pid\fP, \fIut_line\fP, \fIut_id\fP, \fIut_user\fP y \fIut_tv\fP. Tampoco define la longitud de los campos \fIut_line\fP y \fIut_user\fP. .PP Linux define que la estructura de \fIutmpx\fP debe ser idéntica a la de \fIutmp\fP. .SS "Comparación con sistemas antiguos" Las entradas de utmp no son conformes nia v7/BSD ni a System V sino que son una mezcla de ambos. .PP v7/BSD tiene un menor número de campo; principalmente no tiene \fIut_type\fP lo que provoca que las aplicaciones nativas de este sistema muestren (entre otras cosas) algunas sesiones muertas. Es más, no dispone de un archivos para configurar la reserva de entradas para sesiones al no disponer de campos \fIut_id\fP. .PP En Linux (igual que en System V), el campo \fIut_id\fP de un registro nunca cambiará una vez que se le haya asignado un valor, lo que reserva esa entrada sin necesidad de un fichero de configuración. Limpiar el campo \fIut_id\fP puede producir condiciones de carrera que den lugar a entradas utmp corruptas y a potenciales problemas de seguridad. La semántica de System V no necesita la limpieza de los campos mencionados anteriormente rellenándolos con bytes nulos, pero esto permite ejecutar muchos programas que suponen una semántica BSD y que no modifican utmp. Linux usa las convenciones de BSD para los contenidos de las líneas, tal y como se ha descrito anteriormente. .PP .\" mtk: What is the referrent of "them" in the following sentence? .\" System V only uses the type field to mark them and logs .\" informative messages such as \fB"new time"\fP in the line field. System V no tiene los campos \fIut_host\fP ni \fIut_addr_v6\fP. .SH NOTAS .PP A diferencia de otros sistemas, donde el registro de información en utmp se puede deshabilitar borrando el fichero, en Linux este fichero siempre debe existir. Si quiere deshabilitar \fBwho\fP(1) elimine el permiso de lectura de utmp de los permisos correspondientes a "otros". .PP El formato del fichero depende de la arquitectura de la máquina, por lo que se recomienda que sea procesado únicamente en la arquitectura en que fue creado. .PP Tenga en cuenta que en plataformas \fIbiarch\fP (aquellas que pueden ejecutar aplicaciones de 32 y de 64 bits tales como x86\-64,ppc64,s390x,etc...), \fIut_tv\fP tiene el mismo tamaño en el mode de 32\-bits y en el de 64\-bits. Lo mismo ocurre con \fIut_session\fP y \fIut_time\fP si existen. Esto permite que se comparta memoria y datos entre aplicaciones de distinto tipo. Este se consigue al modificar el tipo de \fIut_session\fP a \fIint32_t\fP y el de \fIut_tv\fP a una estructura con dos campos \fIint32_t\fP: \fItv_sec\fP y \fItv_usec\fP. Como \fIut_tv\fP puede no ser igual que \fIstruct timeval\fP en lugar de la llamada: .PP .in +4n .EX gettimeofday((struct timeval *) &ut.ut_tv, NULL); .EE .in .PP se recomienda definir este campo con el siguiente método: .PP .in +4n .EX struct utmp ut; struct timeval tv; gettimeofday(&tv, NULL); ut.ut_tv.tv_sec = tv.tv_sec; ut.ut_tv.tv_usec = tv.tv_usec; .EE .in .\" .PP .\" Note that the \fIutmp\fP struct from libc5 has changed in libc6. .\" Because of this, .\" binaries using the old libc5 struct will corrupt .\" .IR /var/run/utmp " and/or " /var/log/wtmp . .\" .SH BUGS .\" This man page is based on the libc5 one, things may work differently now. .SH "VÉASE TAMBIÉN" \fBac\fP(1), \fBdate\fP(1), \fBinit\fP(1), \fBlast\fP(1), \fBlogin\fP(1), \fBlogname\fP(1), \fBlslogins\fP(1), \fBusers\fP(1), \fButmpdump\fP(1), \fBwho\fP(1), \fBgetutent\fP(3), \fBgetutmp\fP(3), \fBlogin\fP(3), \fBlogout\fP(3), \fBlogwtmp\fP(3), \fBupdwtmp\fP(3) .SH COLOFÓN Esta página es parte de la versión 5.10 del proyecto Linux \fIman\-pages\fP. Puede encontrar una descripción del proyecto, información sobre cómo informar errores y la última versión de esta página en \%https://www.kernel.org/doc/man\-pages/. .SH TRADUCCIÓN La traducción al español de esta página del manual fue creada por Juan Piernas , Miguel Pérez Ibars y Marcos Fouces . Esta traducción es documentación libre; lea la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a .MT debian-l10n-spanish@lists.debian.org>. .ME .