O mais provável é que a configuração do ldap não permita enumeração.
Se você conhece o intervalo de IDs de usuário, pode tentar obter uma lista de usuários consultando todos os ids de usuário possíveis:
getent passwd {0..65535}
Assumindo aqui um shell com suporte para a forma {x..y}
da expansão de chave (zsh, bash, ksh93, tcsh, yash -o braceexpand).
Observe que no Linux, os uids não estão mais limitados a 16 bits e alguns servidores de diretório baseados no Microsoft AD ou no samba usam valores acima de 65535. Consultar {0..2147483647}
estaria fora de questão.
Seus administradores de rede provavelmente não vão gostar disso, já que isso significa fazer muitas consultas LDAP ao servidor de diretório.
Note que como a chave primária no banco de dados passwd
é o nome , não id, pode haver mais de um id para cada nome de usuário, um getent passwd <id>
retorna apenas a entrada um , então você pode estar sentindo falta de alguns usuários.
Se os usuários geralmente estiverem em pelo menos um grupo ao lado de seu grupo principal, uma maneira de obter uma lista de usuários seria consultar uma lista de grupos com os mesmos métodos e analisar seus membros:
getent group {0..65535} | cut -d: -f4 | tr , '\n' | sort -u
Aqui sss
não é usado. Você teria sss
em vez de ldap
no nsswitch.conf
.
Isso seria libnss-ldap
(ou possivelmente libnss-ldapd, verifique com dpkg -l | grep ldap
) tratando de consultas para ldap
. A configuração é possivelmente em /etc/libnss-ldap.conf
ou /etc/ldap.conf
ou /etc/ldap/ldap.conf
.
Se você puder lê-los, você descobrirá o nome do servidor e os detalhes de onde os usuários estão na árvore de diretórios e poderá usar ldapsearch
para obter as informações relevantes (desde que você esteja acesso concedido).