Re: policycoreutils, sepolgen (sepolgen-ifgen) issues on Debian

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

 



On 09/16/2009 03:52 PM, Joshua Brindle wrote:
> 
> 
> Daniel J Walsh wrote:
>> On 09/16/2009 01:14 PM, Joshua Brindle wrote:
>>>
>>> Daniel J Walsh wrote:
>>>> On 09/16/2009 11:01 AM, Joshua Brindle wrote:
>>>>
>>>>> Manoj Srivastava wrote:
>>>>>
>>>>>> On Mon, Aug 17 2009, Christopher J. PeBenito wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> On Fri, 2009-08-14 at 11:50 -0500, Manoj Srivastava wrote:
>>>>>>>
>>>>>>>
>>>>>>>> On Fri, Aug 14 2009, Manoj Srivastava wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>>            I am running into an issue with sepolgen on Debian.
>>>>>>>>> Debian
>>>>>>>>> ships
>>>>>>>>>     more than one  version of the refpolicy, a default one, and a
>>>>>>>>>     MLS enabled one. So, the include files live in either
>>>>>>>>>     /usr/share/selinux/{default,mls}/include
>>>>>>>>>
>>>>>>>>>            sepolgen (in src/sepolgen/defaults.py) sets
>>>>>>>>> refpolicy_devel() to
>>>>>>>>>     a single location -- and thus, only one version of the
>>>>>>>>> security
>>>>>>>>> policy
>>>>>>>>>     may be supported. So, sepolgen-ifgen from policycoreutils can
>>>>>>>>> only work
>>>>>>>>>     with one policy, which may not be the one installed on the
>>>>>>>>> target
>>>>>>>>>     machine. Could this be made configurable, somehow? As far as I
>>>>>>>>> can
>>>>>>>>>     see, sepolgen's python library does not offer any way to
>>>>>>>>> set the
>>>>>>>>> value.
>>>>>>>>>
>>>>>>>>>            It would be nice if the location of the include
>>>>>>>>> directory
>>>>>>>>> could
>>>>>>>>>     be looked for from a PATH like variable setting, to make it
>>>>>>>>> easier for
>>>>>>>>>     distributions to ship more than one policy, or for end
>>>>>>>>> users to
>>>>>>>>>     experiment with other policies without have to overwrite the
>>>>>>>>> single
>>>>>>>>>     default.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>            Well, here is a kind of proof-of-concept patch
>>>>>>>> (python is
>>>>>>>> not my
>>>>>>>>     strong suit), and I have only tested in that it allows the
>>>>>>>> package to
>>>>>>>>     compile, and the following code works:
>>>>>>>>
>>>>>>>>
>>>>>>> [...]
>>>>>>>
>>>>>>>
>>>>>>>>     def refpolicy_makefile():
>>>>>>>> -    return refpolicy_devel() + "/Makefile"
>>>>>>>> +    chooser = PathChoooser("/etc/selinux/sepolgen.conf")
>>>>>>>> +    return chooser("Makefile")
>>>>>>>>
>>>>>>>>     def headers():
>>>>>>>> -    return refpolicy_devel() + "/include"
>>>>>>>> -
>>>>>>>> +    chooser = PathChoooser("/etc/selinux/sepolgen.conf")
>>>>>>>> +    return chooser("include")
>>>>>>>> +
>>>>>>>>
>>>>>>>>
>>>>>>> Why are you making another config file rather than just get the
>>>>>>> policy
>>>>>>> name from /etc/selinux/config via selinux_getpolicytype()?
>>>>>>>
>>>>>>>
>>>>>>            This will work well for Debian, since the development
>>>>>> files are
>>>>>>     installed under "/usr/share/selinux/" in a subdirectory named
>>>>>> after the
>>>>>>     policy. I was not sure that this convention was followed in other
>>>>>>     distributions, though. While I am not certain, google implies
>>>>>> that in
>>>>>>     fedora policy type is targeted, but the devel files do not
>>>>>> live in
>>>>>>     /usr/share/selinux/targeted.[0]. Given that, perhaps it is
>>>>>> better to
>>>>>>     let the user provide guidance about how to map the policy type
>>>>>> to a
>>>>>>     directory?
>>>>>>
>>>>>>            Also, I must confess I had forgotten about this call.
>>>>>>
>>>>>>            However, a patch with this is trivial, so an alternate
>>>>>> patch
>>>>>>     follows. (Not sure this will work for fedora, so caveat emptor)
>>>>>>
>>>>>>            manoj
>>>>>> [0]
>>>>>> http://docs.fedoraproject.org/selinux-user-guide/f11/en-US/chap-Security-Enhanced_Linux-Working_with_SELinux.html
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --8<---------------cut here---------------start------------->8---
>>>>>>
>>>>>> If the user installs a policy whose development files do not live
>>>>>> under
>>>>>> /usr/share/selinux/devel/include, sepolgen wqould not work.
>>>>>> Debian, for
>>>>>> instance, installs under:
>>>>>> /usr/share/selinux/{default,mls}/include
>>>>>>
>>>>>> This patch uses selinux_getpolicytype() to determine the policy
>>>>>> type, and
>>>>>> assumes that there is one-on-one correspondence between policytype
>>>>>> and
>>>>>> the directory the development files live in.
>>>>>>
>>>>>> Signed-off-by: Manoj Srivastava<srivasta@xxxxxxxxxx>
>>>>>> ---
>>>>>>     src/sepolgen/defaults.py |    4 +++-
>>>>>>     src/sepolgen/module.py   |    2 +-
>>>>>>     2 files changed, 4 insertions(+), 2 deletions(-)
>>>>>>
>>>>>> diff --git a/src/sepolgen/defaults.py b/src/sepolgen/defaults.py
>>>>>> index 45ce61a..85e5fb0 100644
>>>>>> --- a/src/sepolgen/defaults.py
>>>>>> +++ b/src/sepolgen/defaults.py
>>>>>> @@ -21,6 +21,8 @@
>>>>>>     Various default settings, including file and directory locations.
>>>>>>     """
>>>>>>
>>>>>> +import selinux
>>>>>> +
>>>>>>     def data_dir():
>>>>>>         return "/var/lib/sepolgen"
>>>>>>
>>>>>> @@ -31,7 +33,7 @@ def interface_info():
>>>>>>         return data_dir() + "/interface_info"
>>>>>>
>>>>>>     def refpolicy_devel():
>>>>>> -    return "/usr/share/selinux/devel"
>>>>>> +    return "/usr/share/selinux/" +
>>>>>> selinux.selinux_getpolicytype()[1]
>>>>>>
>>>>>>     def refpolicy_makefile():
>>>>>>         return refpolicy_devel() + "/Makefile"
>>>>>> diff --git a/src/sepolgen/module.py b/src/sepolgen/module.py
>>>>>> index edd24c6..355c9b8 100644
>>>>>> --- a/src/sepolgen/module.py
>>>>>> +++ b/src/sepolgen/module.py
>>>>>> @@ -120,7 +120,7 @@ class ModuleCompiler:
>>>>>>             self.semodule_package = "/usr/bin/semodule_package"
>>>>>>             self.output = output
>>>>>>             self.last_output = ""
>>>>>> -        self.refpol_makefile = "/usr/share/selinux/devel/Makefile"
>>>>>> +        self.refpol_makefile = "/usr/share/selinux/" +
>>>>>> selinux.selinux_getpolicytype()[1]  + "/Makefile"
>>>>>>             self.make = "/usr/bin/make"
>>>>>>
>>>>>>         def o(self, str):
>>>>>>
>>>>>>
>>>>> This will break Fedora/RHEL AFAIK. I don't necessarily like that RH
>>>>> has
>>>>> interface files in /usr/share/selinux/devel rather than
>>>>> /usr/share/selinux/<policy>/devel or similar but we can't break them.
>>>>>
>>>>> Dan, any chance you could change the location of the interface files?
>>>>>
>>>>>
>>>>>
>>>> We could carry a patch although I don't think anyone is  shipping
>>>> different interfaces for different policies.
>>>>
>>>>
>>> I'm not willing to break upstream behavior and force you to carry a
>>> patch for something that previously worked.
>>>
>>> Perhaps not for distro shipped policies but for custom policies I know
>>> interfaces are changed and if the developers on those end systems want
>>> to use sepolgen for interface matching they have to over write the
>>> distro shipped interface files.
>>>
>>>> We could add a link in each policy types back to the devel environment.
>>>> Or do /usr/share/selinux/POLICYTYPE/devel/Makefile and on RHEL and
>>>> Fedora systems
>>>>    have /usr/share/selinux/POLICYTYPE/devel ->  
>>>> /usr/share/selinux/devel/
>>>>
>>>>
>>> wasn't this done in the past? I remember a symlink being there but can't
>>> remember why it was removed (unless I'm misremembering)
>>>
>> It was there in the past, but "devel" was a separate package and in
>> some cases we ended up with a dangling link.
>> devel has since been moved into the selinux-policy package so it would
>> not be a problem any longer.
>>
> 
> So you'd need to update the policy package before we pull this in
> upstream. Just let me know when that has been done.
Well it won't be done on RHEL5 since devel is a separate package and even if I wanted to update it, I can't until about 6 months from now, RHEL5.5


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