Recentemente, venho criando novos usuários e atribuindo-os a determinados grupos. Eu queria saber se existe um comando que mostra todos os usuários atribuídos a um determinado grupo? Eu tentei usar o comando 'groups' no entanto, sempre que eu uso isso, ele diz 'groups: not found'
68
groups
comando. É improvável que você não o tenha no Linux, pois faz parte do coreutils.Respostas:
Você pode usar o grep:
Isso lista apenas associações suplementares ao grupo, não o usuário que possui esse grupo como grupo principal. E encontra apenas grupos locais, não grupos de um serviço de rede como LDAP.
fonte
sudo lid -g {group}
.I ter um sistema onde este Listas de resposta 8 usuários em um grupo enquantosudo lid -g {group}
listas 10.getent
resposta de @Murray Jensen abaixoEu prefiro usar o comando getent ...
Portanto, para um grupo, você deve usar o seguinte ...
onde name_of_group é substituído pelo grupo que você deseja procurar. Observe que isso retorna apenas associações suplementares ao grupo, não inclui os usuários que têm esse grupo como grupo principal.
Existem várias outras pesquisas que você pode fazer ...
passwd
sendo outra útil, que você precisará listar grupos principais.fonte
sudo lid -g {group}
.I ter um sistema onde este Listas de resposta 8 usuários em um grupo enquantosudo lid -g {group}
listas 10.Mais fácil de fazer
groups [username]
Se você deseja listar todos os usuários locais e seus grupos locais, pode fazer
cat /etc/passwd | awk -F':' '{ print $1}' | xargs -n1 groups
Se você receber "groups: command not found", é provável que você tenha editado seu caminho ambiental para piorar, para redefinir seu caminho, faça
PATH=$(getconf PATH)
fonte
| grep {group}
é adicionado e dá a resposta correta ao contráriogetent group name_of_group
ougrep '^group_name_here:' /etc/group
cat /etc/passwd
, você deve usargentent passwd
para que os usuários no nis / ldap ainda sejam listados. A única desvantagem é que pode demorar um pouco.lista todos os usuários no grupo nomeado.
fonte
groupmems
faz parte dos utils sombra usadas na maioria das distribuições Linux, no entantogroupmems
é atualmente ausente do Debian e derivados (um bug agora fixo, mas não incluído em qualquer lançamento ainda (a partir de novembro 2016))groupmems
apenas lida com grupos/etc/group
(não no LDAP ou em outro banco de dados do usuário) e requer privilégios de superusuário enquanto tenta abrir o arquivo / etc / gshadow.cut
amigos).sudo lid -g {group}
. Eu tenho um sistema onde esta resposta lista 8 usuários em um grupo enquantosudo lid -g {group}
listas 10.Estou surpreso que ninguém mencionou
Este comando fornecerá uma lista de grupos em que o usuário está.
fonte
groups
O comando imprime associações de grupo para um usuário. Você pode usar olid
comando para listar usuários em um grupo como:fonte
lid
faz parte do libuser, que não é instalado por padrão em muitas distribuições.O OP formulou a pergunta para excluir a possibilidade de usar o comando groups . Como isso faz parte do coreutils no Linux, (a) foi removido ou (b) OP está digitando errado o nome.
O OP poderia ter usado
groups
assim, por exemplo:Uma resposta sugerida apenas grep é para o nome do grupo no
/etc/group
. Às vezes, isso funciona como pretendido.Um uso um pouco melhor do grep leva em consideração a sintaxe de
/etc/group
:para que apenas a parte antes dos primeiros dois pontos seja um nome de grupo válido. Um grep simples, sem levar em conta a sintaxe, pode (e irá) captar correspondências enganosas do arquivo. Use expressões regulares para fazer com que o grep corresponda exatamente ao necessário:
ou usando uma variável de shell:
No entanto, isso lista apenas aqueles que não estão em um grupo padrão . Para adicioná- los , é necessário levar em consideração o arquivo de senha, por exemplo, extraindo o número de identificação do grupo
/etc/group
e imprimindo os usuários cujo grupo padrão corresponde a/etc/passwd
, por exemplo,Você poderia fazer a mesma coisa usando apenas grep e sed, mas é mais trabalho do que usar awk.
Outra resposta sugerida foi proposta
getent
, o que provavelmente também está em uma máquina Linux (com o Debian, faz parte do GNU libc). No entanto, uma verificação rápida mostra que ele fornece apenas o/etc/group
conteúdo.Eu (como a maioria) não tenho
libusers
oulid
instalei, portanto não posso comentar se satisfaz as condições do OP.Há também o
id
programa, que fornece informações de grupo. Alguém pode expandir isso como uma possível resposta.fonte
sed -n "s/^$groupname:.*://p" /etc/group
mas isso ainda pode relatar resultados errados se o nome do grupo contiver operadores de ER (.
por exemplo, não é incomum nos nomes de grupos).getent
também consultará LDAP / NIS ... embora possivelmente não quando a enumeração for explicitamente desativada para o banco de dados do grupo.groups
não ajudaria, pois lista os grupos dos quais um determinado usuário é membro, em oposição à lista de membros de um determinado grupo.Funciona como um encanto:
fonte
sudo lid -g
listas 8. @Bhavik A resposta aceita também não está correta.Alguns dirão para você instalar o libuser (para 'tampa') ou membros (para 'membros'). Mas, com base na resposta https://unix.stackexchange.com/a/349648/77959, que tratou desse problema com a associação ao grupo de login, encontrei outro grupo que não estava coberto por esse script. Então, aqui está a melhor das duas abordagens combinadas:
fonte
getent
ou grep'^group_name_here:' /etc/group
Essa modificação da abordagem user3717722 listará os membros do grupo em um banco de dados NIS:
fonte