Comando id: verificar UID e grupos, whoami, groups e grupos suplementares

Ambiente de testeFamília RHELAlmaLinux 9.8coreutils 8.32conta rootDebian 12 · coreutils 9.1 conta comum
Comandos de usuários · gruposid, whoami, groupsLocalização/usr/bin/id

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

  • ↪️ Como ler os três campos uid, gid e groups

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).

id
uid=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 user1
uid=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 adm
uid=3(adm) gid=4(adm) groups=4(adm)
id operator
uid=11(operator) gid=0(root) groups=0(root)

Ao escrever várias contas, aparece uma por linha.

id root bin
uid=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-user9
id: 'no-such-user9': no such user
echo $?
1

O 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

  • ↪️ -u, -g, -G para números e -n para nomes

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 -u
0
id -u daemon
2
id -G user1
1000 4 190

Com -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 user1
user1 adm systemd-journal
id -gn user1
user1

-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 -n
id: 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çãoCopiarDescrição
-u--userMostra o número do UID
-g--groupMostra o número do grupo primário
-G--groupsMostra todos os números dos grupos a que a conta pertence
-n--nameCom -u, -g ou -G, mostra o nome no lugar do número
-r--realCom -u, -g ou -G, mostra o ID real no lugar do ID efetivo
OpçãoCopiarDescrição
-Z--contextMostra apenas o contexto de segurança do processo
-z--zeroSepara os itens da saída com caracteres NUL em vez de espaços; não pode ser usado no formato padrão
-aAceito apenas por compatibilidade com outras versões do id e ignorado
--helpMostra a ajuda
--versionMostrar 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].

Simulador do comando idcoreutils 8.32
[root@server work]#
Funciona apenas dentro do navegador. Depois de alterar os grupos com o chip [🖊 Other window], compare [id] e [id user1] e confira os grupos de um novo shell com o chip [🔁 Log in again].

3️⃣ O comando whoami e id -un

  • ↪️ Verificar o nome da conta atual e verificar outras contas

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.

whoami
root
id -un
root

Em uma conta comum no servidor Debian 12, os dois comandos também mostraram o mesmo nome de conta.

whoami
user1
id -un
user1

whoami 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 user1
whoami: 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 user1
user1

Ao 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

  • ↪️ Grupo primário e grupos suplementares, e o shell depois de alterar os grupos

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.

groups
root

Com 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 daemon
user1 : user1 adm systemd-journal
daemon : daemon

O 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 adm
adm:x:4:user1
getent group user1
user1:x:1000:
getent passwd daemon
daemon:x:2:2:daemon:/sbin:/sbin/nologin

O 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

Pode. Ao executar [id 0] no servidor AlmaLinux 9.8, apareceu uid=0(root) gid=0(root) groups=0(root), igual a [id root].

A partir do número escrito em UID_MIN no /etc/login.defs. No servidor AlmaLinux 9.8 era 1000, e SYS_UID_MIN e SYS_UID_MAX no mesmo arquivo eram 201 e 999, a faixa das contas de sistema.

who am i é who seguido de duas palavras; funciona igual à opção -m e mostra uma linha com as informações de login do terminal em que se está digitando. whoami mostra apenas uma linha com o nome da conta do UID efetivo atual.

ℹ️ 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.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Demonstre sua humanidade: 0   +   9   =