linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH] selinux: add a fallback to defcontext for native labeling
@ 2018-09-19 16:52 Taras Kondratiuk
  2018-09-19 18:47 ` Paul Moore
  2018-09-19 19:00 ` Stephen Smalley
  0 siblings, 2 replies; 18+ messages in thread
From: Taras Kondratiuk @ 2018-09-19 16:52 UTC (permalink / raw)
  To: Paul Moore, Stephen Smalley, Eric Paris
  Cc: selinux, linux-kernel, xe-linux-external

When files on NFSv4 server are not properly labeled (label doesn't match
a policy on a client) they will end up with unlabeled_t type which is
too generic. We would like to be able to set a default context per
mount. 'defcontext' mount option looks like a nice solution, but it
doesn't seem to be fully implemented for native labeling. Default
context is stored, but is never used.

The patch adds a fallback to a default context if a received context is
invalid. If the inode context is already initialized, then it is left
untouched to preserve a context set locally on a client.

Signed-off-by: Taras Kondratiuk <takondra@cisco.com>
---
 security/selinux/hooks.c | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index ad9a9b8e9979..f7debe798bf5 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -6598,7 +6598,30 @@ static void selinux_inode_invalidate_secctx(struct inode *inode)
  */
 static int selinux_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen)
 {
-	return selinux_inode_setsecurity(inode, XATTR_SELINUX_SUFFIX, ctx, ctxlen, 0);
+	struct superblock_security_struct *sbsec;
+	struct inode_security_struct *isec;
+	int rc;
+
+	rc = selinux_inode_setsecurity(inode, XATTR_SELINUX_SUFFIX, ctx, ctxlen, 0);
+
+	/*
+	 * In case of Native labeling with defcontext mount option fall back
+	 * to a default SID if received context is invalid.
+	 */
+	if (rc == -EINVAL) {
+		sbsec = inode->i_sb->s_security;
+		if (sbsec->behavior == SECURITY_FS_USE_NATIVE &&
+		    sbsec->flags & DEFCONTEXT_MNT) {
+			isec = inode->i_security;
+			if (!isec->initialized) {
+				isec->sclass = inode_mode_to_security_class(inode->i_mode);
+				isec->sid = sbsec->def_sid;
+				isec->initialized = 1;
+			}
+			rc = 0;
+		}
+	}
+	return rc;
 }
 
 /*
-- 
2.10.3.dirty


^ permalink raw reply related	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2018-10-03  0:59 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-19 16:52 [RFC PATCH] selinux: add a fallback to defcontext for native labeling Taras Kondratiuk
2018-09-19 18:47 ` Paul Moore
2018-09-19 19:00 ` Stephen Smalley
2018-09-20  2:41   ` Taras Kondratiuk
2018-09-20 14:49     ` Stephen Smalley
2018-09-20 22:59       ` Taras Kondratiuk
2018-09-21 14:40         ` Stephen Smalley
2018-09-24 21:17           ` Taras Kondratiuk
2018-09-25  3:46           ` Paul Moore
2018-09-25  5:45             ` Taras Kondratiuk
2018-09-25 14:00               ` Stephen Smalley
2018-09-25 16:03                 ` Paul Moore
2018-09-25 16:39                   ` Stephen Smalley
2018-09-25 19:10                     ` Taras Kondratiuk
2018-10-02 18:48                       ` Taras Kondratiuk
2018-10-02 19:41                         ` Stephen Smalley
2018-10-03  0:58                           ` Taras Kondratiuk
2018-09-25 15:41               ` Paul Moore

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).