outmp O arquivo permite descobrir informações sobre quem está atualmente usando o sistema. Pode haver mais usuários atualmente usando o sistema, porque nem todos os programas usam o logging utmp.
Aviso: utmp não deve ser gravável, porque muitos programas do sistema (tolamente) dependem de sua integridade. Você corre o risco de falsificar arquivos de log do sistema e modificações de arquivos do sistema se você sairutmpgravável para qualquer usuário.
O arquivo é uma seqüência de entradas com a seguinte estrutura declarada no arquivo de inclusão (note que esta é apenas uma das várias definições disponíveis; detalhes dependem 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 finalizaçã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; / * nome do dispositivo de tty - "/ dev /" * / char ut_id 4; / * init id ou abrev. ttyname * / char ut_user UT_NAMESIZE; / * nome de usuário * / char ut_host UT_HOSTSIZE; / * hostname para login remoto * / struct exit_status ut_exit; / * O status de saída de um processo marcado como DEAD_PROCESS. * / longo ut_session; / * ID da sessão, usada para janelas * / struct timeval ut_tv; / * entrada de tempo foi feita. * / int32_t ut_addr_v6 4; / * Endereço IP do host remoto. * / char pad 20; / * Reservado para uso futuro. * /}; / * Hacks de compatibilidade com versões 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
Essa estrutura fornece o nome do arquivo especial associado ao terminal do usuário, o nome de login do usuário e o horário do login na forma deTempo(2). Campos de string são terminados por' ' se eles forem menores que o tamanho do campo.
As primeiras entradas criadas resultam de nisso (8) processamento inittab (5). Antes de uma entrada ser processada, nisso (8) limpa o utmp definindout_type paraDEAD_PROCESSlimpandout_user, ut_hosteut_time com bytes nulos para cada registro queut_type não éDEAD_PROCESS ouRUN_LVL e onde nenhum processo com PIDut_pid existe. Se não houver registro vazio com o necessáriout_id pode ser encontrado, o init cria um novo. Defineut_id do inittab,ut_pid eut_time aos valores atuais eut_type paraINIT_PROCESS.
getty (8) localiza a entrada pelo pid, mudaut_type paraLOGIN_PROCESS, alterarut_timeconjuntosut_linee espera que a conexão seja estabelecida. entrar (8), depois que um usuário foi autenticado, mudaut_type paraUSER_PROCESS, alterarut_timee conjuntosut_host eut_addr. Dependendo getty (8) e entrar (8), os registros podem ser localizadosut_line em vez do preferívelut_pid.
Quando nisso (8) descobre que um processo foi encerrado, ele localiza sua entrada em utmput_pidconjuntosut_type paraDEAD_PROCESSe apagaut_user, ut_host eut_time com bytes nulos.
xterm (1) e outros emuladores de terminal criam diretamenteUSER_PROCESS gravar e gerar out_id usando as duas últimas letras de/ dev / ttyp % c ou usandop % d para/ dev / pts / % d . Se eles encontrarem umDEAD_PROCESS para esse id, eles reciclam, senão eles criam uma nova entrada. Se eles puderem, eles vão marcá-lo comoDEAD_PROCESS ao sair e é aconselhável que eles nulo ut_line,ut_time, ut_usereut_host também.
xdm (8) não deve criar um registro utmp, porque não há terminal atribuído. Deixá-lo criar um resultará em erros, como 'finger: cannot stat /dev/machine.dom'. Deve criar entradas wtmp, no entanto, assim como ftpd (8) faz.
telnetd (8) estabelece umLOGIN_PROCESS entrada e deixa o resto para entrar (8) como de costume. Depois que a sessão do telnet termina telnetd (8) limpa o utmp da maneira descrita.
owtmp arquivo registra todos os logins e logouts. Seu formato é exatamente comoutmp exceto que um nome de usuário nulo indica um logout no terminal associado. Além disso, o nome do terminal'~'com nome de usuário"desligar" ou"reboot" indica um desligamento ou reinicialização do sistema e o par de nomes de terminal'|'/'}' registra a hora do sistema antigo / novo quando encontro (1) muda isso.wtmp é mantido por entrar (1), nisso (1) e algumas versões de getty (1). Nenhum desses programas cria o arquivo, portanto, se ele for removido, a manutenção de registros será desativada.




