RE: [rfc][patch] setfiles: validate all file_contexts files whenusing -c

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

 



On Fri, 2008-07-18 at 14:37 -0400, Joshua Brindle wrote:
> Stephen Smalley wrote:
> > In ancient days of yore, setfiles could only validate the
> > base file_contexts configuration because the .homedirs or
> > .local configurations might include local users that weren't
> > defined by the base policy since those definitions were
> > brought in at policy load time.
> > These days the policy.N file contains all of the definitions
> > required to validate all file_contexts files and thus
> > setfiles can and should validate them.
> > 
> 
> I don't think that was the motivation. We want to explicitely support a
> user overriding a context specified in the policy with semanage and I
> think giving this cryptic warning is going to confuse people. For all
> other semanage objects we allow overriding the main policy with no
> warning, why would this be different?

I actually went back through the mailing list archives, and the reason I
stated (inability to validate entries using localusers) was the the
motivation for baseonly validation in setfiles -c.

We've never supported users creating conflicting file contexts entries
with the base policy as far as I know.  We've always warned on this
condition.

I suppose we could alter that behavior but I'm not sure it will work as
expected at present; the logic in libselinux to move all exact specs to
the end could for example interfere with it.  Or if we did a full fcsort
of file_contexts.local as has been suggested elsewhere.  And one could
have dups within file_contexts.local itself, which we can't presently
distinguish from dups between base and .local with the current logic.

> > Before:
> > # /usr/sbin/semanage fcontext -a -t httpd_sys_content_t /tmp (no
> > warnings) After:
> > # /usr/sbin/semanage fcontext -a -t httpd_sys_content_t /tmp
> > /etc/selinux/targeted/contexts/files/file_contexts: Multiple
> > different specifications for /tmp
> > (system_u:object_r:httpd_sys_content_t:s0 and
> > system_u:object_r:tmp_t:s0).
> > 
> > If we want it to be a fatal error, then libselinux should be
> > patched to return an error in this case on the selabel_open()
> > (requires making nodups_specs return an error to the caller and
> > propagating it up). 
> > 
> > Signed-off-by:  Stephen Smalley <sds@xxxxxxxxxxxxx>
> > 
> > ---
> > 
> > Index: trunk/policycoreutils/setfiles/setfiles.c
> > ===================================================================
> > --- trunk/policycoreutils/setfiles/setfiles.c	(revision 2927)
> > +++ trunk/policycoreutils/setfiles/setfiles.c	(working copy) @@ -72,7
> >  +72,6 @@ static int abort_on_error; /* Abort the file tree walk upon
> > an error. */  static int add_assoc; /* Track inode
> > associations for conflict detection. */  static int
> > nftw_flags; /* Flags to nftw, e.g. follow links, follow
> > mounts */ -static int base_only; /* Don't use local
> > file_contexts customizations */  static int ctx_validate; /*
> > Validate contexts */  static const char *altpath; /*
> > Alternate path to file_contexts */
> > 
> > @@ -748,7 +747,6 @@
> >  	char *base;
> >  	struct selinux_opt opts[] = {
> >  		{ SELABEL_OPT_VALIDATE, NULL },
> > -		{ SELABEL_OPT_BASEONLY, NULL },
> >  		{ SELABEL_OPT_PATH, NULL }
> >  	};
> > 
> > @@ -836,10 +834,6 @@
> >  				}
> >  				fclose(policystream);
> > 
> > -				/* Only process the specified
> > file_contexts file, not
> > -				   any .homedirs or .local
> > files, and do not perform
> > -				   context translations. */
> > -				base_only = 1;
> >  				ctx_validate = 1;
> > 
> >  				break;
> > @@ -972,10 +966,9 @@
> > 
> >  	/* Load the file contexts configuration and check it. */
> >  	opts[0].value = (ctx_validate ? (char*)1 : NULL);
> > -	opts[1].value = (base_only ? (char *)1 : NULL);
> > -	opts[2].value = altpath;
> > +	opts[1].value = altpath;
> > 
> > -	hnd = selabel_open(SELABEL_CTX_FILE, opts, 3);
> > +	hnd = selabel_open(SELABEL_CTX_FILE, opts, 2);
> >  	if (!hnd) {
> >  		perror(altpath);
> >  		exit(1);
> 
-- 
Stephen Smalley
National Security Agency


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