Como alterar a senha do openldap como usuário no CentOS?

2

Original

Estou executando um sistema de autenticação openldap-2.4.40 e um usuário poderá alterar sua senha de início. Com uma configuração dinâmica (ou seja, não estou usando slapd.conf para configuração, mas os arquivos no diretório cn=config ), tentei alterar a senha com

ldappasswd -x -D "uid=<my_user>,ou=Users,dc=<some>,dc=<dc>" -W -A -S

Isso me pede minha senha antiga (duas vezes) e a nova e, em seguida, solicita a senha LDAP que termina com a mensagem de erro: ldap_bind: Invalid credentials (49) .

  1. Por que o comando me pergunta a senha LDAP? O usuário padrão não deve saber essa senha
  2. Por que o programa termina com credenciais inválidas?

No meu /etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif , tenho as seguintes configurações para olcAccess :

olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none

O que preciso fazer para que o usuário possa alterar sua senha?

Editar

Respondendo à resposta do Simon Schürg eu adiciono o conteúdo de /etc/pam.d/passwd :

auth       include      system-auth
account    include      system-auth
password   substack     system-auth
-password   optional    pam_gnome_keyring.so use_authtok
password   substack     postlogin

Se eu alterar a senha com passwd , tudo funciona bem e eu posso me conectar com a nova senha, mas apenas na máquina com o servidor LDAP em execução. Não consigo fazer login em todas as outras máquinas ("os clientes LDAP").

Editar2

Um ldapsearch em um usuário ou grupo nas máquinas servidor e cliente fornece a mesma saída. No entanto, authconfig --test output difere se executado como root ou como usuário:

Realizado como root:

nss_ldap is enabled
 LDAP+TLS is disabled
 LDAP server = "ldap://10.0.0.254"
 LDAP base DN = "dc=example,dc=com"

pam_ldap is enabled
 LDAP+TLS is disabled
 LDAP server = "ldap://10.0.0.254"
 LDAP base DN = "dc=example,dc=com"
 LDAP schema = "rfc2307"

Realizado como usuário:

nss_ldap is enabled
 LDAP+TLS is disabled
 LDAP server = ""
 LDAP base DN = ""

pam_ldap is enabled
 LDAP+TLS is disabled
 LDAP server = ""
 LDAP base DN = ""
 LDAP schema = "rfc2307"

Se alguma informação para a resposta estiver faltando, por favor, avise-me e eu irei editar a pergunta e fornecer as informações.

    
por Woltan 28.09.2016 / 17:40

1 resposta

4

Se você ativar a autenticação LDAP globalmente por meio do PAM e configurar /etc/pam.d/passwd , os usuários poderão alterar sua própria senha LDAP por meio do comando passwd como é comum para contas Unix locais.

Espero que você já possa fazer login com usuários do ldap.

Para permitir alterações de senha com o comando passwd você precisa editar /etc/pam.d/passwd e adicionar

password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so

------ editar ------

Em vez de editar manualmente os arquivos de configuração, você também pode usar o authconfig para configurar o ldap no cliente centos. O comando a seguir configura a autenticação LDAP de forma que os usuários possam alterar suas senhas com o comando comum passwd .

authconfig \
  --enableldap \
  --enableldapauth \
  --ldapserver='ldap://example.com/' \
  --ldapbasedn='dc=example,dc=com' \
  --update

Talvez você também queira usar os seguintes sinalizadores para preservar a autenticação local e a criação automática de diretórios iniciais inexistentes no login.

  --enablemkhomedir \ 
  --enableshadow \
  --enablelocauthorize \
  --passalgo=sha256 \

Após o comando anterior, execute authconfig --test para verificar as configurações.
Verifique as seguintes partes da saída:

nss_ldap is enabled
 LDAP+TLS is disabled
 LDAP server = "ldap://example.com/"
 LDAP base DN = "dc=example,dc=com"

pam_unix is always enabled
 shadow passwords are enabled
 password hashing algorithm is sha256

pam_ldap is enabled
 LDAP+TLS is disabled
 LDAP server = "ldap://example.com/"
 LDAP base DN = "dc=example,dc=com"
 LDAP schema = "rfc2307"

pam_mkhomedir or pam_oddjob_mkhomedir is enabled (umask=0077)
Always authorize local users is enabled ()

Alterar senha para usuários agora é simples como:

ldapuser@centos ~ % passwd
Changing password for user ldapuser.
(current) LDAP Password: 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
ldapuser@centos ~ %
    
por 01.10.2016 / 14:26