Re: SELinux and RPM packages

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

 



I'll just reply to both Dominick and mark below in one swift shot:

On February 2, 2012 15:19:15 m.roth@xxxxxxxxx wrote:
> > I am curious: what type of stuff are you referring to when you mention
> > semanage?

packageA:

%post
semanage fcontext -a -t httpd_sys_content_t /webapps/appA
setsebool -P httpd_can_sendmail on

pacakgeB:

%post
semanage fcontext -a -t httpd_sys_content_t /srv/appB
setsebool -P httpd_can_sendmail on

above is a sample that is not exact, but presents situation. In both cases I 
would want to clean-up after package is uninstalled to get system into the 
previous state:

packageA

%postun

restorecon -R -v /webapps/appA
setsebool -P httpd_can_sendmail off

And I just "shot" packageB's requirement. Same can happen to the fcontext 
stuff, just oversimplifying here. I do not feel like building meta-packages 
for each statement and add dependancies, like:

httpd-sendmail-trigger.rpm:

%post
setsebool -P httpd_can_sendmail off

and make packageA and packageB:

Require: httpd-sendmail-trigger

with a bit more added complexity it's going to be hairy maintaining all the 
interdependancies etc.

> > As for setsebool i do not see a problem with conflicts/overlap. If you
> > just add 'setsebool -P somebool on' in your %post if you need it to be
> > on then i dont see how it matters what the current value of the boolean
> > is.
> 
> 
> For that matter, if packageA needs a boolean on, and packageB needs it
> off, you have deeper problems that you're going to have to resolve before
> you think of building packages.
> 

see above, it's not about install time - install is actually no-problem. It's 
the removal, upgrade when you need to relabel etc. Above is a very simplistic 
scenario, you can add complexities like upgraded package been moved to a 
different directory, while previous semanage rules overlapped on the old one, 
now removing packageA would wipe all the fcontext goodness it installed there 
to begin with. Kind of messy, unless I'm missing something either in RPM or 
SELinux. 

My current way of thinking is: build module-like infrastructure:

/etc
 \_selinux.d
    \_packageA
       \_policy1.sh
    \_packageB
       \_policy1.sh
       \_policy2.sh

then do something like:

$ (find /etc/selinux.d/ -type f -exec cat \{\} \; | sort -u | sh 

in which case we run above whenever package is installed/remove/updated (and 
subsequently structure of the above /etc/selinux.d has changed), but we need 
to first: remove all existing customizations (fcontext, booleans, etc) before 
launch, second: relabel everything right after - because there are going to be 
leftovers from the old packages.

Problem with the above - system is going to be "broken" while relabeling and 
reinstall of policies is happening. And those are not really fast processes. 
Not to mention that it seems a bit "clunky" and "kludgy" 

-- 
Dmitry Makovey
Web Systems Administrator
Athabasca University
(780) 675-6245
---
Confidence is what you have before you understand the problem
    Woody Allen

When in trouble when in doubt run in circles scream and shout 
     http://www.wordwizard.com/phpbb3/viewtopic.php?f=16&t=19330

Attachment: signature.asc
Description: This is a digitally signed message part.

--
selinux mailing list
selinux@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/selinux

[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux