aboutsummaryrefslogtreecommitdiff
path: root/net/samba422/files/patch-python_samba_provision_____init____.py
diff options
context:
space:
mode:
Diffstat (limited to 'net/samba422/files/patch-python_samba_provision_____init____.py')
-rw-r--r--net/samba422/files/patch-python_samba_provision_____init____.py71
1 files changed, 71 insertions, 0 deletions
diff --git a/net/samba422/files/patch-python_samba_provision_____init____.py b/net/samba422/files/patch-python_samba_provision_____init____.py
new file mode 100644
index 000000000000..c5aa0c96f265
--- /dev/null
+++ b/net/samba422/files/patch-python_samba_provision_____init____.py
@@ -0,0 +1,71 @@
+--- python/samba/provision/__init__.py.orig 2025-02-06 10:31:54 UTC
++++ python/samba/provision/__init__.py
+@@ -1671,19 +1671,25 @@ def setsysvolacl(samdb, sysvol, uid, gid, domainsid, d
+ s3conf = s3param.get_context()
+ s3conf.load(lp.configfile)
+
+- file = tempfile.NamedTemporaryFile(dir=os.path.abspath(sysvol))
++ sysvol_dir = os.path.abspath(sysvol)
++
++ set_simple_acl = smbd.set_simple_acl
++ if smbd.has_nfsv4_acls(sysvol_dir):
++ set_simple_acl = smbd.set_simple_nfsv4_acl
++
++ file = tempfile.NamedTemporaryFile(dir=sysvol_dir)
+ try:
+ try:
+- smbd.set_simple_acl(file.name, 0o755, system_session_unix(), gid)
++ set_simple_acl(file.name, 0o755, system_session_unix(), gid)
+ except OSError:
+- if not smbd.have_posix_acls():
++ if not smbd.have_posix_acls() and not smbd.have_nfsv4_acls():
+ # This clue is only strictly correct for RPM and
+ # Debian-like Linux systems, but hopefully other users
+ # will get enough clue from it.
+- raise ProvisioningError("Samba was compiled without the posix ACL support that s3fs requires. "
++ raise ProvisioningError("Samba was compiled without the ACL support that s3fs requires. "
+ "Try installing libacl1-dev or libacl-devel, then re-run configure and make.")
+
+- raise ProvisioningError("Your filesystem or build does not support posix ACLs, which s3fs requires. "
++ raise ProvisioningError("Your filesystem or build does not support ACLs, which s3fs requires. "
+ "Try the mounting the filesystem with the 'acl' option.")
+ try:
+ smbd.chown(file.name, uid, gid, system_session_unix())
+@@ -1906,7 +1912,7 @@ def interface_ips_v6(lp):
+ return ret
+
+
+-def provision_fill(samdb, secrets_ldb, logger, names, paths,
++def provision_fill(samdb, secrets_ldb, logger, names, paths, targetdir,
+ schema=None,
+ samdb_fill=FILL_FULL,
+ hostip=None, hostip6=None,
+@@ -1965,6 +1971,9 @@ def provision_fill(samdb, secrets_ldb, logger, names,
+ samdb.transaction_commit()
+
+ if serverrole == "active directory domain controller":
++ if targetdir and smbd.have_nfsv4_acls() and smbd.has_nfsv4_acls(targetdir):
++ smbd.set_nfsv4_defaults()
++
+ # Continue setting up sysvol for GPO. This appears to require being
+ # outside a transaction.
+ if not skip_sysvolacl:
+@@ -2341,6 +2350,9 @@ def provision(logger, session_info, smbconf=None,
+ if not os.path.isdir(paths.netlogon):
+ os.makedirs(paths.netlogon, 0o755)
+
++ if smbd.have_nfsv4_acls() and smbd.has_nfsv4_acls(paths.sysvol):
++ smbd.set_nfsv4_defaults()
++
+ if adminpass is None:
+ adminpass = samba.generate_random_password(12, 32)
+ adminpass_generated = True
+@@ -2350,7 +2362,7 @@ def provision(logger, session_info, smbconf=None,
+ adminpass_generated = False
+
+ if samdb_fill == FILL_FULL:
+- provision_fill(samdb, secrets_ldb, logger, names, paths,
++ provision_fill(samdb, secrets_ldb, logger, names, paths, targetdir,
+ schema=schema, samdb_fill=samdb_fill,
+ hostip=hostip, hostip6=hostip6,
+ next_rid=next_rid, dc_rid=dc_rid, adminpass=adminpass,