O sistema operacional Linux oferece comandos para criar e excluir usuários e verificar quais estão logados. No entanto, não há comando para listar usuários, logados ou não, no sistema.
Ainda assim, existem algumas maneiras de fazer isso. Se você quiser aprender como listar usuários no Linux, siga nossas etapas abaixo.
Por que você deve verificar sua lista de usuários do Linux
Existem vários motivos pelos quais você pode querer listar usuários no Linux. É uma boa prática em termos de encontrar e excluir contas não utilizadas, por exemplo. Do ponto de vista da segurança, também é uma boa maneira de garantir que você não tenha intrusos criando contas de usuário.
Esta é uma tarefa administrativa que você provavelmente deve fazer pelo menos uma vez por mês. Se você estiver executando um servidor Linux corporativo, talvez queira fazê-lo com mais frequência.
Usuários listados em /etc/passwd
Todas as contas de usuário do seu servidor Linux têm entradas no arquivo /etc/passwd . Cada linha representa um usuário e possui sete campos separados por dois pontos. Os campos fornecem informações sobre o usuário.
- Nome de usuário.
- Senha criptografada ( x indica que a senha está realmente em /etc/shadow )
- Número de identificação do usuário (UID).
- Número de identificação do grupo do usuário (GID).
- Nome completo do usuário, se listado.
- Diretório inicial do usuário.
- shell de login
Então, isso nos leva a uma maneira de listar todos os usuários no Linux. Você pode usar o comando less para ver o arquivo inteiro, uma tela por vez.
less /etc/passwd

Se você deseja verificar se um usuário específico existe no sistema Linux, é um bom uso para o comando grep :
less passwd | grep jeff

Se você não obtiver nenhuma saída, esse usuário não existe no servidor Linux.
Ainda assim, é muita informação. Você pode reduzi-lo apenas ao nome de usuário, por exemplo, usando os comandos awk ou cut :
awk -F: '{print $1}' /etc/passwd cut -d: -f1 /etc/passwd

Isso tende a ser muito mais fácil de entender, mas ainda deixa você ver todas as contas de usuário baseadas no sistema misturadas com seus usuários humanos.
Como usar getent para listar usuários
Outro comando, getent , é muito mais útil. Ele exibe entradas de qualquer banco de dados configurado no arquivo /etc/nsswitch.conf do seu servidor . Um deles é o banco de dados passwd . Para usar getent para exibir uma lista de todos os usuários do Linux, funciona assim:
getent passwd
A saída parece exatamente igual ao uso do comando less , mas lista todos os usuários LDAP no sistema Linux. Mais uma vez, nossos comandos awk e cut podem ajudar a ver apenas o primeiro campo, os nomes de usuário.
Se você deseja verificar se um usuário específico existe no sistema Linux, getent facilita:
getent passwd jeff
Novamente, nenhuma saída desse comando informa que o usuário não existe.
Outro ótimo uso para getent é descobrir quantas contas de usuário existem no servidor. Isso é feito canalizando a saída de getent através do comando wc , assim:
getent passwd | wc -l

Como você pode ver, meu sistema Linux tem um total de 48 contas. Bem interessante, já que sou o único que usa, mas isso só mostra quantas contas de sistema são criadas no Linux.
Eliminando usuários do sistema de usuários normais
Aos olhos do Linux, não há diferença entre um usuário do sistema e um humano. Sempre que você instala o sistema operacional, ele cria vários usuários do sistema. Outros usuários do sistema são criados para vários pacotes, como software de serviço da Web ou de correio.
Então, como você pode listar apenas os usuários humanos comuns no sistema Linux? A chave aqui é entender que quando você cria um usuário comum, seu UID é atribuído dentro de um certo intervalo de números. Ao verificar o arquivo /etc/login.defs , podemos determinar o intervalo de valores de UID disponíveis para contas de usuários comuns.
grep -E '^UID_MIN|^UID_MAX' /etc/login.defs

Com base na saída, sei que usuários normais devem ter um UID entre 1000 e 60000. A partir disso, posso construir uma consulta getent que exibirá apenas usuários normais.
getent passwd {1000..60000}

Tenha em mente que getent parecerá travar mesmo depois de exibir sua saída. Você pode pressionar Ctrl-C para encerrar o processo ou esperar até que ele termine. Geralmente, leva menos de 15 segundos para concluir a pesquisa no banco de dados passwd .
Uma versão mais genérica desse comando leva em consideração diferentes valores UID_MIN e UID_MAX que vários servidores podem usar.
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}
Nesse comando, estamos aproveitando a capacidade do Linux de fazer várias coisas ao mesmo tempo. Os comandos awk obtêm os valores UID_MIN e UID_MAX e os usam dentro do comando getent .
Agora, digamos que tudo o que queremos são os nomes de usuário. Mais uma vez, canalizamos nossa saída através do comando cut , assim:
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1

Este comando pode levar de 10 a 15 segundos para ser concluído, portanto, seja paciente.
Gerenciando Efetivamente Seus Usuários Linux
É importante acompanhar quais contas de usuário existem em seu sistema Linux. Quando você souber que um funcionário saiu, seja rápido em excluir sua conta de usuário. Listar periodicamente seus usuários do Linux ajudará a garantir que você capture todas as contas que possam ter permanecido por aí.
Ao mesmo tempo, certifique-se de manter as políticas de segurança de senha e incentivar seus usuários a alterar suas senhas regularmente.