diff options
-rw-r--r-- | source3/smbd/pysmbd.c | 15 | ||||
-rw-r--r-- | source4/scripting/python/samba/provision/__init__.py | 8 |
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() |