|
|
aa60fb |
From 6f958201dc32a1043c77632fe98c05307a4ea671 Mon Sep 17 00:00:00 2001
|
|
|
aa60fb |
From: Martin Basti <mbasti@redhat.com>
|
|
|
aa60fb |
Date: Mon, 22 Feb 2016 17:36:01 +0100
|
|
|
aa60fb |
Subject: [PATCH] trusts: use ipaNTTrustPartner attribute to detect trust
|
|
|
aa60fb |
entries
|
|
|
aa60fb |
|
|
|
aa60fb |
Trust entries were found by presence of ipaNTSecurityIdentifier
|
|
|
aa60fb |
attribute. Unfortunately this attribute might not be there due the bug.
|
|
|
aa60fb |
As replacement for this, attribute ipaNTTrustPartner can be used.
|
|
|
aa60fb |
|
|
|
aa60fb |
Note: other non trust entries located in cn=trusts subtree can be
|
|
|
aa60fb |
cross-realm principals.
|
|
|
aa60fb |
|
|
|
aa60fb |
https://fedorahosted.org/freeipa/ticket/5665
|
|
|
aa60fb |
|
|
|
aa60fb |
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
|
|
|
aa60fb |
Reviewed-By: Tomas Babej <tbabej@redhat.com>
|
|
|
aa60fb |
---
|
|
|
aa60fb |
ipalib/plugins/trust.py | 7 +++++--
|
|
|
aa60fb |
ipaserver/install/plugins/adtrust.py | 2 +-
|
|
|
aa60fb |
2 files changed, 6 insertions(+), 3 deletions(-)
|
|
|
aa60fb |
|
|
|
aa60fb |
diff --git a/ipalib/plugins/trust.py b/ipalib/plugins/trust.py
|
|
|
aa60fb |
index 173463ae7d4134b5bd155cc5fa920bfabd0a6958..ff142591d385e715994f0381c6b23c416763cd03 100644
|
|
|
aa60fb |
--- a/ipalib/plugins/trust.py
|
|
|
aa60fb |
+++ b/ipalib/plugins/trust.py
|
|
|
aa60fb |
@@ -541,7 +541,10 @@ class trust(LDAPObject):
|
|
|
aa60fb |
ldap = self.backend
|
|
|
aa60fb |
filter = ldap.make_filter({'objectclass': ['ipaNTTrustedDomain'], 'cn': [keys[-1]] },
|
|
|
aa60fb |
rules=ldap.MATCH_ALL)
|
|
|
aa60fb |
- filter = ldap.combine_filters((filter, "ipaNTSecurityIdentifier=*"), rules=ldap.MATCH_ALL)
|
|
|
aa60fb |
+ # more type of objects can be located in subtree (for example
|
|
|
aa60fb |
+ # cross-realm principals). we need this attr do detect trust
|
|
|
aa60fb |
+ # entries
|
|
|
aa60fb |
+ filter = ldap.combine_filters((filter, "ipaNTTrustPartner=*"), rules=ldap.MATCH_ALL)
|
|
|
aa60fb |
result = ldap.get_entries(DN(self.container_dn, self.env.basedn),
|
|
|
aa60fb |
ldap.SCOPE_SUBTREE, filter, [''])
|
|
|
aa60fb |
if len(result) > 1:
|
|
|
aa60fb |
@@ -996,7 +999,7 @@ class trust_find(LDAPSearch):
|
|
|
aa60fb |
# search needs to be done on a sub-tree scope
|
|
|
aa60fb |
def pre_callback(self, ldap, filters, attrs_list, base_dn, scope, *args, **options):
|
|
|
aa60fb |
# list only trust, not trust domains
|
|
|
aa60fb |
- trust_filter = '(ipaNTSecurityIdentifier=*)'
|
|
|
aa60fb |
+ trust_filter = '(ipaNTTrustPartner=*)'
|
|
|
aa60fb |
filter = ldap.combine_filters((filters, trust_filter), rules=ldap.MATCH_ALL)
|
|
|
aa60fb |
return (filter, base_dn, ldap.SCOPE_SUBTREE)
|
|
|
aa60fb |
|
|
|
aa60fb |
diff --git a/ipaserver/install/plugins/adtrust.py b/ipaserver/install/plugins/adtrust.py
|
|
|
aa60fb |
index 4990a34f8972a0ffba098642c1ead09f976852e6..ea6de5cefe1dc56fc55cca076643867ecbeb08fe 100644
|
|
|
aa60fb |
--- a/ipaserver/install/plugins/adtrust.py
|
|
|
aa60fb |
+++ b/ipaserver/install/plugins/adtrust.py
|
|
|
aa60fb |
@@ -315,7 +315,7 @@ class update_sids(Updater):
|
|
|
aa60fb |
attrs_list=["cn"],
|
|
|
aa60fb |
# more types of trusts can be stored under cn=trusts, we need
|
|
|
aa60fb |
# the type with ipaNTTrustPartner attribute
|
|
|
aa60fb |
- filter="(!(%s=*))" % attr_name
|
|
|
aa60fb |
+ filter="(&(ipaNTTrustPartner=*)(!(%s=*)))" % attr_name
|
|
|
aa60fb |
)
|
|
|
aa60fb |
except errors.NotFound:
|
|
|
aa60fb |
pass
|
|
|
aa60fb |
--
|
|
|
aa60fb |
2.5.0
|
|
|
aa60fb |
|