Rechercher une page de manuel

Chercher une autre page de manuel:

utmp

Autres langues

Langue: pt

Autres versions - même langue

Version: 2/07/1997 (ubuntu - 01/11/07)

Section: 5 (Format de fichier)

NOME

utmp, wtmp - Registro de login

SINOPSE

#include <utmp.h>

DESCRIÇÃO

O arquivo utmp permite a descoberta de informações sobre quem está usando o sistema atualmente. Pode ter mais que um usuário usando o sistema, por que nem todos programas usam o registro utmp.

Advertência: utmp não deve ter autorização para escrita, porque muitos programas de sistema (imprudentemente) dependem desta intergridade. Você arrisca falsificar os arquivos de log do sistema e modificações dos arquivos de sistema se você autorizar a escrita em utmp para qualquer usuário.

O arquivo é um seqüencia de entrada com a seguinte estrutura declarada no arquivo include (note que isto é somente uma de várias definições ao redor de; detalhes depende da versão da 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;    /* status de terminação do processo. */
   short int e_exit;           /* status de saída do processo. */
 };
 
 struct utmp {
   short ut_type;              /* tipo de login */
   pid_t ut_pid;               /* pid do processo de login */
   char ut_line[UT_LINESIZE];  /* no do dispositivo tty - "/dev/" */
   char ut_id[4];              /* init id ou abreviação do nome do dispositivo tty */
   char ut_user[UT_NAMESIZE];  /* nome do usuário */
   char ut_host[UT_HOSTSIZE];  /* nome da máquina para login remoto */
   struct exit_status ut_exit; /* O status de saída do processo
            marcado como DEAD_PROCESS. */
   long ut_session;            /* session ID, usado para windowing */
   struct timeval ut_tv;       /* hora de entrada. */
   int32_t ut_addr_v6[4];      /* endereço IP de máquina remotas. */
   char pad[20];               /* Reservado para uso futuro. */
 };
 
 /* Hacks para compatibilidade pregresa. */
 #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 fornece o nome do arquivo especial associado com o terminal do usuário, o nome de login do usuário, e a hora de login na forma de time(2). Campos de cadeia de caracteres são terminado por '\0' se eles forem mais curtos que o tamanho do campo.

A primeira entrada sempre criado resulta do processamento de init(8) em inittab(5). Antes um entrada é processada, de qualquer forma, init(8) coloca em ordem utmp pela colocação de ut_type para DEAD_PROCESS, liquidando ut_user, ut_host e ut_time com bytes nulos para cada registro no qual ut_type não é DEAD_PROCESS ou RUN_LVL e onde não existe processo com PID ut_pid. Se registros não vazios com o necessário podem se encontrados ut_id, init cria um novo. Ele fixa ut_id a partir de inittab, ut_pid e ut_time para valores atuais e ut_type para INIT_PROCESS.

getty(8) localiza a entrada pelo pid, alterando ut_type para LOGIN_PROCESS, alterando ut_time, ajustando ut_line e aguardando que a conexão possa ser estabeleciada. login(8), depois que um usuário é autenticado, alteração de ut_type para USER_PROCESS, alteração de ut_time e ajustando ut_host e ut_addr. Dependendo de getty(8) e login(8), registros pode ser localizados por ut_line no lugar do preferido ut_pid.

Quando init(8) encontra um processo que já saiu, ele localiza a entrada dele em utmp por ut_pid, ajusta ut_type para DEAD_PROCESS e limpa ut_user, ut_host e ut_time com bytes nulos.

xterm(1) e outros emuladores de terminal criam diretamente um registro USER_PROCESS e geram o ut_id pelo uso das duas últimas letras de /dev/ttyp%c ou pelo uso de p%d para /dev/pts/%d. Se eles acham um DEAD_PROCESS para esta id, eles reutilizam esta, de outra forma eles criam uma nova entrada. Se eles puderem, eles irão marcar isto como DEAD_PROCESS na saída e isto é avisado que eles são nulos ut_line, ut_time, ut_user and ut_host também.

xdm(8) não deveria criar um registro utmp, por que não havia um terminal assinalado. Deixando ele criar em irá rsular em problemas como: finger: não pode iniciar /dev/machine.dom. Ele deveria criar as entradas wtmp, de qualquer forma, justamnete como ftpd(8) faz.

telnetd(8) ajusta para LOGIN_PROCESS entrada e deixa o resto para login(8) como usual. Depois que terminar a seção telnet, telnetd(8) limpa utmp na forma descrita.

O campo wtmp registra todos os logins e logouts. O formato dele é exatamente como utmp excto que um nome de usuário nulo indica um logout no termina; associado. Além do mais, o nome do termina; "~" com o nome do ususário "shutdown" ou "reboot" indicam um sistema em desigamento ou em reinicialização e o par de nomes de terminal "|"/"}" logs o velho/novo tempo de sistema quando a date(1) é alterada. wtmp é mantido por login(1), e init(1) e algumas versões de getty(1). Nenhum do dois programas criam o arquivo, assim se ele é removido o registro é desligado.

ARQUIVOS

/var/run/utmp
/var/log/wtmp

DE ACORDO COM

As entradas utmp conforme nenhum dos dois v7/BSD nem para o SYSV: Eles são uma mistura do dois. v7/BSD tem poucos campos; o mais importante ele caresce de ut_type, no qual processos nativos v7/BSD como programas para exibir (por exemplo) entrada dead ou login. Além disto não havia um arquivo de configuração na qual determina slots para a sessão. BSD faz assim, porque ele caresce dos campos ut_id. No Linux (como no SYSV), o campo ut_id de um registro nunca deverá ser alterado logo ele, o qual preserva registros slot sem a necessiada de um arquivo de configuração. Limpado ut_id pode resultar na saída de condições dominantes para as entradas utmp corrompidas e posíveis furos de segurança. Limpando os campos mencionados acima saciando eles com butes nuloas ele não segue a semantica SYSV, mas ele permite executar muitos programas o qual assume a semântica do BSD e cada qual não modifica utmp. Linux usa as convenções BSD para linha de conteúdo, como documentado.

SYSV somente usa o tipo de campo para marcar eles e mensagem informativa de logs como por exemplo "new time" na linha do campo. UT_UNKNOWN aparenta ser uma invenção do Linux. SYSV não tem os campos ut_host ou ut_addr_v6.

Diferente de vários outros sistemas, onde o logging de utmp podem ser desativados pela remoção do arquivo, utmp sempre deve exister no Linux. Se você procurar desabilitar who(1) então não faça a palavra utmp legivel.

Note qye a estrutura utmp vinda da libc5 foi alterada na libc6. Por causa disto, binários usando a estrutura da libc5 serão corrompidos /var/run/utmp e/ou /var/log/wtmp. Sistema Debian incluem um patch da libc5 que usa o novo formato do utmp. O problema ainda existe com wtmp desde que ele seja diretamente acessado pela libc5.

RESTRICÕES

O formato do arquivo é dependente da máquina, que assim seja recomendado que ele será processado somente na arquitetura da máquina onde foi criado.

PROBLEMAS

Esta página é baseada no libc5, possivelmente a ação trabalhe de maneira distinta agora.

VEJA TAMBÉM

ac(1), date(1), getutent(3), init(8), last(1), login(1), updwtmp(3), who(1)

TRADUZIDO POR LDP-BR em 21/08/2000.

André L. Fassone Canova <lonelywolf@blv.com.br> (tradução) Carlos Augusto Horylka <horylka@conectiva.com.br> (revisão)
> Hein ? Raconte mais pas trop fort l'autre fou de jus d'O risque
> d'entendre !
'ttention à c'keu tu dis toa... :-/
Le dernier qui a utilisé le mot "fou" et "jus d'O" dans la même phrase
sèche encore dans la cave... :-|
-+- Daniel à Frédéric, sur fr.rec.photo -+-