Re: [PATCH] selinux: consider filesystem subtype in policies

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 04/16/2013 02:29 PM, Anand Avati wrote:
Not considering filesystem has the following limitation. Support
for SELinux in FUSE is dependent on the particular userspace
filesystem, which is identified by the subtype. For e.g, GlusterFS,
a FUSE based filesystem supports SELinux (by mounting and processing
FUSE requests in different threads, avoiding the mount time
deadlock), whereas other FUSE based filesystems (identified by a
different subtype) have the mount time deadlock.

By considering the subtype of the filesytem in the SELinux policies,
allows us to specify a filesystem subtype, in the following way:

fs_use_xattr fuse.glusterfs gen_context(system_u:object_r:fs_t,s0);

This way not all FUSE filesystems are put in the same bucket and
subjected to the limitations of the other subtypes.

Signed-off-by: Anand Avati <avati@xxxxxxxxxx>
---
  security/selinux/hooks.c            | 46 ++++++++++++++++++++-----------------
  security/selinux/include/security.h |  2 +-
  security/selinux/ss/services.c      |  7 +++++-
  3 files changed, 32 insertions(+), 23 deletions(-)


diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
index b4feecc..3c6cbba 100644
--- a/security/selinux/ss/services.c
+++ b/security/selinux/ss/services.c
@@ -2329,17 +2329,22 @@ out:
   */
  int security_fs_use(
  	const char *fstype,
+	const char *subtype,
  	unsigned int *behavior,
  	u32 *sid)
  {
  	int rc = 0;
  	struct ocontext *c;
+	char type[32];

Why is 32 bytes enough?

  	read_lock(&policy_rwlock);

  	c = policydb.ocontexts[OCON_FSUSE];
+	snprintf(type, 32, "%s%s%s", fstype,

s/32/sizeof type/
Check for truncation?

+		 (subtype ? "." : ""), (subtype ? subtype : ""));
+	type[31] = 0;
  	while (c) {
-		if (strcmp(fstype, c->u.name) == 0)
+		if (strcmp(type, c->u.name) == 0)
  			break;
  		c = c->next;
  	}

If you do not find a match on the fstype.subtype string, shouldn't you retry with just the fstype string? Just in case there was in fact a fs_use rule for the fstype?



--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
the words "unsubscribe selinux" without quotes as the message.




[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux