Todos os usuários:
$ getent passwd
Todos os grupos:
$ getent group
Todos os grupos com um usuário específico:
$ getent group | grep username
Eu sei que tenho grupos e usuários existentes, mas não tenho certeza sobre a associação deles. Existe um comando de shell que posso usar para listar todos os usuários ou todos os grupos e um comando para listar todos os grupos / usuários para um usuário / grupo especificado?
Então, algo como showusers
listaria todos os usuários e showgroups -u thisuser
mostraria todos os grupos que possuem thisuser
.
Listar usuários e seus grupos:
for user in $(awk -F: '{print $1}' /etc/passwd); do groups $user; done
Listar grupos e seus usuários:
cat /etc/group | awk -F: '{print $1, $3, $4}' | while read group gid members; do
members=$members,$(awk -F: "\ == $gid {print \",\" \}" /etc/passwd);
echo "$group: $members" | sed 's/,,*/ /g';
done
cut -d':' -f 1 /etc/passwd
Ou
awk -F ':' '{print $1}' /etc/passwd
Enquanto cat / etc / passwd mostra todos os usuários (e um monte de outras coisas), cut -d ':' -f 1 é uma maneira simples de dividir cada linha com ':' como um delimitador e extrai apenas o primeiro campo (usuários). Praticamente o mesmo que a versão awk.
cut -d':' -f 1 /etc/group
Ou
awk -F ':' '{print $1}' /etc/group
Adivinhe, muito semelhante a listar usuários. Basta analisar / etc / group .
Outra maneira interessante, talvez mais próxima do que o OP queria, é compgen . Não tenho certeza sobre problemas de compatibilidade.
compgen -u
compgen -g
Se você não se importa com usuários remotos, como LDAP ou NIS, para listar usuários e seus grupos associados de uma maneira simples:
cut -d: -f1 /etc/passwd | xargs groups
Saída;
root : root myuser : root www-data fuse anotheruser : anotheruser cdrom floppy audio dip video plugdev scanner bluetooth netdev
para o debian
cat /etc/passwd # show all users
cat /etc/group # show all groups
cat /etc/passwd | grep group # show all users with specified group
Assim:
sudo cat /etc/gshadow |grep group
sudo cat /etc/gshadow |grep username
Use este comando para obter todos os grupos e usuários desse grupo específico.
grep '
> ' /etc/group