web-dev-qa-db-ja.com

CentOSのユーザーとしてopenldapパスワードを変更する方法

元の

私はopenldap-2.4.40認証システムを実行しています。ユーザーは自分のパスワードを自分で変更できますか。動的構成(つまり、構成に_slapd.conf_を使用していないが、_cn=config_ディレクトリ内のファイルを使用している)を使用して、

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

これにより、古いパスワード(2回)と新しいパスワードの入力が求められ、次に、エラーメッセージldap_bind: Invalid credentials (49)で終了するLDAPパスワードを要求されます。

  1. コマンドがLDAPパスワードを要求するのはなぜですか。標準ユーザーはそのパスワードを知らないはずです
  2. プログラムが無効な資格情報で終了するのはなぜですか?

私の_/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif_には、olcAccessの次の設定があります。

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

ユーザーがパスワードを変更できるようにするには、何をする必要がありますか?

編集する

SimonSchürgの答えに応じて、_/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
_

passwdを使用してパスワードを変更すると、すべてが正常に機能し、新しいパスワードでログインできますが、LDAPサーバーが実行されているマシンでのみログインできます。他のすべてのマシン(「LDAPクライアント」)にログインできません。

編集2

サーバーマシンとクライアントマシンのユーザーまたはグループのldapsearchは、同じ出力を提供します。ただし、_authconfig --test_の出力は、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"
_

ユーザーとして実行:

_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"
_

回答の情報が不足している場合はお知らせください。質問を編集して情報を提供します。

2
Woltan

PAMを介してグローバルにLDAP認証を有効にして/ etc/pam.d/passwdを構成すると、ユーザーはpasswdコマンドを使用して自分のLDAPパスワードを変更できます。これはローカルUNIXで一般的ですアカウント。

すでにLDAPユーザーでログインできると思います。

Passwdコマンドでパスワードを変更できるようにするには、/ etc/pam.d/passwdを編集して追加する必要があります

password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so

------編集------

設定ファイルを手動で編集する代わりに、authconfigを使用してCentOSクライアントでLDAPを設定することもできます。次のコマンドは、ユーザーが共通のpasswdコマンドを使用してパスワードを変更できるようにLDAP認証を構成します。

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

ログイン時にローカル認証と存在しないホームディレクトリの自動作成を維持するために、次のフラグも使用したい場合があります。

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

前のコマンドの後、authconfig --testを実行して設定を確認します。
出力の次の部分を確認してください:

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

ユーザーのパスワードの変更は、次のように簡単です。

ldapuser@centos ~ % passwd
Changing password for user ldapuser.
(current) LDAP Password: 
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
ldapuser@centos ~ %
4
Simon Schürg