Obtendo Informações sobre Usuários - Linux

Comando id

O comando id permite obter informações sobre um usuário. Este comando recebe o login do usuário como parâmetro. Se o login não for fornecido, são exibidas informações sobre o usuário atual. Por exemplo, para obter informações sobre o usuário atual:

programicio@Programicio:~$ id
uid=1000(programicio) gid=1000(programicio) groups=1000(programicio),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),118(lpadmin)

Para obter dados do usuário "root":

programicio@Programicio:~$ id root
uid=0(root) gid=0(root) groups=0(root)

Usuários Logados

O comando users exibe a lista de todos os usuários logados no momento. Em um computador pessoal, geralmente há apenas um usuário trabalhando no momento:

programicio@Programicio:~$ users
programicio programicio

No exemplo acima, o único usuário logado é "programicio". Em máquinas servidoras, pode haver vários usuários logados simultaneamente.

Para obter informações mais detalhadas, utiliza-se o comando who:

programicio@Programicio:~$ who
programicio   seat0        2024-03-08 18:34 (login screen)
programicio   tty2         2024-03-08 18:34 (tty2)

Se o comando for executado em um servidor ao qual os usuários se conectam remotamente, ele também exibirá os endereços IP desses usuários.

Para ver o que um usuário está fazendo, pode-se usar o comando w:

19:14:33 up 41 min,  2 users,  load average: 0.35, 0.27, 0.26
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
programicio   seat0    login-           18:34    0.00s  0.00s   ?    /usr/libexec/gd
programicio   tty2     tty2             18:34   41:05   0.00s   ?    /usr/libexec/gd

Esse comando mostra os nomes de todos os usuários conectados, a origem e o horário de login, a estatística atual de uso e qual programa estão utilizando no momento (ou o último utilizado).

Ao observar a saída, pode surgir a pergunta: por que o usuário atual aparece duplicado na lista de usuários logados? Nos primórdios do Unix, cada entrada no sistema era um terminal (tty1, tty2, ...). Ao logar no sistema, era adicionada uma entrada no arquivo utmp. Os comandos w e who consultam o arquivo utmp para exibir os usuários logados.

O login gráfico na área de trabalho não possui um terminal, mas ainda é necessário fazer uma entrada no utmp. Cada terminal ou shell aberto a partir da área de trabalho também deve ter uma entrada no utmp (tty1, tty2, ...). O utmp não distingue a primeira entrada no sistema dos terminais subsequentes. Contudo, com o comando loginctl, é possível ver os usuários logados sem duplicação:

programicio@Programicio:~$ loginctl
SESSION  UID USER   SEAT  TTY 
      2 1000 programicio seat0 tty2

1 sessions listed.

Obtendo Informações Detalhadas sobre um Usuário Específico

Para verificar informações sobre um usuário específico, podemos usar o arquivo /etc/passwd. Este arquivo tem a seguinte estrutura:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
...

O arquivo /etc/passwd utiliza diferentes campos para armazenar as propriedades do usuário. Esses campos são separados por dois pontos. Especificamente, cada linha representa os seguintes campos (da esquerda para a direita):

  • Nome de usuário

  • Senha

  • UID (identificador do usuário)

  • GID (identificador do grupo principal do usuário)

  • GECOS (comentário)

  • Diretório home do usuário

  • Shell de login

No Linux, também podemos obter a informação necessária via terminal usando o comando grep. Por exemplo, se tivermos criado anteriormente um usuário chamado superuser1 usando o comando useradd -m superuser1, podemos obter seus dados com:

programicio@Programicio:~$ grep superuser1 /etc/passwd
superuser1:x:1001:1001::/home/superuser1:/bin/sh

A saída obtida contém vários componentes, que são separados por dois pontos. Em particular:

  • superuser1: login do usuário

  • x: indica que a senha é armazenada no arquivo /etc/shadow

  • 1001: UID

  • 1001: GID

  • ::: indica ausência de comentário

  • /home/superuser1: diretório home do usuário

  • /bin/bash: shell de login

Um administrador pode editar manualmente o arquivo /etc/passwd. No entanto, recomenda-se usar o comando vipw em vez de um editor de texto comum. Esse comando representa uma versão adaptada do editor Vi, especialmente projetada para editar arquivos importantes como esse. Qualquer erro pode ter consequências graves, como ninguém conseguir fazer login no sistema. Portanto, ao alterar o arquivo manualmente, deve-se verificar sua integridade. O comando vipw faz isso automaticamente, mas também pode ser feito manualmente com o comando pwck.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com