Como posso obter a lista de usuários do ldap sem ser sudo? [duplicado]

4

Eu tenho acesso não-sudo ssh a um servidor do qual eu quero saber a lista de usuários, acho que o servidor está usando o ldap porque:

-bash-4.2$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the 'glibc-doc-reference' and 'info' packages installed, try:
# 'info libc "Name Service Switch"' for information about this file.

passwd: files ldap
group: files ldap
shadow: files ldap

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis

mas:

-bash-4.2$ cd /etc/sssd/
-bash: cd: /etc/sssd/: No such file or directory

Por favor, note que nenhum dos /etc/passwd , ls -lsa /var ou getent passwd está dando a lista que eu quero (eles nem incluem meu próprio nome de usuário)

Então, alguém tem alguma idéia de como eu posso obter a lista de nomes de usuários e ids deste servidor?

-bash-4.2$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.11 (wheezy)
Release:    7.11
Codename:   wheezy
    
por yukashima huksay 15.12.2017 / 11:50

1 resposta

3

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

    
por 15.12.2017 / 12:46