Como descobrir qual grupo um determinado usuário tem?

256

No Unix / Linux, como você descobre em qual grupo um determinado usuário está via linha de comando?

Alex Argo
fonte
23
Para entender o contrário, veja quem está em um determinado grupo, você pode usar getent group <groupname>.
Iconoclast
1
@iconoclast: que não lista os usuários pertencentes ao grupo em / etc / passwd.
user2284570

Respostas:

371
groups

ou

groups user
Bombe
fonte
102

Este mostra o uid do usuário, bem como todos os grupos (com seus gids) aos quais eles pertencem

id userid
Paul Tomblin
fonte
2
Isso parece ser bastante útil também. Ele possui uma saída mais detalhada do que o comando 'groups'; portanto, se você precisar do ID do grupo / usuário, use isso!
Alex Argo
Essa deve ser a resposta mais detalhada e correta, faça um voto positivo!
Harvey Lin
16

No Linux / OS X / Unix para exibir os grupos aos quais você (ou o usuário especificado opcionalmente) pertence, use:

id -Gn [user]

que é equivalente à groups [user]utilidade que foi obsoleta no Unix.

No OS X / Unix, o comando id -p [user]é sugerido para interatividade normal.

Explicação sobre os parâmetros:

-G, --groups- imprima todos os IDs de grupo

-n, --name- imprima um nome em vez de um número, por-ugG

-p - Torne a saída legível por humanos.

kenorb
fonte
0

ou apenas estude o / etc / groups (ok, isso provavelmente não funcionará se usar o pam com o ldap)

Nils
fonte
7
Na verdade, essa é uma resposta ruim. 'grupo getent' é melhor.
Bortzmeyer
0

Abaixo está o script que é integrado ao painel ansible e gerador no formato CSV.

sh collection.sh

#!/bin/bash

HOSTNAME=`hostname -s`

for i in `cat /etc/passwd| grep -vE "nologin|shutd|hal|sync|root|false"|awk -F':' '{print$1}' | sed 's/[[:space:]]/,/g'`; do groups $i; done|sed s/\:/\,/g|tr -d ' '|sed -e "s/^/$HOSTNAME,/"> /tmp/"$HOSTNAME"_inventory.txt

sudo cat /etc/sudoers| grep -v "^#"|awk '{print $1}'|grep -v Defaults|sed '/^$/d;s/[[:blank:]]//g'>/tmp/"$HOSTNAME"_sudo.txt

paste -d , /tmp/"$HOSTNAME"_inventory.txt /tmp/"$HOSTNAME"_sudo.txt|sed 's/,[[:blank:]]*$//g' >/tmp/"$HOSTNAME"_inventory_users.txt

Minha saída armazenada nos arquivos de texto abaixo.

cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
namasivayam.cse
fonte