Informações básicas
Estou executando o sssd (1.13.3-22) no Centos (6.8) para autenticar com o Active Directory (2012). Eu não quero usar números uid armazenados no AD, então eu tenho ldap_id_mapping definido como true.
Quando eu executo "id ValidUsername", recebo a resposta "No Such User". Eu olho no log do domínio sssd e vejo que a pesquisa do ldap por ValidUsername não retornou nenhum resultado. Quando eu executo a mesma consulta com o ldapsearch, ele também não retorna nenhum resultado, mas eu posso modificar a consulta para excluir o uidNumber e ele retornará um resultado. Veja os detalhes abaixo para obter informações de consulta do ldap.
Informações detalhadas
sssd_VALID.DOMAIN.CORP.log Snippet
[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
A consulta ldap sssd usada está listada no log em [sdap_get_generic_ext_step]. Se eu pegar a mesma consulta e testá-la executando a pesquisa do ldap, também não obtenho resultado:
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))))'
No entanto, se eu remover as partes de pesquisa uidNumber da consulta, recebo os dados do usuário esperados como resultado:
ldapsearch -LLL -Y GSSAPI -N -H ldap://dc1.valid.domain.corp -b "DC=valid,DC=domain,DC=corp" '(&(sAMAccountName=ValidUsername)(objectclass=user)(sAMAccountName=*))'
Se ldap_id_mapping estiver definido como true, por que o sssd está consultando o AD para dados uidNumber? Eu verifiquei os atributos do usuário e o atributo uidNumber não tem valor, então sssd não funcionará a menos que eu preencha este valor. A Microsoft está desaprovando as ferramentas de gerenciamento para atributos unix , então prefiro não me incomodar com elas.
Eu não quero usar o winbind, que foi esquisito para mim no passado.
Existe algum item de configuração que eu possa usar para forçar o sssd a enviar uma consulta de consulta de usuário válida? Ou há algo mais que eu esteja sentindo falta?
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