Comando id: verificar UID e grupos, whoami, groups e grupos suplementares
Para verificar o UID e os grupos da conta atual em um servidor Linux, usa-se o comando id; quando só o nome da conta é necessário, usa-se whoami, e quando só os nomes dos grupos são necessários, groups. Ao executar os três comandos em sequência em servidores AlmaLinux 9 e Debian 12 e comparar a saída, id -un e whoami mostraram o mesmo nome de conta, e groups mostrou a lista de grupos do id deixando só os nomes.
A saída abaixo foi obtida em um servidor AlmaLinux 9.8 com a conta root e em um servidor Debian 12 com uma conta comum. O nome e os números da conta de login e os grupos suplementares foram trocados por valores de exemplo (user1, 1000, adm, systemd-journal).
1️⃣ Uso básico do comando id
Ao executar id sem opções, as informações da conta que iniciou o shell atual aparecem em uma linha. Na conta root, os três campos eram 0(root).
iduid=0(root) gid=0(root) groups=0(root)O campo uid é o número e o nome da conta, e o campo gid é o número e o nome do grupo primário (primary group). O campo groups são todos os grupos a que a conta pertence, com o grupo primário em primeiro lugar.
Ao escrever um nome de conta depois de id, são mostradas as informações dessa conta. Ao conferir a conta comum user1, que tem grupos suplementares, no campo groups apareceram adm e systemd-journal depois do grupo primário user1. Esses grupos a que a conta pertence além do grupo primário são os grupos suplementares (supplementary group).
id user1uid=1000(user1) gid=1000(user1) groups=1000(user1),4(adm),190(systemd-journal)Muitas contas têm o mesmo número de UID e de gid, por isso é fácil tomar os dois números pelo mesmo valor, mas a conta adm que já vem no servidor tinha UID 3 e número de grupo primário 4. A conta operator tinha root como grupo primário.
id admuid=3(adm) gid=4(adm) groups=4(adm)id operatoruid=11(operator) gid=0(root) groups=0(root)Ao escrever várias contas, aparece uma por linha.
id root binuid=0(root) gid=0(root) groups=0(root)
uid=1(bin) gid=1(bin) groups=1(bin)Ao escrever uma conta que não existe, aparece o erro [no such user], e o código de saída foi 1.
id no-such-user9id: 'no-such-user9': no such userecho $?1O código de saída quando se escreve uma conta existente é 0, então ele pode ser usado em um script como condição para verificar se uma conta existe.
2️⃣ Opções do comando id
Para passar a um script apenas um número de toda a saída, escolhe-se um único campo com uma opção. -u mostra o UID, -g o número do grupo primário e -G todos os números dos grupos a que a conta pertence.
id -u0id -u daemon2id -G user11000 4 190Com -n junto, aparecem nomes no lugar dos números. Ao conferir os grupos de user1 com [id -Gn], os três números viraram três nomes.
id -Gn user1user1 adm systemd-journalid -gn user1user1-n e -r são usados junto com uma das opções -u, -g e -G. Ao escrever só -n, apareceu o erro abaixo.
id -nid: cannot print only names or real IDs in default format-r mostra o ID real no lugar do ID efetivo (effective). Ao executar [id -ur] em um shell da conta root, apareceu 0. Ao escrever juntas duas ou mais opções que escolhem um número, como -u e -g, aparece o erro [cannot print "only" of more than one choice]. As opções estão resumidas abaixo.
| Opção | Copiar | Descrição |
|---|---|---|
| -u--user | Mostra o número do UID | |
| -g--group | Mostra o número do grupo primário | |
| -G--groups | Mostra todos os números dos grupos a que a conta pertence | |
| -n--name | Com -u, -g ou -G, mostra o nome no lugar do número | |
| -r--real | Com -u, -g ou -G, mostra o ID real no lugar do ID efetivo |
| Opção | Copiar | Descrição |
|---|---|---|
| -Z--context | Mostra apenas o contexto de segurança do processo | |
| -z--zero | Separa os itens da saída com caracteres NUL em vez de espaços; não pode ser usado no formato padrão | |
| -a | Aceito apenas por compatibilidade com outras versões do id e ignorado | |
| --help | Mostra a ajuda | |
| --version | Mostrar a versão |
🔲 Simulador do comando id
O simulador abaixo começa com a conta user1, que tem grupos suplementares. Depois de adicionar o grupo wheel com o chip [🖊 Other window], é possível comparar [id] e [id user1] e conferir os grupos de um novo shell com o chip [🔁 Log in again].
3️⃣ O comando whoami e id -un
Quando só o nome da conta do shell atual é necessário, executa-se whoami. A página do man descreve whoami como o mesmo comando que [id -un]. Ao executar os dois comandos na conta root, ambos mostraram root.
whoamirootid -unrootEm uma conta comum no servidor Debian 12, os dois comandos também mostraram o mesmo nome de conta.
whoamiuser1id -unuser1whoami mostra o nome da conta que corresponde ao UID efetivo (effective) atual. É um comando que verifica apenas a conta atual, então aparece um erro se um nome de conta for colocado depois dele.
whoami user1whoami: extra operand 'user1'
Try 'whoami --help' for more information.O nome ou o número de outra conta é verificado escrevendo essa conta depois de id.
id -un user1user1Ao escrever -u no lugar de -un, aparece no mesmo lugar o número do UID em vez do nome da conta.
4️⃣ O comando groups e os grupos suplementares
groups mostra apenas os nomes dos grupos em uma linha. Sem nome de conta aparecem os grupos do shell atual, e na conta root era só root.
groupsrootCom um nome de conta, aparecem o nome da conta e, depois dos dois-pontos, os grupos. Ao escrever várias contas, apareceu uma por linha.
groups user1 daemonuser1 : user1 adm systemd-journal
daemon : daemonO grupo primário e os grupos suplementares são registrados em lugares diferentes. Os grupos suplementares ficam anotados como membros no quarto campo do banco de dados de grupos (/etc/group), e o grupo primário fica anotado como número no quarto campo das informações da conta (/etc/passwd).
getent group admadm:x:4:user1getent group user1user1:x:1000:getent passwd daemondaemon:x:2:2:daemon:/sbin:/sbin/nologinO grupo user1, grupo primário de user1, tinha o quarto campo vazio, e no grupo suplementar adm user1 estava anotado como membro. O 2 no quarto campo da linha da conta daemon é o número do grupo primário.
Para adicionar uma conta a um grupo suplementar, usa-se o comando usermod na forma [usermod -aG grupo conta]. Usando só -G sem -a, a conta sai dos grupos suplementares existentes que não forem escritos na lista, por isso -a é escrito junto.
groups executado sem nome de conta mostra os grupos do processo do shell atual. A página do man explica que esse valor pode ser diferente do banco de dados quando o banco de dados de grupos muda.
Por isso, logo depois de alterar os grupos, confira os grupos do banco de dados com [groups conta] ou [id conta], e faça login de novo para que valham no shell. Um comando que troca o ID de grupo atual sem sair do login é newgrp.
🔢 FAQ & conteúdo recomendado
Criar contas
Linux: comando useradd & comando passwd
Comandos que criam uma nova conta de usuário e definem a senha dessa conta.
Excluir conta
[Linux] Comando userdel: excluir contas de usuário
Um comando que exclui uma conta de usuário sem uso e limpa também a pasta pessoal.
Validade da senha
Comando chage do Linux
Um comando que verifica e altera o prazo de validade e a data de expiração da senha de uma conta de usuário.
ℹ️ Aviso de afiliados
O conteúdo deste site contém links de afiliados. Quando um visitante compra um produto ou serviço por meio de um desses links, o site recebe uma comissão do vendedor. O valor que o comprador paga (em promoções, ele diminui ↓) não aumenta por causa disso. Preços, descontos e informações de estoque valem para o momento em que o texto foi escrito e podem ter mudado, por isso confirme com o vendedor antes de comprar. Os produtos são escolhidos e avaliados por critérios próprios, e o recebimento de comissão não influencia a ordem de apresentação nem o conteúdo das avaliações.