Provavelmente não é a melhor maneira de fazer isso, mas isso pode funcionar:
awk -F: '$NF ~ "," { print $1 }' /etc/group
Estamos nos preparando para migrar para o Samba baseado no Active Directory, do domínio de estilo antigo. Atualmente, todos os nossos grupos são planos, os usuários pertencem a grupos, mas os grupos não podem pertencer a outros grupos. Como eu quero mudar isso, preciso listar todos os grupos com usuários.
O problema é que existem milhares de usuários e milhares de grupos. O que eu preciso é listar os grupos com 2 ou mais membros, então mostre apenas o nome do grupo na linha de comando. Isso deve eliminar grupos de usuários ou grupos com apenas um usuário.
Como posso fazer isso no Debian?
Geralmente,
getent group | awk -F ':' '$4 ~ "," {print $1}'
Se o quarto campo delimitado por dois pontos (lista de usuários) da lista de grupos contiver uma vírgula, imprima o primeiro campo delimitado por dois pontos (nome do grupo).
como os membros do grupo são delimitados por vírgulas, apenas grupos com vários membros terão vírgulas. A partir dessas linhas de arquivo de grupo, mostre apenas o conteúdo da linha antes dos primeiros dois pontos.
grep , /etc/group | cut -d: -f 1