Selinux Packaging [WAS: Wifi connection issues with Intel?]

Daniel J Walsh dwalsh at redhat.com
Mon Jun 16 18:34:34 UTC 2014


On 06/16/2014 02:15 PM, Richard Shaw wrote:
> On Mon, Jun 16, 2014 at 1:08 PM, Daniel J Walsh <dwalsh at redhat.com
> <mailto:dwalsh at redhat.com>> wrote:
>
>
>     On 06/16/2014 01:35 PM, Richard Shaw wrote:
>>     On Mon, Jun 16, 2014 at 12:19 PM, Daniel J Walsh
>>     <dwalsh at redhat.com <mailto:dwalsh at redhat.com>> wrote:
>>
>>
>>         On 06/12/2014 10:14 AM, Richard Shaw wrote:
>>>         On Thu, Jun 12, 2014 at 6:56 AM, Daniel J Walsh
>>>         <dwalsh at redhat.com <mailto:dwalsh at redhat.com>> wrote:
>>>
>>>>             The full unifi software is java with a mongodb database
>>>>             backend and works fine. I have a RPM I created, the
>>>>             only problem I haven't been able to fix is the selinux
>>>>             issues, one for the private mongodb instance, and then
>>>>             the ports it binds to. 
>>>             Please open a bugzilla for the SELinux issues.
>>>
>>>
>>>         Before I open a BZ, here's what I have in my spec file which
>>>         from what I understand should be persistent...
>>>
>>>         %posttrans
>>>         /usr/sbin/semanage fcontext -e /var/lib/mongod
>>>         "/var/lib/unifi/logs(/.*)?"
>>>         /usr/sbin/semanage fcontext -e /var/lib/mongod
>>>         "/var/lib/unifi/data(/.*)?"
>>>         /usr/sbin/semanage port -m -t mongod_port_t 27117
>>>
>>>         Or should this be handled in a policy?
>>>
>>>         Thanks,
>>>         Richard
>>>
>>>
>>         I think your post install should look like.
>>
>>         /usr/sbin/semanage fcontext -e /var/log/mongod
>>         "/var/lib/unifi/logs"
>>         /usr/sbin/semanage fcontext -e /var/lib/mongod
>>         "/var/lib/unifi/data"
>>         /usr/sbin/semanage port -m -t mongod_port_t 27117
>>
>>         Don't use the regex. Also I would figure the logs should be
>>         labeled mongod_log_t rather then mongod_lib_t.
>>
>>
>>     What is the concern with regex?
>
>>     It is specific to packaging? Most of the examples I found online
>>     used that method... As far as the label, since everything is
>>     getting dumped in /var/lib I figured that would be OK. 
>>
>
>     Not a concern with regex. it just will not work.  The examples you
>     have seen on line, were not using equivalence.  They were using
>     generic labelling.
>
>     Equivalence tells SELinux to swap the second part of the path with
>     the first.  You code would only match file paths that began with
>     /var/lib/unifi/logs(/.*?)  Not /var/lib/unifi/logs/foobar.log
>>
>>         If this is a standard location for this code, we should put
>>         it into the base package.
>>
>>
>>     There is not a standard install location, the install will "work"
>>     as long as everything stays in the same relative location (the
>>     unifi directory). Since it writes a lot of stuff I figured /var
>>     was the best (only?) real option. 
>>
>     Yes
>
>>     Following the example of a draft wiki I can't find anymore I had
>>     modified the scripts to this instead of using %posttrans:
>>     %post
>>     semanage fcontext -a -t mongod_var_lib_t \
>>         "%{_sharedstatedir}/unifi/logs(/.*)?" 2>/dev/null || :
>>     semanage fcontext -a -t mongod_var_lib_t \
>>         "%{_sharedstatedir}/unifi/data(/.*)?" 2>/dev/null || :
>>     restorecon -R %{_sharedstatedir}/unifi/logs || :
>>     restorecon -R %{_sharedstatedir}/unifi/data || :
>>     semanage port -m -t mongod_port_t 27117 || :
>>
>>     %postun
>>     if [ $1 -eq 0 ] ; then  # final removal
>>     semanage fcontext -d -t mongod_var_lib_t \
>>         "%{_sharedstatedir}/unifi/logs(/.*)?" 2>/dev/null || :
>>     semanage fcontext -d -t mongod_var_lib_t \
>>         "%{_sharedstatedir}/unifi/data(/.*)?" 2>/dev/null || :
>>     fi
>>
>>
>     That should work.  You could speed it up by combining both semange
>     fcontext lines into a single transaction. Something like.
>
>     semanage -S targeted -i - << _EOF
>
>     fcontext -a -t mongod_var_lib_t "%{_sharedstatedir}/unifi/logs(/.*)?"
>     fcontext -a -t mongod_var_lib_t "%{_sharedstatedir}/unifi/data(/.*)?"
>     _EOF 2>/dev/null || :
>
>
> Ok, just to be clear, I still need to remove the (/.*)? parts? I found
> the packaging draft I referred to:
>
> http://fedoraproject.org/wiki/PackagingDrafts/SELinux
>
> Which shows including it.
>
> Thanks,
> Richard
>
>
If you use "-e" option, you do not use them, if you are using "-a"
option you do.

Your first message said you used

/usr/sbin/semanage fcontext -e /var/lib/mongod "/var/lib/unifi/logs(/.*)?"
/usr/sbin/semanage fcontext -e /var/lib/mongod "/var/lib/unifi/data(/.*)?"

Which is wrong because you used the "-e"

Your second email said you were doing.

semanage fcontext -d -t mongod_var_lib_t \
    "%{_sharedstatedir}/unifi/logs(/.*)?" 2>/dev/null || :
semanage fcontext -d -t mongod_var_lib_t \
    "%{_sharedstatedir}/unifi/data(/.*)?" 2>/dev/null || :

Which used the "-a"  which was correct, it needs the regex.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.fedoraproject.org/pipermail/users/attachments/20140616/5b27dbf8/attachment-0001.html>


More information about the users mailing list