Como todos os usuários LDAP são mostrados com getent passwd?

6

Estamos usando um servidor LDAP com servidores Solaris e RHEL e planejamos migrar mais servidores para o RHEL. No entanto, temos um problema com o LDAP em todos os servidores da Red Hat.

Quando eu digito "getent passwd", todos os usuários em todo o servidor LDAP são mostrados, em vez de apenas os usuários que têm acesso a esse servidor. Normalmente, cerca de 10 a 50 pessoas têm acesso a um servidor, portanto, o Solaris imprime essa lista de usuários, enquanto o Red Hat flat out exibe uma lista de todos os usuários que existem no LDAP (cerca de 650).

Eu prefiro o comportamento como no Solaris, onde apenas os usuários que têm permissão para acessar o servidor são listados com "getent passwd".

Como posso configurar o RHEL para listar apenas os usuários que têm acesso ao servidor?

    
por ujjain 29.07.2013 / 14:12

3 respostas

2

Esse é o comportamento padrão, o RHEL restringe os usuários que usam o PAM, o nss tenta resolver todas as entradas de usuário / grupo disponíveis na base de pesquisa do ldap.

Pode haver situações em que o sistema tenha uma montagem nfs que inclua arquivos pertencentes a usuários que não têm acesso à máquina; você ainda poderá resolver os usuários se todos estiverem visíveis para o SO (o acesso é restrito pelo PAM, para que eles não consigam fazer o login).

Você pode usar uma das seguintes opções para alterar o comportamento.

  1. Use SSSD, ele não irá enumerar usuários / grupos por padrão. (isto é, getent passwd listará apenas os usuários locais).

  2. Use um filtro ldap para que apenas os usuários necessários fiquem visíveis para a máquina. Isso é possível somente se houver um filtro específico que possa ser usado para filtrar o usuário (por exemplo: usando um atributo memberof em um grupo).

  3. Use o modo compat para filtrar os usuários.

por exemplo:

nsswitch.conf 
passwd: files compat
passwd_compat: ldap

in passwd file, add +@netgroup.
    
por 07.08.2013 / 13:48
3

Você está restringindo o acesso em /etc/security/access.conf , que, embora controle quem pode acessar o servidor, não afeta o que os usuários são visíveis para o servidor. Geralmente é o que você quer: mesmo que o usuário alice não consiga acessar o servidor, se ela possui arquivos em um sistema de arquivos compartilhado que eu quero ver:

$ ls -l ~alice
-rw-rw-r--. 1 alice alice 0 Aug  1 09:09 afile

Em vez de:

$ ls -l ~alice
-rw-rw-r--. 1 5234 5234 0 Aug  1 09:09 afile

Ou seja, quero que o sistema saiba sobre os usuários, mesmo que eles não consigam fazer login no sistema.

Se você quiser restringir o conjunto de usuários visíveis para o sistema, você precisará configurar o subsistema NSS para implementar algum tipo de filtro LDAP. Como você faz isso depende de quais ferramentas você está usando:

  • user993553 menciona nss_ldap , que é a ferramenta legada para integração com o LDAP.

  • Algumas distribuições mais recentes usam SSSD , que inclui um parâmetro ldap_service_search_base no módulo LDAP ,

  • O programa nslcd tem a opção filter que pode ser aplicada a cada mapa

Qual mecanismo você usa depende da versão do RHEL em execução: o RHEL 6 tem nslcd e sssd (estou usando nslcd ), enquanto versões anteriores acho que estão limitadas a nss_ldap .

    
por 01.08.2013 / 15:15
2

Se for uma opção, você pode estender seu esquema ldap de acordo com o seguinte

de link

To get this host verification, we're going to add a custom schema to allow for the host attribute on a posixAccount objectClass. You can download the new schema here. To use this new schema, unzip and save the scn.schema file to /usr/local/etc/openldap/schema and add the following line to your slapd.conf file:

...

Em seguida, adicione nss_ldap.conf nss_base_passwd dc=base,dc=local?one?host=thismachinehost

a sintaxe é base? scope? filter

Isso é testado no freebsd onde getent passwd então lista apenas os usuários que correspondem ao filtro.

    
por 01.08.2013 / 15:00