web-dev-qa-db-ja.com

CentosのSSSD、ActiveDirectory検索はゼロの結果を返します

基本情報

Centos(6.8)でsssd(1.13.3-22)を実行して、Active Directory(2012)で認証しています。 ADに保存されているuid番号を使用したくないので、ldap_id_mappingをtrueに設定しました。

「idValidUsername」を実行すると、「NoSuchUser」という応答が返されます。 sssdドメインログを調べると、ValidUsernameのLDAP検索で結果が返されなかったことがわかります。 ldapsearchを使用して同じクエリを実行すると、結果も返されませんが、クエリを変更してuidNumberを除外すると、結果が返されます。 LDAPクエリ情報については、以下の詳細を参照してください。

詳細情報

sssd_VALID.DOMAIN.CORP.logスニペット

[sdap_search_user_next_base] (0x0400): Searching for users with base [DC=valid,DC=domain,DC=corp]
[sdap_get_generic_ext_step] (0x0400): calling ldap_search_ext with [(&(sAMAccountName=ValidUsername)(objectclass=user)(sAMAccountName=*)(&(uidNumber=*)(!(uidNumber=0))))][DC=valid,DC=domain,DC=corp].
[sdap_get_generic_op_finished] (0x0400): Search result: Success(0), no errmsg set
[sdap_search_user_process] (0x0400): Search for users, returned 0 results.
[sdap_get_users_done] (0x0040): Failed to retrieve users
[sysdb_search_by_name] (0x0400): No such entry
[sysdb_delete_user] (0x0400): Error: 2 (No such file or directory)
[acctinfo_callback] (0x0100): Request processed. Returned 0,0,Success
[be_ptask_online_cb] (0x0400): Back end is online

使用されているLDAPクエリsssdは、ログの[sdap_get_generic_ext_step]にリストされています。同じクエリを取得し、LDAP検索を実行してテストすると、結果も得られません。

ldapsearch -LLL -Y GSSAPI -N -H ldap://dc1.valid.domain.corp -b "DC=valid,DC=domain,DC=corp" '(&(sAMAccountName=ValidUsername)(objectclass=user)(sAMAccountName=*)(&(uidNumber=*)(!(uidNumber=0))))'

ただし、クエリのuidNumberルックアップ部分を削除すると、結果として期待されるユーザーデータが取得されます。

ldapsearch -LLL -Y GSSAPI -N -H ldap://dc1.valid.domain.corp -b "DC=valid,DC=domain,DC=corp" '(&(sAMAccountName=ValidUsername)(objectclass=user)(sAMAccountName=*))'

Ldap_id_mappingがtrueに設定されている場合、sssdがADにuidNumberデータを照会するのはなぜですか?ユーザー属性を確認しましたが、uidNumber属性に値がないため、この値を入力しないとsssdは機能しません。 Microsoftはunix属性の管理ツールを非推奨にしています なので、気にしないほうがいいです。

過去に不安定だったwinbindは使いたくありません。

Sssdに有効なユーザールックアップクエリを送信させるために使用できる設定項目はありますか?それとも私が見逃しているものは他にありますか?

sssd.conf

[sssd]
config_file_version = 2
debug_level = 6
domains = VALID.DOMAIN.CORP
services = nss, pam

[nss]
debug_level = 6

[pam]
debug_level = 6

[domain/VALID.DOMAIN.CORP]
debug_level = 8

id_provider = ad
access_provider = ad
auth_provider = ad
chpass_provider = ad
subdomains_provider = none

dyndns_update = false

ad_server = dc1.VALID.DOMAIN.corp
ad_backup_server = dc2.VALID.DOMAIN.corp

ldap_id_mapping = true
ldap_schema = ad

fallback_homedir = /home/%d/%u
default_Shell = /bin/bash

smb.conf

workgroup = VALID
client signing = yes
client use spnego = yes
kerberos method = secrets and keytab
realm = VALID.DOMAIN.CORP
security = ads
log file = /var/log/samba/log.%m
max log size = 50
1
Hank Killinger

これは、サブドメインプロバイダーをnoneに設定したためです。少し直感に反しますが、サブドメインプロバイダーは、IDマッピングに必要なSIDなど、参加しているドメインに関する情報も取得します。

3つのオプションがあります。

  1. サブドメインプロバイダーを有効にします。なぜ無効にしたのかわかりません。ほとんどの人は、信頼できるドメインに到達できないことを回避するために無効にしています。
  2. サブドメインプロバイダーを無効にしておく必要がある場合は、ドメインSIDを手動で設定する必要があります。mansssd-ldapを参照して、「domain_sid」を検索してください。
  3. 7.3を実行している場合は、ad_enabled_domainsを使用してのみ参加ドメインを有効にできます
1
jhrozek