ldapsearch funciona para ldaps mas getent passwd 'user' não retorna nada no servidor openldap mínimo do Centos 7

3

Eu instalei o openldap no mínimo centos 7 e adicionei um usuário newuser01 ao banco de dados com sucesso. O ldapsearch funciona bem com o mestre e o cliente usando este formato:
ldapsearch -H ldaps://provider.example.com -x -D "cn=Manager,dc=example,dc=com" -W

Mas getent passwd -s sss newuser01 ou getent passwd newuer01 não retorna nada no cliente nem no mestre.

Aqui estão os arquivos que eu olhei, não tenho certeza se eles estão configurados corretamente e se há outros que eu deveria olhar, muito obrigado por seus esforços:

  • /etc/nsswitch.conf /etc/openldap/ldap.conf
  • /etc/sssd/sssd.conf
  • /etc/openldap/slapd.conf # Está obsoleto para centos 7
  • /etc/pam.d/system-auth

On Master:

/etc/nsswitch.conf contém:

passwd:     files sss
shadow:     files sss
group:      files sss
hosts:      files dns 
bootparams: nisplus [NOTFOUND=return] files
ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files sss
netgroup:   files sss
publickey:  nisplus
automount:  files
aliases:    files nisplus

/etc/openldap/ldap.conf contém:

BASE            dc=example,dc=com
URI             ldaps://provider.example.com
TLS_CACERTDIR   /etc/openldap/certs
TLS_REQCERT     demand
SASL_NOCANON    on

/etc/sssd/sssd.conf está vazio no servidor

/etc/pam.d/system-auth contém:

auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so
account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so
password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

No cliente:

/etc/nsswitch.conf contém exatamente como o servidor

/etc/openldap/ldap.conf contém:

TLS_CACERTDIR /etc/openldap/cacerts
# Turning this off breaks GSSAPI used with krb5 when rdns = false
SASL_NOCANON    on
URI ldaps://provider.example.com:636
BASE dc=example,dc=com

/etc/sssd/sssd.conf contém:

[domain/default]
autofs_provider = ldap
cache_credentials = False
ldap_search_base = dc=example,dc=com
krb5_server = #
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldaps://provider.example.com:636
ldap_id_use_start_tls = False
ldap_tls_cacertdir = /etc/openldap/cacerts
[sssd]
services = nss, pam, autofs
config_file_version = 2
domains = default
[nss]
homedir_substring = /home
[pam]
[sudo]
[autofs]
[ssh]
[pac]
[ifp]

/etc/pam.d/system-auth parece conter o que o servidor faz com essa entrada extra:

session     optional      pam_sss.so
    
por kevbuntu 21.06.2016 / 18:13

1 resposta

1

isso funciona para mim usando o sssd-ldap em um servidor freeipa ldap (não usando o provedor idm integrado, mas o provedor sssd-ldap conforme solicitado).

  • instale sssd-ldap e authoconfig
  • executar authconfig --enablesssd --enablesssdauth --enablelocauthorize --update
  • crie o arquivo de configuração /etc/sssd/sssd.conf com suas informações apropriadas:
[domain/default]

autofs_provider = ldap
ldap_schema = rfc2307bis
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://your.ldap.host
ldap_id_use_start_tls = True
cache_credentials = True
ldap_tls_cacertdir = /etc/pki/tls/certs
ldap_tls_cacert = /etc/pki/tls/certs/ca-bundle.crt
ldap_default_bind_dn = uid=user1,cn=users,cn=accounts,dc=your,dc=domain,dc=tld
ldap_default_authtok_type = password
ldap_default_authtok = secretpassword
ldap_user_search_base = cn=users,cn=accounts,dc=your,dc=domain,dc=tld
ldap_group_search_base = cn=groups,cn=accounts,dc=your,dc=domain,dc=tld

[sssd]
services = nss, pam, autofs
config_file_version = 2

domains = default
[nss]
homedir_substring = /home

[pam]

[sudo]

[autofs]

[ssh]

[pac]

[ifp]
  • reinicie o serviço sssd: systemctl restart sssd
  • verifique se o sss está ativado no nsswitch.conf para passwd, groups e shadow. Não use o ldap no nsswitch.conf, ele deve ser "arquivos sss", não "arquivos ldap"

Se você não precisar de ligação para obter a lista de usuários, remova as diretivas ldap_default_bind_dn, ldap_default_authtok_type e ldap_default_authtok. Se você não precisar de tls, remova-os, mas estará autenticando os usuários, portanto, ele deve estar ativado. Modifique os caminhos para as diretivas cacertdir e cacert para corresponder à sua situação, como a base de pesquisa do usuário e do grupo.

Neste blog: link você encontre um howto semelhante. A documentação oficial da Red Hat está aqui: link

Como sempre, a prova está no pudim:

[root@localhost sssd]# grep user1 /etc/passwd
[root@localhost sssd]# getent passwd user1
user1:*:1076200004:1076200004:ipa user:/home/user1:/bin/sh
    
por 21.06.2016 / 23:23