Como mostrar todos os usuários registrados e seus grupos com um comando?

1

Eu estava escrevendo um teste sobre comandos básicos do Unix etc, e havia uma pergunta mostrando todos os usuários registrados e seus grupos com um comando. Ao mesmo tempo, não consigo usar o comando getent .

    
por Alexander 23.04.2015 / 12:37

2 respostas

1

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

    
por 23.04.2015 / 14:00
1

cat / etc / passwd (filtre o conteúdo com o grep de acordo com suas necessidades)

Aqui você vai: awk -F':' '{ print $1}' /etc/passwd | while read -r line; do id "$line"; done

    
por 23.04.2015 / 12:54

Tags