summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/smbd/pysmbd.c15
-rw-r--r--source4/scripting/python/samba/provision/__init__.py8
2 files changed, 22 insertions, 1 deletions
diff --git a/source3/smbd/pysmbd.c b/source3/smbd/pysmbd.c
index 76167e1477..5badb3a744 100644
--- a/source3/smbd/pysmbd.c
+++ b/source3/smbd/pysmbd.c
@@ -183,7 +183,22 @@ static PyObject *py_smbd_set_simple_acl(PyObject *self, PyObject *args)
Py_RETURN_NONE;
}
+/*
+ check if we have ACL support
+ */
+static PyObject *py_smbd_have_posix_acls(PyObject *self, PyObject *args)
+{
+#ifdef HAVE_POSIX_ACLS
+ return PyBool_FromLong(true);
+#else
+ return PyBool_FromLong(false);
+#endif
+}
+
static PyMethodDef py_smbd_methods[] = {
+ { "have_posix_acls",
+ (PyCFunction)py_smbd_have_posix_acls, METH_VARARGS,
+ NULL },
{ "set_simple_acl",
(PyCFunction)py_smbd_set_simple_acl, METH_VARARGS,
NULL },
diff --git a/source4/scripting/python/samba/provision/__init__.py b/source4/scripting/python/samba/provision/__init__.py
index c95db4e639..d9d1ce9eab 100644
--- a/source4/scripting/python/samba/provision/__init__.py
+++ b/source4/scripting/python/samba/provision/__init__.py
@@ -1738,12 +1738,18 @@ def provision(logger, session_info, credentials, smbconf=None,
if paths.sysvol is None:
raise MissingShareError("sysvol", paths.smbconf)
+ if not smbd.have_posix_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. Try installing libacl1-dev or libacl-devel, then re-run configure and make.")
+
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")
+ raise ProvisioningError("Your filesystem or build does not support posix ACLs, which s3fs requires. Try the mounting the filesystem with the 'acl' option.")
finally:
file.close()