[chef] Re: RE: Re: How to enhance an existing provider?


Chronological Thread 
  • From: Sean OMeara < >
  • To:
  • Subject: [chef] Re: RE: Re: How to enhance an existing provider?
  • Date: Tue, 1 Jan 2013 19:50:05 -0500

Glad to hear it. Feel free to send in a pull request or 5 and we'll
get it tested and moved into the official selinux coobook.

On Tue, Jan 1, 2013 at 7:12 PM, Kevin Keane (subscriptions)
< >
 wrote:
> Thank you so much! I'll check out the monkey patch; sounds just like what I 
> need!
>
> As for the assumption: I think there may be a better, and easier, way to go 
> about that. SELinux already contains a database of all the contexts that 
> files *should* have; you access it with the semanage fcontext command. The 
> restorecon utility that I was planning to use simply looks in this database 
> and applies whatever context RedHat/CentOS/... are supposed to have in the 
> first place.
>
> This is better because the assumption "use the containing directory's 
> context" isn't always true. For instance, in the /usr/lib64/nagios/plugins 
> directory, some plugins need to have unconfined context, while others will 
> run fine confined.
>
> By the way, an alternate approach would be to change how chef puts files in 
> its destination. I think this would go too deep into Chef for me to do, 
> though, but would be the best solution.
>
> Currently, as far as I can tell, Chef creates a file in a temporary 
> directory (which gives it the usr_tmp_t context) and then moves it into 
> place (keeping the context). That's probably how the context gets clobbered 
> in the first place. Instead, chef should first create the file in the 
> temporary location, but instead of moving it, create a new one (which will 
> have the correct SELinux context) and copy the content of the temporary 
> file over.
>
> In any case, thanks for your monkey patch! That's going to help me 
> dramatically.
>
> -----Original Message-----
> From: Sean OMeara 
> [mailto:
> Sent: Tuesday, January 01, 2013 2:52 PM
> To: 
> 
> Subject: [chef] Re: How to enhance an existing provider?
>
> Look in libraries/monkey.rb
>
> That particular code assumes that when you write a file, you want to give 
> it the same selinux context as it's containing directory by default. 
> Opinions on that?
>
> It needs some heavy work and uses a raw string as the context 
> representation instead of breaking it into its individual parts.
>
> It's a start.
>
> On Tue, Jan 1, 2013 at 5:46 PM, Sean OMeara 
> < >
>  wrote:
>> Hi!
>>
>> Excellent question. The best way to do this is to use a cookbook to
>> monkey patch the Chef::Provider::File class, so you can experiment
>> with it without having to modify core Chef.
>>
>> As it turns out, I started making a pass at this very issue a few
>> years ago, but never got around to finishing it.
>>
>> Here's a good place to start!
>>
>https://github.com/someara/cookbook-selinux/tree/monkeys
>>
>> Let me know if you have any questions or need any assistance.
>>
>> -s
>>
>> On Tue, Jan 1, 2013 at 5:26 PM,  
>> < >
>>  wrote:
>>> I’m still on the up-slope of my Chef learning curve…
>>>
>>>
>>>
>>> What I’d like to do is enhance the Chef::Provider::File. It seems to
>>> me that the documentation section “Extending an existing provider”
>>> would apply here, but I don’t fully understand how it would work. I
>>> would create a mixin and put it into the library directory – and then
>>> what?  How would all my cookbooks – and the community ones I’m using - 
>>> know to use this mixin?
>>>
>>>
>>>
>>>
>>>
>>> Specifically, what I’m trying to accomplish is fix one of the major
>>> annoyances in Chef; it not only doesn’t support SELinux, but actively
>>> clobbers the SELinux context for all he files, templates etc. that it
>>> creates. So my recipes are littered with execute resources for the
>>> “restorecon” utility to reset this everwhere I use a file-related
>>> resource (templates, remote_file, cookbook file etc.). It is becoming
>>> unmanageable, especially with community cookbooks that of course don’t 
>>> have my hack added.
>>>
>>>
>>>
>>> Conceptually the fix is simple: in the file provider, in addition to
>>> setting the file permissions, I would also need to call restorecon.
>>>
>>>
>>>
>>> Rather than hacking the File resource itself, I would like to put
>>> this feature into my SELinux cookbook, and have that somehow add a
>>> Mixin to the File resource.
>>>
>>>
>>>
>>> I just can’t figure out how to do that.
>>>
>>>
>>>
>>> Thanks!
>>>
>>>
>



Archive powered by MHonArc 2.6.16.

§