Fedora buildsys and SELinux
sds at tycho.nsa.gov
Mon May 5 13:35:07 UTC 2008
On Fri, 2008-05-02 at 13:20 -0400, Stephen Smalley wrote:
> On Tue, 2008-04-22 at 12:38 -0400, Stephen Smalley wrote:
> > On Tue, 2008-04-22 at 11:55 -0400, Stephen Smalley wrote:
> > > On Thu, 2008-04-17 at 09:12 -0400, Stephen Smalley wrote:
> > > > On Wed, 2008-04-16 at 23:23 -0400, Bill Nottingham wrote:
> > > > > James Morris (jmorris at namei.org) said:
> > > > > > > You cannot create files in a chroot of a context not known by the
> > > > > > > host policy. This means that if your host is running RHEL 5, you are
> > > > > > > unable to compose any trees/images/livecds with SELinux enabled for
> > > > > > > later releases.
> > > > > >
> > > > > > Ok, that's what I suspected.
> > > > > >
> > > > > > One of the possible plans for this is to allow a process to run in a
> > > > > > separate policy namespace, and probably also utilize namespace support in
> > > > > > general.
> > > > > >
> > > > > > This is non-trivial and needs more analysis.
> > > > >
> > > > > Incidentally, this is also one of the blockers for policy-in-packages,
> > > > > rather than a monolithic one.
> > > >
> > > > I assume you mean setting down unknown file labels rather than
> > > > per-namespace or per-chroot policy support. I think they are related
> > > > but different. The former is required if you always plan to install the
> > > > files _before_ loading the policy. The latter is required primarily for
> > > > getting any scriptlets to run in the right security contexts so that any
> > > > files they create are labeled appropriately within the chroot.
> > >
> > > BTW, for reference, a patch to support setting down unknown file labels
> > > was posted here a couple of years ago:
> > > http://marc.info/?l=selinux&m=114771094617968&w=2
> > And the last version of that patch was:
> > http://marc.info/?l=selinux&m=114840466518263&w=2
> > Not that it applies cleanly anymore, of course.
> An updated patch and discussion has started over on selinux list, see:
> One question that has come up is whether the patch to support setting
> unknown file labels is sufficient to support the buildsys needs, or
> whether something more is required. My impression is that all we truly
> need is:
> 1) support for setting unknown file labels for use by rpm, and
> 2) bind mount /dev/null over selinux/load within the chroot so that
> policy loads within the chroot do nothing rather than changing the build
> host's policy, and
> 3) bind mount a regular empty file over selinux/context within the
> chroot so that attempts to validate/canonicalize contexts by rpm will
> always return the original value w/o trying to validate against the
> build host's policy.
We need to better understand the sequence of actions performed by rpm,
both from outside the chroot and from within the chroot, to know
precisely what is needed here.
It would be cleaner if we could just disable policy reload altogether.
libsemanage will skip policy reload if:
1) the caller asked to skip reload (e.g. semodule with the -n option) or
2) the caller asked to operate on a policy store other than the active
policy store (e.g. semodule with the -s option), or
3) SELinux appears to be disabled.
We can fake the last one, but I think that will confuse rpm with respect
to other actions we still want it to take, like labeling the files,
transitioning to a scriptlet domain, etc.
On the context validation/canonicalization, it would be cleaner if we
could have rpm validate and canonicalize against the target image's
policy rather than the build host's policy. This is likely doable, as
setfiles has to do something like this for its -c option when validating
a file contexts configuration against a policy at policy build time.
Requires calling a libselinux interface to register an alternative
> Plus the associated policy changes to permit the above to take place.
> Does that sufficient?
> The per-chroot/namespace policy idea sounds nice and elegant, but is a
> lot more complicated, so if the above is workable, it provides a much
> shorter term path for solving the buildsys problem.
National Security Agency
More information about the fedora-selinux-list