Provided by: manpages-pt_20040726-1_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)