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).