s4:provision: set the correct nTSecurityDescriptor on CN=Infrastructure,... (bug...
authorStefan Metzmacher <metze@samba.org>
Mon, 10 Dec 2012 10:32:07 +0000 (11:32 +0100)
committerMichael Adam <obnox@samba.org>
Tue, 11 Dec 2012 04:02:03 +0000 (05:02 +0100)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
source4/scripting/python/samba/provision/__init__.py
source4/scripting/python/samba/provision/descriptor.py
source4/setup/provision.ldif

index 5e80d63d4a963967a25d789ce8d6d3b67422a1c4..74288c1347d52eb8dd9afc338bfe5db755291a97 100644 (file)
@@ -81,7 +81,8 @@ from samba.provision.descriptor import (
     get_config_descriptor,
     get_config_partitions_descriptor,
     get_config_sites_descriptor,
-    get_domain_descriptor
+    get_domain_descriptor,
+    get_domain_infrastructure_descriptor,
     )
 from samba.provision.common import (
     setup_path,
@@ -1296,6 +1297,7 @@ def fill_samdb(samdb, lp, names, logger, domainsid, domainguid, policyguid,
             setup_path("provision_computers_modify.ldif"), {
                 "DOMAINDN": names.domaindn})
         logger.info("Setting up sam.ldb data")
+        infrastructure_desc = b64encode(get_domain_infrastructure_descriptor(domainsid))
         setup_add_ldif(samdb, setup_path("provision.ldif"), {
             "CREATTIME": str(samba.unix2nttime(int(time.time()))),
             "DOMAINDN": names.domaindn,
@@ -1304,7 +1306,8 @@ def fill_samdb(samdb, lp, names, logger, domainsid, domainguid, policyguid,
             "CONFIGDN": names.configdn,
             "SERVERDN": names.serverdn,
             "RIDAVAILABLESTART": str(next_rid + 600),
-            "POLICYGUID_DC": policyguid_dc
+            "POLICYGUID_DC": policyguid_dc,
+            "INFRASTRUCTURE_DESCRIPTOR": infrastructure_desc,
             })
 
         # If we are setting up a subdomain, then this has been replicated in, so we don't need to add it
index 2deb5500734238009fbbca2cf8b54ccf1b718b53..db38e19a3e710e922fd6dee96c74d0a56c460064 100644 (file)
@@ -143,6 +143,15 @@ def get_domain_descriptor(domain_sid):
     sec = security.descriptor.from_sddl(sddl, domain_sid)
     return ndr_pack(sec)
 
+def get_domain_infrastructure_descriptor(domain_sid):
+    sddl = "D:" \
+    "(A;;RPLCLORC;;;AU)" \
+    "(A;;RPWPCRCCLCLORCWOWDSW;;;DA)" \
+    "(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)" \
+    "S:" \
+    "(AU;SA;WPCR;;;WD)"
+    sec = security.descriptor.from_sddl(sddl, domain_sid)
+    return ndr_pack(sec)
 
 def get_dns_partition_descriptor(domainsid):
     sddl = "O:SYG:BAD:AI" \
index 2db01f9bb944bb589c8ba1fb5bbdfb6bf806fa6a..0dcb7d41cd370332aae5c99a7357000803089571 100644 (file)
@@ -63,6 +63,7 @@ objectClass: top
 objectClass: infrastructureUpdate
 systemFlags: -1946157056
 isCriticalSystemObject: TRUE
+nTSecurityDescriptor:: ${INFRASTRUCTURE_DESCRIPTOR}
 
 dn: CN=LostAndFound,${DOMAINDN}
 objectClass: top