Re: How is policy.31 created from modules under /usr/share/selinux

Richard Haines <[email protected]>
Newsgroups org.kernel.vger.selinux-refpolicy
Message-ID <[email protected]>
On Wed, 2020-12-09 at 19:42 +0530, Ashish Mishra wrote:
> Hi Richard ,
> 
> Will check with the monolithic policy to check the behavior of the
> semodule as you suggested.
> 
> Is there any similar approach / workaround for modular one?

I've only had a quick look at code and I could see two ways to fix:
1) Modify the Rules.modular part of the make file to move or copy the
policy and file contexts set of files over to $DESTDIR.
2) Modify semodule/semanage to handle $DESTDIR. I think this would be
more difficult to fix as lots go on here.

Maybe Chris could comment.

> 
> Thanks for pointers again.
> 
> Ashish
> 
> 
> 
> 
> 
> On Wed, Dec 9, 2020 at 3:23 PM Richard Haines
> <[email protected]> wrote:
> > 
> > On Tue, 2020-12-08 at 21:28 +0530, Ashish Mishra wrote:
> > > Hi Chris ,
> > > 
> > > Continuing on the inputs Richard shared , I was able to zero down
> > > to
> > > the problem.
> > > To recreate , step  can be directly tested by command mentioned
> > > in
> > > step-c
> > > 
> > > a) I am having custom-rootfs under which I am trying to get the
> > > refpolicy installed.
> > > 
> > > b) By using make load DESTDIR=/tmp/custom-rootfs , the setup
> > > reaches
> > > to state where
> > >      # semodule -s refpolicy -i NAME-OF-MODULE is triggered for
> > > every
> > > module under /tmp/custom-rootfs/usr/share/selinux/refpolicy
> > >      ==> This semodule behavior is causing the problem.
> > > 
> > > c) By default semodule install the file under /etc/selinux of
> > > HOST
> > > system rather than /tmp/custom-rootfs/etc/selinux
> > >     This behaviour can be recreated / verified by :
> > >     # semodule  -s selinux-store-name -i sample.pp
> > >     This instruction creates an entry of selinux-store-name and
> > > creates policy.32 file there .
> > >      ==> Instead , here i wanted the file to be created under
> > > /tmp/custom-rootfs/etc/selinux & not /etc/selinux
> > > 
> > > d) Currently trying to look at the file from where this
> > > instruction
> > > is
> > > executed & then check if
> > >     somehow semodule can be made to use /tmp/custom-
> > > rootfs/etc/selinux
> > > over default /etc/selinux
> > > 
> > > Thanks for sharing the info w.r.t your use case , will look at
> > > them .
> > > They can help me to understand the process in a better way.
> > > 
> > > Please feel free to revert if any further details are required or
> > > if
> > > i
> > > am missing any aspect .
> > 
> > I've been AWOL for a few days so just picking up on this query. I
> > can
> > now see the problem as described. If you generate a monolithic
> > policy
> > (MONOLITHIC=y) using sequence below it all works. However if you
> > build
> > a modular policy (MONOLITHIC=n), then semodule will install the
> > final
> > binary policy in /etc/selinux/refpolicy/policy regardless of
> > DESTDIR.
> > 
> > I guess semodule should obey orders??
> > 
> > export DESTDIR=/tmp/custom-embedded-rootfs
> > mkdir refpol
> > cd refpol
> > git clone https://github.com/SELinuxProject/refpolicy.git
> > Edit build.conf file to requirements (e.g. NAME = refpolicy etc.)
> > make install-src
> > cd /tmp/custom-embedded-rootfs/etc/selinux/refpolicy/src/policy
> > make conf
> > make load
> > 
> > 
> > 
> > 
> > > 
> > > Thanks  ,
> > > Ashish
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > On Tue, Dec 8, 2020 at 9:06 PM Chris PeBenito <[email protected]>
> > > wrote:
> > > > 
> > > > (SELinux main mail list to BCC since this is a refpolicy
> > > > question.)
> > > > 
> > > > On 12/7/20 8:26 AM, Ashish Mishra wrote:
> > > > >   4)  Further debugging I can confirm that the final binary
> > > > > (policy.31)
> > > > > seems to be
> > > > >        using HARD-CODDED location of /etc/selinux instead of
> > > > > what
> > > > > is
> > > > > being passed as DESTDIR.
> > > > >       The policy.31 is created not at custom-embedded-rootfs
> > > > > location.
> > > > > 
> > > > >        Due to this :
> > > > >          - policy.31 is created in
> > > > > /etc/selinux/refpolicy/policy/policy.31
> > > > >            instead of what i was expecting at
> > > > > /tmp/custom-embedded-
> > > > > rootfs/etc/selinux/refpolicy/policy/policy.31
> > > > >            as DESTDIR=${ROOT}  and i do get *.pp at the
> > > > > expected
> > > > > location of /tmp/custom-embedded-
> > > > > rootfs/etc/selinux/refpolicy/src/policy
> > > > >                   ${MAKE} -C
> > > > > ${ROOT}/etc/selinux/${PKG}/src/policy load
> > > > > DESTDIR=${ROOT}
> > > > 
> > > > 
> > > > I can't reproduce your issue.  I use monolithic policy
> > > > regularly in
> > > > the way
> > > > you're using it.
> > > > 
> > > > Here's the Makefile variables:
> > > > 
> > > >  From Makefile:
> > > >    topdir := $(DESTDIR)/etc/selinux
> > > >    installdir := $(topdir)/$(strip $(NAME))
> > > >    policypath := $(installdir)/policy
> > > > 
> > > >  From Rules.monolithic:
> > > >    loadpath = $(policypath)/$(notdir $(polver))
> > > > 
> > > > $(notdir $(polver)) is "policy.31" and NAME is what you have in
> > > > build.conf, e.g.
> > > > "refopolicy".
> > > > 
> > > > 
> > > > Then the install target for monolithic looks like this (with
> > > > "echo"s removed):
> > > > 
> > > > $(loadpath): $(policy_conf)
> > > >          @$(INSTALL) -d -m 0755 $(@D)
> > > >          $(verbose) $(CHECKPOLICY) -U $(UNK_PERMS)  $^ -o $@
> > > > 
> > > > --
> > > > Chris PeBenito
> > 
> >
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.