trusts: use ipaNTTrustPartner attribute to detect trust entries

Trust entries were found by presence of ipaNTSecurityIdentifier
attribute. Unfortunately this attribute might not be there due the bug.
As replacement for this, attribute ipaNTTrustPartner can be used.

Note: other non trust entries located in cn=trusts subtree can be
cross-realm principals.

https://fedorahosted.org/freeipa/ticket/5665

Reviewed-By: Tomas Babej <tbabej@redhat.com>
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
This commit is contained in:
Martin Basti 2016-02-22 17:36:01 +01:00
parent 9818e463f5
commit 70bd7c8802
2 changed files with 6 additions and 3 deletions

View File

@ -563,8 +563,11 @@ class trust(LDAPObject):
rules=ldap.MATCH_ALL rules=ldap.MATCH_ALL
) )
# more type of objects can be located in subtree (for example
# cross-realm principals). we need this attr do detect trust
# entries
trustfilter = ldap.combine_filters( trustfilter = ldap.combine_filters(
(trustfilter, "ipaNTSecurityIdentifier=*"), (trustfilter, "ipaNTTrustPartner=*"),
rules=ldap.MATCH_ALL rules=ldap.MATCH_ALL
) )
@ -1036,7 +1039,7 @@ class trust_find(LDAPSearch):
# search needs to be done on a sub-tree scope # search needs to be done on a sub-tree scope
def pre_callback(self, ldap, filters, attrs_list, base_dn, scope, *args, **options): def pre_callback(self, ldap, filters, attrs_list, base_dn, scope, *args, **options):
# list only trust, not trust domains # list only trust, not trust domains
trust_filter = '(ipaNTSecurityIdentifier=*)' trust_filter = '(ipaNTTrustPartner=*)'
filter = ldap.combine_filters((filters, trust_filter), rules=ldap.MATCH_ALL) filter = ldap.combine_filters((filters, trust_filter), rules=ldap.MATCH_ALL)
return (filter, base_dn, ldap.SCOPE_SUBTREE) return (filter, base_dn, ldap.SCOPE_SUBTREE)

View File

@ -294,7 +294,7 @@ class update_sids(Updater):
attrs_list=["cn"], attrs_list=["cn"],
# more types of trusts can be stored under cn=trusts, we need # more types of trusts can be stored under cn=trusts, we need
# the type with ipaNTTrustPartner attribute # the type with ipaNTTrustPartner attribute
filter="(!(%s=*))" % attr_name filter="(&(ipaNTTrustPartner=*)(!(%s=*)))" % attr_name
) )
except errors.NotFound: except errors.NotFound:
pass pass