[PATCH] allow disabling ACL
David Heidelberger
david.heidelberger at ixit.cz
Thu Mar 13 14:31:46 PDT 2014
Hello this patch is based on
http://www.marshut.com/ikyvtw/udisks-updated-to-v2-1-1.html
Patch should allow to disable ACL. On some systems is ACL disabled
directly in kernel, so there is no need for userspace support.
Thank you
From f62132680aa92f498394db2d640779fa6578cb3d Mon Sep 17 00:00:00 2001
From: David Heidelberger <david.heidelberger at ixit.cz>
Date: Thu, 13 Mar 2014 21:28:42 +0100
Subject: [PATCH] allow disabling ACL
---
configure.ac | 38 ++++++++++++++++++++++++++------------
src/udiskslinuxfilesystem.c | 8 ++++++--
2 files changed, 32 insertions(+), 14 deletions(-)
diff --git a/configure.ac b/configure.ac
index 3a39b5a..e656abf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -174,18 +174,31 @@ if test "x$with_systemdsystemunitdir" != "xno";
then
fi
AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$systemdsystemunitdir"])
-# libacl
-AC_CHECK_HEADERS(
- [sys/acl.h acl/libacl.h],
- [ACL_CFLAGS=""],
- AC_MSG_ERROR([*** ACL headers not found.]))
-AC_CHECK_LIB(
- [acl],
- [acl_get_file],
- [ACL_LIBS="-lacl"],
- AC_MSG_ERROR([*** libacl not found.]))
-AC_SUBST(ACL_CFLAGS)
-AC_SUBST(ACL_LIBS)
+have_acl=no
+AC_ARG_ENABLE(acl, AS_HELP_STRING([--disable-acl], [disable acl
support]))
+if test "x$enable_acl" != "xno"; then
+ AC_CHECK_HEADERS(
+ [sys/acl.h acl/libacl.h],
+ [
+ AC_CHECK_LIB(
+ [acl],
+ [acl_get_file],
+ [AC_DEFINE(HAVE_ACL, 1, [Define if libacl is
available]) have_acl=yes],
+ have_acl=no)
+ ],
+ have_acl=no)
+ if test "x$have_acl" = "xyes"; then
+ ACL_CFLAGS=""
+ ACL_LIBS="-lacl"
+ fi
+ AC_SUBST(ACL_CFLAGS)
+ AC_SUBST(ACL_LIBS)
+ if test "x$have_acl" = xno -a "x$enable_acl" = xyes; then
+ AC_MSG_ERROR([acl support requested but libraries not found])
+ fi
+fi
+AM_CONDITIONAL(HAVE_ACL, [test "$have_acl" = "yes"])
+
# Internationalization
#
@@ -232,6 +245,7 @@ echo "
udevdir: ${udevdir}
systemdsystemunitdir: ${systemdsystemunitdir}
using libsystemd-login: ${have_libsystemd_login}
+ acl support: ${have_acl}
compiler: ${CC}
cflags: ${CFLAGS}
diff --git a/src/udiskslinuxfilesystem.c b/src/udiskslinuxfilesystem.c
index f243046..8a59919 100644
--- a/src/udiskslinuxfilesystem.c
+++ b/src/udiskslinuxfilesystem.c
@@ -29,7 +29,9 @@
#include <stdio.h>
#include <mntent.h>
#include <sys/types.h>
+#ifdef HAVE_ACL
#include <sys/acl.h>
+#endif
#include <errno.h>
#include <glib/gstdio.h>
@@ -795,7 +797,7 @@ ensure_utf8 (const gchar *s)
}
/*
----------------------------------------------------------------------------------------------------
*/
-
+#ifdef HAVE_ACL
static gboolean
add_acl (const gchar *path,
uid_t uid,
@@ -831,7 +833,7 @@ add_acl (const gchar *path,
acl_free (acl);
return ret;
}
-
+#endif
/*
* calculate_mount_point: <internal>
* @dameon: A #UDisksDaemon.
@@ -920,6 +922,7 @@ calculate_mount_point (UDisksDaemon
*daemon,
mount_dir);
goto out;
}
+#ifdef HAVE_ACL
/* Finally, add the read+execute ACL for $USER */
if (!add_acl (mount_dir, uid, error))
{
@@ -927,6 +930,7 @@ calculate_mount_point (UDisksDaemon
*daemon,
udisks_warning ("Error calling rmdir() on %s: %m",
mount_dir);
goto out;
}
+#endif
}
}
/* otherwise fall back to mounting in /media */
--
1.9.0
More information about the devkit-devel
mailing list