LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: "David P. Quigley" <dpquigl@tycho.nsa.gov> To: hch@infradead.org, viro@ftp.linux.org.uk, trond.myklebust@fys.uio.no, bfields@fieldses.org Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, "David P. Quigley" <dpquigl@tycho.nsa.gov> Subject: [PATCH 07/11] NFS/SELinux: Add security_label text mount option to nfs and add handling code to the security server. Date: Wed, 27 Feb 2008 15:39:42 -0500 [thread overview] Message-ID: <1204144786-3502-8-git-send-email-dpquigl@tycho.nsa.gov> (raw) In-Reply-To: <1204144786-3502-1-git-send-email-dpquigl@tycho.nsa.gov> The new method for pulling argument for NFS from mount is through a text parsing system. This patch adds two new entries to the argument parsing code "securlty_label" and "nosecurity_label". Even though we use text across the user/kernel boundary internally we still pack a binary structure for mount info to be passed around. We add a flag for use in the nfs{4,}_mount_data struct to indicate that are using security labels. Finally we add the SELinux support to mark the labeling method as native. Signed-off-by: David P. Quigley <dpquigl@tycho.nsa.gov> --- fs/nfs/super.c | 10 +++++++++- fs/nfsd/export.c | 3 +++ include/linux/nfs4_mount.h | 3 ++- include/linux/nfs_mount.h | 3 ++- security/selinux/hooks.c | 13 ++++++++++++- 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/fs/nfs/super.c b/fs/nfs/super.c index 1fb3818..f3e327e 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c @@ -75,6 +75,7 @@ enum { Opt_acl, Opt_noacl, Opt_rdirplus, Opt_nordirplus, Opt_sharecache, Opt_nosharecache, + Opt_seclabel, Opt_noseclabel, /* Mount options that take integer arguments */ Opt_port, @@ -124,6 +125,8 @@ static match_table_t nfs_mount_option_tokens = { { Opt_nordirplus, "nordirplus" }, { Opt_sharecache, "sharecache" }, { Opt_nosharecache, "nosharecache" }, + { Opt_seclabel, "security_label" }, + { Opt_noseclabel, "nosecurity_label" }, { Opt_port, "port=%u" }, { Opt_rsize, "rsize=%u" }, @@ -779,7 +782,12 @@ static int nfs_parse_mount_options(char *raw, case Opt_nosharecache: mnt->flags |= NFS_MOUNT_UNSHARED; break; - + case Opt_seclabel: + mnt->flags |= NFS_MOUNT_SECURITY_LABEL; + break; + case Opt_noseclabel: + mnt->flags &= ~NFS_MOUNT_SECURITY_LABEL; + break; case Opt_port: if (match_int(args, &option)) return 0; diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c index 8a6f7c9..d32ae56 100644 --- a/fs/nfsd/export.c +++ b/fs/nfsd/export.c @@ -1435,6 +1435,9 @@ static struct flags { { NFSEXP_ALLSQUASH, {"all_squash", ""}}, { NFSEXP_ASYNC, {"async", "sync"}}, { NFSEXP_GATHERED_WRITES, {"wdelay", "no_wdelay"}}, +#ifdef CONFIG_NFSD_V4_SECURITY_LABEL + { NFSEXP_SECURITY_LABEL, {"security_label", ""}}, +#endif { NFSEXP_NOHIDE, {"nohide", ""}}, { NFSEXP_CROSSMOUNT, {"crossmnt", ""}}, { NFSEXP_NOSUBTREECHECK, {"no_subtree_check", ""}}, diff --git a/include/linux/nfs4_mount.h b/include/linux/nfs4_mount.h index a0dcf66..d7abc3b 100644 --- a/include/linux/nfs4_mount.h +++ b/include/linux/nfs4_mount.h @@ -66,6 +66,7 @@ struct nfs4_mount_data { #define NFS4_MOUNT_NOAC 0x0020 /* 1 */ #define NFS4_MOUNT_STRICTLOCK 0x1000 /* 1 */ #define NFS4_MOUNT_UNSHARED 0x8000 /* 1 */ -#define NFS4_MOUNT_FLAGMASK 0x9033 +#define NFS4_MOUNT_SECURITY_LABEL 0x10000 /* Text Only */ +#define NFS4_MOUNT_FLAGMASK 0x19033 #endif diff --git a/include/linux/nfs_mount.h b/include/linux/nfs_mount.h index df7c6b7..1ca5260 100644 --- a/include/linux/nfs_mount.h +++ b/include/linux/nfs_mount.h @@ -63,6 +63,7 @@ struct nfs_mount_data { #define NFS_MOUNT_SECFLAVOUR 0x2000 /* 5 */ #define NFS_MOUNT_NORDIRPLUS 0x4000 /* 5 */ #define NFS_MOUNT_UNSHARED 0x8000 /* 5 */ -#define NFS_MOUNT_FLAGMASK 0xFFFF +#define NFS_MOUNT_SECURITY_LABEL 0x10000 /* reserved for NFSv4 */ +#define NFS_MOUNT_FLAGMASK 0x1FFFF #endif diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index ebe4e18..e3ed7c3 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -68,6 +68,7 @@ #include <net/af_unix.h> /* for Unix socket types */ #include <linux/parser.h> #include <linux/nfs_mount.h> +#include <linux/nfs4_mount.h> #include <net/ipv6.h> #include <linux/hugetlb.h> #include <linux/personality.h> @@ -807,6 +808,7 @@ static int superblock_doinit(struct super_block *sb, void *data) /* selinux only know about a fixed number of mount options */ char *mnt_opts[NUM_SEL_MNT_OPTS]; int mnt_opts_flags[NUM_SEL_MNT_OPTS], num_mnt_opts = 0; + struct superblock_security_struct *sbsec = sb->s_security; if (!data) goto out; @@ -829,6 +831,15 @@ static int superblock_doinit(struct super_block *sb, void *data) } } goto build_flags; + } else if (!strcmp(name, "nfs4")) { + struct nfs4_mount_data *d = data; + + if (d->version != NFS4_MOUNT_VERSION) + goto out; + + if (d->flags & NFS4_MOUNT_SECURITY_LABEL) + sbsec->behavior = SECURITY_FS_USE_NATIVE; + goto build_flags; } else goto out; } @@ -898,7 +909,7 @@ static int superblock_doinit(struct super_block *sb, void *data) default: rc = -EINVAL; - printk(KERN_WARNING "SELinux: unknown mount option\n"); + printk(KERN_WARNING "SELinux: unknown mount option \"%s\"\n", p); goto out_err; } -- 1.5.3.8
next prev parent reply other threads:[~2008-02-27 23:21 UTC|newest] Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top 2008-02-27 20:39 RFC Labeled NFS Initial Code Review David P. Quigley 2008-02-27 20:39 ` [PATCH 01/11] Security: Add hook to get full maclabel xattr name David P. Quigley 2008-02-27 20:39 ` [PATCH 02/11] Security: Add hook to calculate context based on a negative dentry David P. Quigley 2008-02-27 20:39 ` [PATCH 03/11] VFS: Add security label support to *notify David P. Quigley 2008-02-28 20:10 ` Josef 'Jeff' Sipek 2008-02-28 20:39 ` Dave Quigley 2008-02-28 21:15 ` Josef 'Jeff' Sipek 2008-02-28 21:05 ` Dave Quigley 2008-02-28 21:39 ` Josef 'Jeff' Sipek 2008-02-28 21:26 ` Dave Quigley 2008-02-29 6:57 ` Andrew Morton 2008-02-27 20:39 ` [PATCH 04/11] KConfig: Add KConfig entries for SELinux labeled NFS David P. Quigley 2008-02-27 20:39 ` [PATCH 05/11] NFSv4: Add label recommended attribute and NFSv4 flags David P. Quigley 2008-02-27 20:39 ` [PATCH 06/11] SELinux: Add new labeling type native labels David P. Quigley 2008-02-27 20:39 ` David P. Quigley [this message] 2008-02-27 20:39 ` [PATCH 08/11] NFS: Introduce lifecycle management for label attribute David P. Quigley 2008-02-28 1:04 ` James Morris 2008-02-28 0:47 ` Dave Quigley 2008-02-28 1:22 ` James Morris 2008-02-28 20:07 ` Dave Quigley 2008-02-28 23:00 ` James Morris 2008-02-28 22:43 ` Dave Quigley 2008-02-27 20:39 ` [PATCH 09/11] NFS: Client implementation of Labeled-NFS David P. Quigley 2008-02-27 20:39 ` [PATCH 10/11] NFS: Extend nfs xattr handlers to accept the security namespace David P. Quigley 2008-02-27 20:39 ` [PATCH 11/11] NFSD: Server implementation of MAC Labeling David P. Quigley 2008-02-27 22:11 RFC Labeled NFS Initial Code Review David P. Quigley 2008-02-27 22:11 ` [PATCH 07/11] NFS/SELinux: Add security_label text mount option to nfs and add handling code to the security server David P. Quigley 2008-02-28 14:22 ` Eric Paris
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1204144786-3502-8-git-send-email-dpquigl@tycho.nsa.gov \ --to=dpquigl@tycho.nsa.gov \ --cc=bfields@fieldses.org \ --cc=hch@infradead.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=trond.myklebust@fys.uio.no \ --cc=viro@ftp.linux.org.uk \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).