Uma possível solução é, por exemplo, com awk e leitura /etc/shadow e /etc/group (suponho que você não precise de usuários do sistema e estou tentando excluí-los e bloquear usuários):
awk -F":" 'NR==FNR {
if ($2 !~ /\!/ && $2 !~ /\*/) {
m[$1] = "";
}
next;
}
{
for (i in m) {
if ($4 ~ i || $1 == i) {
m[i] = m[i] $1 " ";
}
}
}
END {
for (i in m) {
print i ":", m[i];
}
}' /etc/shadow /etc/group
Você pode remover a condição if ($2 !~ /\!/ && $2 !~ /\*/) para listar todas as contas de usuário e também observar que a existência de ! ou * in /etc/shadow significa que o usuário não pode usar uma senha unix para efetuar login o usuário pode efetuar login no sistema por outros meios, por exemplo, login baseado em chave).