Início
» LINUX
»
Linux: Como listar todos os usuários
Linux: Como listar todos os usuários
Para listar todos os usuários no Linux, o melhor comando de uso geral é `getent` getent passwd. Se você quiser apenas os nomes de usuário, execute ` getent username` getent passwd | cut -d: -f1. Isso geralmente é mais completo do que ler /etc/passwddiretamente o nome de usuário, porque o `getent` segue a configuração do Name Service Switch (NSS) do sistema , podendo incluir contas fornecidas por serviços como LDAP ou outras fontes de identidade configuradas.
Liste todos os usuários com getent
Abra um terminal e execute o seguinte comando:
getent passwd
Cada linha representa um registro de usuário. Para exibir apenas os nomes de login, utilize:
getent passwd | cut -d: -f1
Você também pode consultar uma conta conhecida sem precisar percorrer a lista completa:
getent passwd alice
A documentação da Biblioteca GNU C explica que o NSS controla como os bancos de dados do sistema, como o `/etc/sysctl`, passwdsão resolvidos por meio do `/etc/sysctl` /etc/nsswitch.conf. Consulte a documentação do NSS da Biblioteca GNU C.
getent passwdExibe os registros de conta disponíveis por meio das fontes de banco de dados de usuários configuradas.
Listar usuários locais de /etc/passwd
Se você deseja armazenar contas especificamente no banco de dados de senhas local, leia o /etc/passwdarquivo . O arquivo contém um registro separado por dois pontos para cada conta local. Um registro típico inclui o nome de usuário, um espaço reservado para a senha, o UID, o GID primário, um campo de comentário, o diretório inicial e o shell de login.
Somente para nomes de usuário:
cut -d: -f1 /etc/passwd
O mesmo resultado pode ser obtido com awk:
awk -F: '{print $1}' /etc/passwd
Essa lista normalmente inclui tanto usuários humanos quanto contas de serviço, como contas de administrador root, daemoncontas de usuário ou contas criadas por softwares instalados.
O cutcomando extrai apenas o primeiro campo, que é o nome de usuário.
Veja os registros completos da conta local.
Para inspecionar o arquivo local completo, use lesspara que você possa rolar confortavelmente:
less /etc/passwd
Você também pode imprimir o arquivo diretamente:
cat /etc/passwd
Em sistemas Linux modernos, o campo de senha geralmente contém x. Isso não significa que a senha seja armazenada como texto simples em /etc/passwd; os hashes de senha são normalmente mantidos separadamente em /etc/shadow, que possui permissões mais restritivas. O projeto Linux man-pages documenta os sete campos e esse comportamento de senha oculta em passwd(5) .
Uma /etc/passwdentrada completa contém o nome de usuário, UID, GID, diretório inicial, shell e outros campos da conta.
Liste os nomes de usuário com o Bash compgen.
Se você estiver usando Bash, compgenpode gerar candidatos para autocompletar nomes de usuário:
compgen -u
Para obter um resultado extenso, navegue pelas páginas com:
compgen -u | less
Ou remova os nomes duplicados e ordene a saída:
compgen -u | sort -u
compgené um comando interno do Bash, portanto é menos universal do que getentpara scripts que precisam funcionar em diferentes shells. O manual do GNU Bash documenta o uso compgende `cd` como parte dos recursos de autocompletar programáveis do Bash.
Em Bash, compgen -u | lessfornece uma lista paginada de nomes de usuário.
Como exibir usuários comuns em vez de contas de serviço?
Não existe um limite de UID único que seja correto para todas as distribuições Linux ou organizações. Muitos sistemas reservam UIDs mais baixos para contas de sistema e atribuem usuários comuns a partir de um mínimo configurado, mas essa política pode variar. Se o seu sistema usa UIDs /etc/login.defs, você pode verificar o mínimo configurado com:
grep '^UID_MIN' /etc/login.defs
Você também pode procurar por contas com shells interativos como uma pista prática:
Isso é apenas uma heurística: uma conta pode ter um shell interativo sem ser um usuário comum de desktop, e usuários gerenciados externamente podem seguir políticas de UID diferentes.
Salvar, contar ou pesquisar a lista de usuários
Depois de obter a lista necessária, as ferramentas padrão do shell facilitam a sua reutilização:
Salvar nomes de usuário:getent passwd | cut -d: -f1 > ~/linux-users.txt
Melhor padrão; segue as fontes de usuário NSS configuradas.
cut -d: -f1 /etc/passwd
Somente nomes de usuário locais
cat /etc/passwdouless /etc/passwd
Inspecionando registros completos de contas locais
compgen -u
Listagem rápida de nomes de usuário do Bash
Para a maioria dos administradores e usuários de desktop, comece com getent passwd | cut -d: -f1. Use /etc/passwdquando você precisar intencionalmente apenas de contas locais.