Provided by: manpages-pt_20040726-5_all bug

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)

                                                    2/07/1997                                            UTMP(5)