From: Andy Warner <warner@rubix.com>
To: Stephen Smalley <sds@tycho.nsa.gov>
Cc: selinux@tycho.nsa.gov, Daniel J Walsh <dwalsh@redhat.com>
Subject: Re: adding objects classes and permissions to policy
Date: Fri, 17 Oct 2008 17:14:05 +0200 [thread overview]
Message-ID: <48F8ABBC.9060808@rubix.com> (raw)
In-Reply-To: <1224253435.19562.23.camel@moss-spartans.epoch.ncsc.mil>
[-- Attachment #1: Type: text/plain, Size: 4565 bytes --]
Stephen Smalley wrote:
> On Fri, 2008-10-17 at 16:18 +0200, Andy Warner wrote:
>
>> Stephen Smalley wrote:
>>
>>> On Fri, 2008-10-17 at 11:45 +0200, Andy Warner wrote:
>>>
>>>
>>>> Stephen Smalley wrote:
>>>>
>>>>
>>>>> On Thu, 2008-10-16 at 15:53 -0400, Stephen Smalley wrote:
>>>>>
>>>>>
>>>>>
>>>>>> On Thu, 2008-10-16 at 21:40 +0200, Andy Warner wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> When adding new object classes and permissions to SELinux policy is it
>>>>>>> necessary to re-create flask.h and av_permissions.h header files so
>>>>>>> that a user-space object manager can access the associated defines? If
>>>>>>> so, would someone give me some pointers as to how these are
>>>>>>> generated?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> You should use the dynamic class/permission lookup facilities for any
>>>>>> new code. man selinux_set_mapping
>>>>>>
>>>>>> XSELinux and SE-PostgreSQL are already using it I believe.
>>>>>>
>>>>>>
>>>>>>
>>>> I can't find any evidence that my version of libselinux contains the
>>>> selinux_set_mapping function. I am using CentOS 5.1 with libselinux
>>>> version 1.33.4. I have been learning RHEL 5 tends to be a bit behind
>>>> the times with regards to SELinux functionality. Does libselinux
>>>> 1.33.4 not have the dynamic class/permission lookup facilities? If it
>>>> does not, any advice on how to add object classes / permissions to
>>>> policy ? Moving to Fedora is a possibility, maybe it's worth
>>>> considering as this would not be the first issue we have had with an
>>>> outdated SELinux mechanism on RHEL 5 (?). We are integrating SELinux
>>>> TE / MLS with our commercial DBMS, and I have learned that RHEL 5 does
>>>> not have the database related object classes /permissions in the base
>>>> policy where the most recent Fedora does, hence my need to add the
>>>> object classes /permissions in RHEL 5.
>>>>
>>>>
>>> To use the object class/perm discovery support, you'd need to use a
>>> modern libselinux (>= 2.0.21) and a modern kernel (>= 2.6.23).
>>>
>>> Note that regardless of whether you use object class/permission
>>> discovery support, you have to add the classes and permissions to the
>>> policy flask definitions and rebuild your policy. The object class/perm
>>> discovery support just changes how the object manager obtains the values
>>> - whether they are hardcoded into it or dynamically looked up at object
>>> manager startup. But the policy itself still needs to be taught about
>>> them.
>>>
>>> As Ted said, the old way to teach libselinux about new classes/perms is
>>> described in:
>>> http://selinuxproject.org/page/Adding_New_Permissions
>>>
>>> After updating the policy/flask files, you run make in the flask
>>> subdirectory (different Makefile than the policy build one) and it will
>>> regenerate the header files that are used by libselinux and by the
>>> kernel. Then you can install the libselinux ones into a libselinux
>>> source tree via make LIBSELINUX_D=/path/to/libselinux tolib, and then
>>> rebuild your libselinux.
>>>
>>>
>>>
>> When I install our product on a fresh machine in addition to the
>> actual product and the new policy files, will I also need to install a
>> new version of the libselinux libraries?
>>
>
> Yes (when using the old way).
>
>
>> I assume that the linux kernel needs to somehow access the new object
>> class / permissions defines (I'm guessing there is a potential for
>> pre-existing defines to change through my policy rebuild), would that
>> be through the shared libselinux libraries? Kernel rebuild? (Mucking
>> with Linux itself is way out of my area of knowledge.)
>>
>
> No, the kernel doesn't need userspace object class/perm definitions,
> because it never references them itself.
>
My concern was not that the kernel would need to access my userspace
object class/perm definitions but that through creating a new flask.h I
would change the definitions of pre-existing object classes. For
instance, my current flask.h has:
#define SECCLASS_FILE 6
If after I generated a new flask.h this somehow changed to:
#define SECCLASS_FILE 7
I would think this could cause an issue with the kernel if it uses the
SECCLASS_FILE define in code built with the original flask.h. Is this
possible or are the pre-existing kernel object class defines guarenteed
to be consistent accross policy builds which have new object class
definitions?
[-- Attachment #2: Type: text/html, Size: 5378 bytes --]
next prev parent reply other threads:[~2008-10-17 15:14 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-16 19:40 adding objects classes and permissions to policy Andy Warner
2008-10-16 19:53 ` Stephen Smalley
2008-10-16 19:55 ` Stephen Smalley
2008-10-17 9:45 ` Andy Warner
2008-10-17 12:13 ` Stephen Smalley
2008-10-17 14:18 ` Andy Warner
2008-10-17 14:23 ` Stephen Smalley
2008-10-17 15:14 ` Andy Warner [this message]
2008-10-17 15:15 ` Stephen Smalley
2008-10-17 15:55 ` Protecting against inadvertent file copy Sanjai Narain
2008-10-17 17:14 ` Stephen Smalley
2008-10-17 19:13 ` Sanjai Narain
2008-10-16 20:02 ` adding objects classes and permissions to policy Xavier Toth
2008-10-16 20:06 ` Stephen Smalley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48F8ABBC.9060808@rubix.com \
--to=warner@rubix.com \
--cc=dwalsh@redhat.com \
--cc=sds@tycho.nsa.gov \
--cc=selinux@tycho.nsa.gov \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.