web-dev-qa-db-ja.com

ldapsearchはldapsで機能しますが、getent passwd 'user'はCentos 7最小openldapサーバーで何も返しません

Centos 7以上にopenldapをインストールし、データベースにユーザーnewuser01を正常に追加しました。 ldapsearchは、次の形式を使用して、マスターとクライアントの両方で正常に動作します。
ldapsearch -H ldaps://provider.example.com -x -D "cn=Manager,dc=example,dc=com" -W

だが getent passwd -s sss newuser01またはgetent passwd newuer01は、クライアントとマスターの両方で何も返しません。

ここに私が見たファイルがあります、それらが正しく構成されているかどうかはわかりません、そして私が見なければならない他のものがあるなら、あなたの努力に感謝します:

  • /etc/nsswitch.conf /etc/openldap/ldap.conf
  • /etc/sssd/sssd.conf
  • /etc/openldap/slapd.conf#centos 7では非推奨
  • /etc/pam.d/system-auth

マスター:

/etc/nsswitch.confに含まれるもの:

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に含まれるもの:

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はサーバー上で空です

/etc/pam.d/system-authに含まれるもの:

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

クライアント上:

/etc/nsswitch.confはサーバーとまったく同じです

/etc/openldap/ldap.confに含まれるもの:

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に含まれるもの:

[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には、サーバーがこの追加のエントリで行う処理が含まれているようです。

session     optional      pam_sss.so
3
kevbuntu

これは、freeipa ldapサーバーに対してsssd-ldapを使用して機能します(組み込みのidmプロバイダーを使用せずに、sssd-ldapプロバイダーを使用します)。

  • sssd-ldapとauthoconfigをインストールします
  • 実行authconfig --enablesssd --enablesssdauth --enablelocauthorize --update
  • 適切な情報を含む構成ファイル/etc/sssd/sssd.confを作成します。
[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]
  • sssdサービスを再起動します:systemctl restart sssd
  • sssがpasswd、groups、shadowのnsswitch.confで有効になっていることを確認します。 nsswitch.confでLDAPを使用しないでください。「files ldap」ではなく、「files sss」にする必要があります。

ユーザーのリストを取得するためにバインドする必要がない場合は、ldap_default_bind_dn、ldap_default_authtok_type、およびldap_default_authtokディレクティブを削除します。 tlsが不要な場合は削除しますが、ユーザーを認証するため、有効にする必要があります。ユーザーおよびグループの検索ベースとして、状況に合わせてcacertdirおよびcacertディレクティブへのパスを変更します。

このブログでは: http://www.couyon.net/blog/enabling-ldap-usergroup-support-and-authentication-in-centos-6 同様のハウツーが見つかります。公式のRed Hat文書はこちら: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System-Level_Authentication_Guide/Configuring_Domains.html#Configuring_Domains-Configuring_a_Native_LDAP_Domain

いつものように、証拠はプリンにあります:

[root@localhost sssd]# grep user1 /etc/passwd
[root@localhost sssd]# getent passwd user1
user1:*:1076200004:1076200004:ipa user:/home/user1:/bin/sh
1
natxo asenjo