Como listar os grupos dos quais um usuário UNIX é membro?

79

Com pts m groupnameeu posso listar os usuários em um grupo. Como posso fazer o oposto - ou seja, listar todos os grupos dos quais um usuário é membro?

(Preciso disso para encontrar o nome de um grupo do qual conheço um usuário membro, mas não sei o nome do grupo ...)

Esclarecimento:
Esta questão é complicada pelo fato de eu não ser o administrador do sistema e de não ter permissões de root (longe disso). Em vez disso, faço parte de um grupo de "moderadores" que administram uma pequena parte do sistema - para ser específico, o ramo da física da união de estudantes no sistema central de TI da minha universidade.

Dentro de nossa filial, temos vários grupos de acesso diferentes para pessoas encarregadas das coisas. Nesse caso, uma das duas pessoas responsáveis ​​por algo (não importa o quê) foi substituída e eu estava procurando examinar o outro usuário para descobrir quais direitos de acesso eu deveria dar à substituição.

Agora pude resolver o problema imediato (o novo cara não pode acessar uma pasta) examinando a pasta para ver quem tem acesso e escolhendo o grupo na lista. No entanto, pode haver mais privilégios que esse usuário deve ter e que eu não conheço, portanto a pergunta ainda é relevante para mim, embora não seja tão aguda.

Tomas Aschan
fonte

Respostas:

105

Você também pode usar o groupscomando:

[root @ ftp ~] # grupos raiz
root: root bin daemon sys adm roda de disco

se tudo mais falhar, também há bons velhos tempos grep:

[root @ ftp ~] # grep raiz / etc / group
raiz: x: 0: raiz
bin: x: 1: raiz, bin, daemon
daemon: x: 2: root, bin, daemon
sys: x: 3: raiz, bin, adm
adm: x: 4: raiz, adm, daemon
disco: x: 6: raiz
roda: x: 10: root, administrador
John T
fonte
1
grep ^root: /etc/grouppode ser melhor.
Dennis Williamson
não, não é porque ele lista apenas um dos grupos onde o root é membro, talvez com um pouco de awk, é mais claro :) grep root / etc / group | awk -F: '{print $ 1}'
matthias krull
3
Examinar / etc / group parece bom, mas se o seu sistema estiver usando um diretório centralizado (NIS, LDAP, ActiveDirectory,?), Você não encontrará uma lista completa de grupos. Somente definições de grupo local estariam nesse arquivo.
Slartibartfast
O comando groups kczapenas me fornece usr, embora eu saiba que esse usuário é membro de um grupo chamado fkm. O que está faltando?
Tomas Aschan
Não tenho certeza, /etc/groupcole seu @Tomas.
John T
28
$ id [username]
coneslayer
fonte
" $: Command not found"
Tomas Aschan
8
O $representa o prompt de comando. Comece a digitar com id.
coneslayer
Ainda não me dá muito:uid=[five digits](kcz) gid=30(usr)
Tomas Aschan
está mostrando uid = gid = groups = então a terceira coisa que recebo é a lista de grupos aos quais um usuário pertence.
MKJ 01/09
6

Encontrei - muito mais tarde, mas encontrei! =)

Assim como

$>pts m [group name]

lista todos os membros de um grupo,

$>pts m [user name]

lista todos os grupos dos quais um usuário é membro. Era simples demais: P

Tomas Aschan
fonte
3
pts não é um comando padrão.
user2284570
1
@ user2284570: Talvez não. Mas foi claramente afirmado na pergunta (a primeira coisa, de fato, e com destaque para a sintaxe) que é ptsessa questão.
Tomas Aschan