s4-provision: Test for posix ACLs in the actual sysvol path
authorAndrew Bartlett <abartlet@samba.org>
Mon, 4 Jun 2012 23:58:41 +0000 (09:58 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 5 Jun 2012 02:27:36 +0000 (04:27 +0200)
This avoids issues in the previous location where lp may not be initialised at this point
and instead simply waits until we have a known sysvol path, and test for ACL support
there.

Andrew Bartlett

source4/scripting/python/samba/provision/__init__.py

index a84bb5b7eae88f8ec86fb46c78c16817345473b8..5f64d773e3d51add2d30d78870f557abc2ae2712 100644 (file)
@@ -1661,18 +1661,6 @@ def provision(logger, session_info, credentials, smbconf=None,
         server_services.append("+s3fs")
         global_param["dcerpc endpoint servers"] = ["-winreg", "-srvsvc"]
 
-        if targetdir is not None:
-            file = tempfile.NamedTemporaryFile(dir=os.path.abspath(targetdir))
-        else:
-            file = tempfile.NamedTemporaryFile(dir=os.path.abspath(os.path.dirname(lp.get("private dir"))))
-        try:
-            try:
-                smbd.set_simple_acl(file.name, root_uid, wheel_gid)
-            except Exception:
-                raise ProvisioningError("Your filesystem or build does not support posix ACLs, s3fs is unworkable in this mode")
-        finally:
-            file.close()
-
     if len(server_services) > 0:
         global_param["server services"] = server_services
 
@@ -1744,6 +1732,22 @@ def provision(logger, session_info, credentials, smbconf=None,
     if not os.path.exists(paths.state_dir):
         os.mkdir(paths.state_dir)
 
+    if paths.sysvol and not os.path.exists(paths.sysvol):
+        os.makedirs(paths.sysvol, 0775)
+
+    if not use_ntvfs and serverrole == "domain controller":
+        if paths.sysvol is None:
+            raise MissingShareError("sysvol", paths.smbconf)
+
+        file = tempfile.NamedTemporaryFile(dir=os.path.abspath(paths.sysvol))
+        try:
+            try:
+                smbd.set_simple_acl(file.name, root_uid, wheel_gid)
+            except Exception:
+                raise ProvisioningError("Your filesystem or build does not support posix ACLs, s3fs is unworkable in this mode")
+        finally:
+            file.close()
+
     ldapi_url = "ldapi://%s" % urllib.quote(paths.s4_ldapi_path, safe="")
 
     schema = Schema(domainsid, invocationid=invocationid,