Obtendo Informações sobre Usuários - Linux
Comando id
O comando id
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
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
who
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
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
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
superuser1
useradd -m superuser1
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
: indica que a senha é armazenada no arquivox
/etc/shadow
: UID1001
: GID1001
: indica ausência de comentário::
: diretório home do usuário/home/superuser1
: shell de login/bin/bash
Um administrador pode editar manualmente o arquivo /etc/passwd
vipw
vipw
pwck