summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarming Sam <garming@catalyst.net.nz>2017-08-24 13:59:22 +1200
committerGarming Sam <garming@samba.org>2017-12-20 23:13:11 +0100
commit3cddb6ad07e44a404480fece8973b702618c1c33 (patch)
tree5aee84e62267422d39a4ac9d7343b9149fea02e7
parent0efc061a62af0a315982ce21cab2f2fd32f43d1d (diff)
downloadsamba-3cddb6ad07e44a404480fece8973b702618c1c33.tar.gz
2008R2: Missing operation (75, 76) for ActiveDirectoryUpdate version 5 (FL)
Operation 75 {5e1574f6-55df-493e-a6-71-aa-ef-fc-a6-a1-00} - Create the CN=Managed Service Accounts object Operation 76 {d262aae8-41f7-48ed-9f-35-56-bb-b6-77-57-3d} - Add otherWellKnownObject link for CN=Managed Service Accounts Referenced in the page 'Windows Server 2008R2: Domain-Wide Updates': https://technet.microsoft.com/en-us/library/dd378973(v=ws.10).aspx Signed-off-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
-rw-r--r--python/samba/descriptor.py11
-rw-r--r--python/samba/provision/__init__.py8
-rw-r--r--selftest/knownfail.d/functionalprep1
-rw-r--r--source4/setup/provision.ldif8
-rw-r--r--source4/setup/provision_basedn_references.ldif8
5 files changed, 34 insertions, 2 deletions
diff --git a/python/samba/descriptor.py b/python/samba/descriptor.py
index 86ea869b0ed..cf797cc3e94 100644
--- a/python/samba/descriptor.py
+++ b/python/samba/descriptor.py
@@ -268,6 +268,17 @@ def get_domain_users_descriptor(domain_sid, name_map={}):
"S:"
return sddl2binary(sddl, domain_sid, name_map)
+def get_managed_service_accounts_descriptor(domain_sid, name_map={}):
+ sddl = "D:" \
+ "(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)" \
+ "(A;;RPWPCRCCDCLCLORCWOWDSW;;;DA)" \
+ "(OA;;CCDC;ce206244-5827-4a86-ba1c-1c0c386c1b64;;AO)" \
+ "(OA;;CCDC;bf967aba-0de6-11d0-a285-00aa003049e2;;AO)" \
+ "(OA;;CCDC;bf967a9c-0de6-11d0-a285-00aa003049e2;;AO)" \
+ "(A;;RPLCLORC;;;AU)" \
+ "S:"
+ return sddl2binary(sddl, domain_sid, name_map)
+
def get_domain_controllers_descriptor(domain_sid, name_map={}):
sddl = "D:" \
"(A;;RPLCLORC;;;AU)" \
diff --git a/python/samba/provision/__init__.py b/python/samba/provision/__init__.py
index cc654f32a88..2a926bbecf2 100644
--- a/python/samba/provision/__init__.py
+++ b/python/samba/provision/__init__.py
@@ -100,6 +100,7 @@ from samba.descriptor import (
get_dns_partition_descriptor,
get_dns_forest_microsoft_dns_descriptor,
get_dns_domain_microsoft_dns_descriptor,
+ get_managed_service_accounts_descriptor,
)
from samba.provision.common import (
setup_path,
@@ -1479,6 +1480,7 @@ def fill_samdb(samdb, lp, names, logger, policyguid,
# If we are setting up a subdomain, then this has been replicated in, so we don't need to add it
if fill == FILL_FULL:
+ managedservice_descr = b64encode(get_managed_service_accounts_descriptor(names.domainsid))
setup_modify_ldif(samdb,
setup_path("provision_configuration_references.ldif"), {
"CONFIGDN": names.configdn,
@@ -1493,8 +1495,10 @@ def fill_samdb(samdb, lp, names, logger, policyguid,
if fill == FILL_FULL or fill == FILL_SUBDOMAIN:
setup_modify_ldif(samdb,
- setup_path("provision_basedn_references.ldif"),
- {"DOMAINDN": names.domaindn})
+ setup_path("provision_basedn_references.ldif"), {
+ "DOMAINDN": names.domaindn,
+ "MANAGEDSERVICE_DESCRIPTOR": managedservice_descr
+ })
logger.info("Setting up sam.ldb users and groups")
setup_add_ldif(samdb, setup_path("provision_users.ldif"), {
diff --git a/selftest/knownfail.d/functionalprep b/selftest/knownfail.d/functionalprep
new file mode 100644
index 00000000000..6e376dd8c07
--- /dev/null
+++ b/selftest/knownfail.d/functionalprep
@@ -0,0 +1 @@
+^samba4.blackbox.upgradeprovision.release-4-0-0.ldapcmp_full_sd
diff --git a/source4/setup/provision.ldif b/source4/setup/provision.ldif
index 61d735cb2c9..c17710fb6a2 100644
--- a/source4/setup/provision.ldif
+++ b/source4/setup/provision.ldif
@@ -464,6 +464,14 @@ objectClass: top
objectClass: container
revision: 9
+dn: CN=5e1574f6-55df-493e-a671-aaeffca6a100,CN=Operations,CN=DomainUpdates,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
+dn: CN=d262aae8-41f7-48ed-9f35-56bbb677573d,CN=Operations,CN=DomainUpdates,CN=System,${DOMAINDN}
+objectClass: top
+objectClass: container
+
# End domain updates
dn: CN=File Replication Service,CN=System,${DOMAINDN}
diff --git a/source4/setup/provision_basedn_references.ldif b/source4/setup/provision_basedn_references.ldif
index 188982aee19..7eda88dd604 100644
--- a/source4/setup/provision_basedn_references.ldif
+++ b/source4/setup/provision_basedn_references.ldif
@@ -1,6 +1,13 @@
###############################
# Domain Naming Context
###############################
+dn: CN=Managed Service Accounts,${DOMAINDN}
+changetype: add
+objectClass: container
+description: Default container for managed service accounts
+showInAdvancedViewOnly: FALSE
+nTSecurityDescriptor:: ${MANAGEDSERVICE_DESCRIPTOR}
+
dn: ${DOMAINDN}
changetype: modify
-
@@ -19,4 +26,5 @@ wellKnownObjects: B:32:ab1d30f3768811d1aded00c04fd8d5cd:CN=System,${DOMAINDN}
wellKnownObjects: B:32:a361b2ffffd211d1aa4b00c04fd7d83a:OU=Domain Controllers,${DOMAINDN}
wellKnownObjects: B:32:aa312825768811d1aded00c04fd8d5cd:CN=Computers,${DOMAINDN}
wellKnownObjects: B:32:a9d1ca15768811d1aded00c04fd8d5cd:CN=Users,${DOMAINDN}
+otherWellKnownObjects: B:32:1EB93889E40C45DF9F0C64D23BBB6237:CN=Managed Service Accounts,${DOMAINDN}
-