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

Ashish Mishra <[email protected]>
Newsgroups org.kernel.vger.selinux-refpolicy
Message-ID <CAP2OjcgtcoUmBQZJSzz2DYQ-g23=RrSXT-uefCROUi3y_tU=tg@mail.gmail.com>
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 .

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.