Existe um comando para listar todos os nomes de grupos Unix? [fechadas]


615

Eu sei que existe o /etc/grouparquivo que lista todos os grupos de usuários.

Gostaria de saber se existe um comando simples para listar todos os nomes de grupos de usuários, apesar de analisar o /etc/grouparquivo legível no mundo . Estou disposto a criar uma página da Web de administrador que liste os nomes de grupos das contas Linux.



2
"Estou disposto a criar uma página da web que lista os usuários do Linux" - que problema você está tentando resolver? Isso soa como algo que pode causar alguns problemas de segurança (expondo a lista de usuários, expondo credenciais).

Eu estava tentando dar um exemplo simples. Eu gostaria de abrir uma "página da web do sistema administrador para listar os nomes atuais das contas Linux". No Linux, encontrei comandos para adicionar um usuário, remover um usuário, alterar um usuário, encontrar os grupos de um determinado usuário, mas não encontrei um comando para pesquisar um fragmento de usuário por nome. Eu acho que a pergunta não é tão irrelevante. Tudo o que pude fazer para lembrar uma conta de grupo do Linux foi fazer uma pesquisa no arquivo / etc / group #
cavila

Respostas:


871

Para listar todos os grupos locais aos quais os usuários foram atribuídos, use este comando:

cut -d: -f1 /etc/group | sort

Para mais informações-> grupos Unix , comando Recortar , comando ordenar


3
Sim, o MichaelIT está certo, o comando groups não listou todos os grupos. Eu perguntei isso porque não tenho certeza se existe um comando simples como groups para listar todos os nomes de grupos ou até mesmo um swith para ele como groups [-a | --all] para listar todos os grupos do sistema sem fazer a varredura de arquivos.
Cavila

1
ok então por enquanto a resposta é NÃO. Precisa usar a edição de texto para filtrar o arquivo de grupo.
Cavila

3
O que é "cut -d: -f1"?
zed 31/01

5
@zed cuté outro comando que extrai a coluna específica de uma entrada. Aqui estou extraindo o campo 1, onde os campos são delimitados por:
Arpit

267

Se você deseja que todos os grupos sejam conhecidos pelo sistema, eu recomendaria usar em getent groupvez de analisar /etc/group:

getent group

O motivo é que, nos sistemas em rede, os grupos podem não apenas ler /etc/group arquivo, mas também obtidos através do LDAP ou Páginas Amarelas (a lista de grupos conhecidos vem do arquivo do grupo local, mais os grupos recebidos via LDAP ou YP nesses casos).

Se você deseja apenas os nomes dos grupos, pode usar:

getent group | cut -d: -f1

7
Para alguns casos de uso, pode ser preferível uma lista ordenada de nomes de grupos:getent group | cut -d: -f1 | sort
user1364368

2
Se linhas numeradas forem desejáveis, faça getent group | cut -d: -f1 | sort | cat -n.
MLC

ótimo ponto para sistemas em rede como LDAP!
Maziyar 18/11/19

50

No Linux, macOS e Unix para exibir os grupos aos quais você pertence, use:

id -Gn

que é equivalente ao groupsutilitário obsoleto no Unix (conforme manual do Unix ).

No macOS e Unix, o comando id -pé sugerido para interatividade normal.

Explicação dos 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.


10
E id -Gn someusernameretorna a lista de grupos para o usuário especificado.
sombria

6
id -Gnz | xargs -0 -I% echo %listará cada grupo em uma linha separada. Isso é útil se os nomes dos grupos tiverem espaços.
Mark Lakata

1
Como é groups obsoleto? Alguma fonte? Eu procurei "comando unix groups obsoleto" mas não encontrei nada.
Franklin Yu

1
@FranklinYu Está na página de manualgroups do BSD de .
Kenorb 28/08/18

3
Doest responda à pergunta original referente a grupos fora do usuário atual.
Não
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.