Linux / Comando id: conferir UID, GID e grupos do usuário
id mostra os identificadores de usuário e de grupo de um processo ou consulta os dados de uma conta especificada. UID significa identificador de usuário; GID significa identificador de grupo. Sem nome de usuário como argumento, a consulta descreve o processo atual e ajuda a investigar com qual identidade ele acessa os arquivos.
Sintaxe e implementação
id [opção...] [usuário...]
A sintaxe acima contém marcadores. Use type -a id, id --version e id --help para identificar o programa e as opções. Em Linux, man id consulta a documentação instalada.
As consultas deste texto foram conferidas com GNU id 8.32 no Bash do Git para Windows. Os identificadores numéricos dessa camada de compatibilidade não devem ser tratados como resultados de uma sessão Linux nativa. A distinção entre sessão já aberta e banco de contas foi conferida na documentação GNU; não foi feita uma alteração real de grupos para demonstrá-la.
Consultar o processo atual
Execute o comando no shell em que deseja investigar a identidade:
id
No GNU id sem opções, a saída mostra o UID real, o GID real e os grupos suplementares. Os IDs efetivos também aparecem quando diferem dos reais. Os números podem vir acompanhados dos nomes correspondentes entre parênteses.
Isso não é uma consulta ao histórico de login. Um UID real identifica um atributo do processo, não necessariamente a pessoa que iniciou toda a cadeia de execuções. Para consultar somente o nome efetivo, o comando whoami é uma alternativa equivalente a id -un no GNU Coreutils.
Consultar uma conta sem mudar de usuário
O exemplo seguinte pressupõe que a conta alice exista no sistema. Substitua alice pelo nome de uma conta existente quando necessário:
id alice
Com um nome como argumento, id consulta as informações dessa conta no banco de usuários e grupos. Ele não passa a executar comandos como alice nem muda os grupos do shell atual. Se o nome não existir, leia o diagnóstico e confira o status de saída em vez de interpretar a ausência de resultado como uma lista vazia de grupos.
Para fazer a consulta explícita da própria conta, um exemplo completo no Bash é account_name=$(id -un) && id "$account_name". A condição && só faz a segunda consulta se a obtenção do nome terminar com sucesso. As aspas mantêm o nome como um argumento.
Selecionar o UID efetivo ou seu nome
Os dois comandos abaixo consultam o mesmo tipo de identidade, mudando apenas a forma de apresentação:
id -u
id -un
id -u imprime o UID efetivo em forma numérica. id -un pede o nome associado a ele. Efetivo não significa que o programa está validando uma conta recebida como dado; é o identificador usado na consulta selecionada.
Pedir um nome não garante que ele possa ser resolvido. Nas consultas GNU 8.32 feitas na camada Windows descrita acima, id -g mostrou o GID, enquanto id -gn e id -Gn retornaram status 1 e um diagnóstico de nome de grupo não encontrado, ainda deixando um número na saída. Confira o diagnóstico e o status; não aceite esse número como se fosse um nome obtido com sucesso.
Para pedir o UID real do processo, execute id -ru. Para o GID efetivo, use id -g; para o real, id -rg. Os valores reais e efetivos podem coincidir em uma sessão comum. Não confunda a opção -r com um pedido para descobrir o usuário de um login anterior.
Ler UID, GID e a lista de grupos
A consulta é a mesma; o resultado abaixo é uma ilustração fictícia, com nomes e números que variam entre os sistemas:
id
Exemplo de saída:
uid=1000(alice) gid=1000(alice) groups=1000(alice),27(sudo)
Nessa ilustração, uid=1000(alice) associa o número de usuário 1000 ao nome alice. gid=1000(alice) identifica o grupo principal. O fato de o nome do grupo ser igual ao nome da conta não torna UID e GID o mesmo campo.
A entrada groups= inclui, nesse exemplo, o grupo principal e o grupo sudo. Portanto, ela não deve ser lida como uma relação exclusivamente de grupos extras, sem o principal. Para obter somente os números de grupo, use id -G; para os nomes, id -Gn.
Um grupo chamado sudo pode participar das regras de administração da distribuição, mas o nome na lista não descreve sozinho quais comandos estão autorizados. A permissão depende da política configurada. Para essa distinção, consulte a explicação do comando sudo; não deduza acesso irrestrito apenas da saída ilustrativa.
Comparar a sessão com o banco de contas
Os grupos de um processo são normalmente herdados e podem continuar refletindo o estado de quando a sessão foi iniciada. Se um administrador acabou de alterar a associação a grupos no banco de contas, uma consulta com nome explícito pode mostrar dados diferentes dos grupos mantidos por um processo já em execução.
Ao investigar uma falha de acesso, execute id na sessão em que a falha ocorre e compare com a consulta explícita da conta. Não use somente id alice para concluir quais grupos um shell antigo já possui. Consultar o banco de contas não atualiza automaticamente os grupos desse shell.
Se precisar observar a associação atualizada, confira também uma nova sessão de login da conta, conforme o modo de acesso usado no sistema. Compare as saídas antes de concluir que a alteração se aplicou ao processo que fará a operação. Id ajuda a diagnosticar a identidade; ele não altera a associação a grupos nem corrige permissões de arquivos.
Opções principais
| Opção | Uso |
|---|---|
-u |
Mostra apenas o UID efetivo, em números. |
-g |
Mostra apenas o GID efetivo, em números. |
-G |
Mostra os identificadores de grupo. |
-n |
Com -u, -g ou -G, pede nomes em vez de números. |
-r |
Com -u, -g ou -G, seleciona IDs reais em vez dos efetivos. |
Não use -n ou -r isoladamente. Por exemplo, use id -un para um nome ou id -ru para o UID real. Se uma consulta falhar, leia a mensagem e examine echo "$?" imediatamente após o comando isolado; no GNU id, status 0 indica sucesso e um valor diferente de zero indica falha.
Pergunta frequente
O UID e o GID são o nome do usuário e do grupo?
São identificadores numéricos de usuário e grupo. Na saída padrão, os nomes correspondentes podem aparecer entre parênteses. Para nomes sem a apresentação completa, combine -n com uma seleção como -u, -g ou -G. Os números e os nomes da ilustração não são valores universais.
Documentação
A documentação oficial do GNU id descreve as identidades reais e efetivas. A página de manual de id publicada pelo Debian também reúne as opções. A documentação do GNU groups explica a diferença entre os grupos de um processo e uma consulta com nome de usuário.




