On Wed, 2007-12-05 at 15:56 -0500, Joshua Brindle wrote: > Stephen Smalley wrote: > > On Wed, 2007-12-05 at 15:35 -0500, Joshua Brindle wrote: > > > >> Stephen Smalley wrote: > >> > >>> On Wed, 2007-12-05 at 15:16 -0500, Joshua Brindle wrote: > >>> > >>> > >>>> Stephen Smalley wrote: > >>>> > >>>> > >>>>> On Wed, 2007-12-05 at 14:30 -0500, Todd Miller wrote: > >>>>> > >>>>> > >>>>>> Paul Moore wrote: > >>>>>> > >>>>>> > >>>>>>> The discussion for this appears to have gone quiet (at least I > >>>>>>> haven't seen anything else on this list). Where do things currently > >>>>>>> stand? > >>>>>>> > >>>>>>> > >>>>>> At this point I'd be OK with requiring equivalence and throwing an error > >>>>>> otherwise. I do think that this will result in usability issues that we > >>>>>> will have to address once people start using the caps. However, with > >>>>>> only > >>>>>> a single cap defined so far it is not really possible to know how these > >>>>>> will end up being used. > >>>>>> > >>>>>> > >>>>> We could try to come up with a solution at least for allowing clean > >>>>> upgrades from F8 (w/o any caps) to F9 (likely w/ peer cap defined) > >>>>> without requiring manual user intervention for dealing with local > >>>>> modules. > >>>>> > >>>>> > >>>>> > >>>> This was my exact objection to using an intersection or equivalence. IMO > >>>> it is incompatible to require all modules to be the same and to also > >>>> require upgrades to work without manual intervention. > >>>> > >>>> Do you still think unioning is wrong? > >>>> > >>>> > >>> Yes, I'm still against (automatic, default) unioning of the capabilities > >>> by the linker - that is clearly not a safe default. semodule could > >>> possibly override that behavior based on an option though, at which > >>> point the %post scriptlet in the policy rpm could use that option if we > >>> wanted to force it w/o user intervention. > >>> > >>> > >>> > >> And when a user installs a new module via audit2allow they have to know > >> to select --ignore-stuff-the-modules-say-and-do-something-else-anyway? I > >> don't like this idea either. > >> > > > > Shrug. Then we'll just go with equivalence only, and the user will have > > to remove local modules before upgrade. > > > > Well, Todd just suggested, rather than forcing install (which has > strange semantics anyway since it isn't clear which set of caps would > end up in the kernel policy) we could have an --upgrade-polcaps option > that unions the bitmaps of the modules installed. It isn't pretty but it > requires manual intervention to union them instead of doing so > automatically. This obviously will break local policies that do not > support the cap but need to. The user will have to figure out how to > update those local policies to add the required permissions, this isn't > any different than adding new permission checks to the kernel though. > > I'm still concerned about audit2allow's ability to decide what caps to > put in a policy module being generated. I also have concerns about new > policy modules that are being written by hand, the users aren't going to > necessarily know what caps are available and why they should care. I'm > sure SLIDE will be able to take care of that though ;) Ok, so let's think about where these policycap statements are likely to actually originate. A typical module author won't know what capabilities his module requires, and in at least common cases, the capabilities required will actually depend on the implementations of the interfaces he is using. Thus, a given refpolicy interface will likely include policycap statements for the capabilities required by that interface, e.g. the network permission interfaces would require the network_peer_controls capability if they are implemented using those checks rather than the legacy ones. For raw audit2allow output (no refpolicy interface matching), audit2allow itself has to determine the capabilities required and insert policycap statements accordingly. Do we still need to support that mode of operation, or can we turn on -R by default going forward for audit2allow so that we always use refpolicy interfaces? Also interesting to think about how policycaps get determined for a module in a world where refpolicy interfaces are link-time expanded rather than compiled into the module - there the actual caps for the module won't be known until link. Overall, I have to wonder if we are really buying anything via per-module capability declaration vs. per-policy. The only reason you tried to make it per-module was you were trying to drop distinctions between base and non-base, right? But maybe we shouldn't be so concerned with having a notion of a base module even if we reduce the differences between what is supported by base vs. non-base. -- Stephen Smalley National Security Agency -- 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.