selinux prelink avc's (broken paths in policy?)
Paul Howarth
paul at city-fan.org
Wed May 24 17:04:10 UTC 2006
Christopher Ashworth wrote:
> On Wed, 2006-05-24 at 16:38 +0100, Paul Howarth wrote:
>> So if "semanage fcontext -l" doesn't produce an ordered listing, is
>> there any way from userland to get one, one that encompasses both the
>> base policy and any added modules or context objects added using semanage?
>
> I don't know the definitive answer on a userland tool. semanage
> fcontext -l appears to just be calling libsemanage, which is in turn
> using Ivan's database functions to list the objects (in this case, the
> fcontext objects). I'll try to track down what happens between the
> file_contexts file and the listing.
>
>> I take it as read that semanage-added objects and the file contexts from
>> policy module packages (.pp files) are seen as "later" in the list than
>> the base file_contexts file, but which has precedence for
>> semanage/semodule? Last one in? Does it make a difference whether
>> "semodule -i" or "semodule -u" are used?
>
> When semanage_direct_commit is invoked in libsemanage, the following
> things happen:
>
> - any modules are linked to the base module
> - the file contexts in the linked base are sorted
> - the file contexts are split into the file_contexts file and the other
> template files, and written to disk (well, to the sandbox, which is then
> loaded in a separate step)
> - any semanage-added "database" objects are then merged
>
> Thus, all fcontexts in the linked base (i.e. any fcontext associated
> with a module) are sorted together. The semanage-added objects are done
> last, outside of the module sorting, and so would have precedence, as I
> understand it. The database code is a little opaque and not well
> documented, so there may be some subtlety I'm missing as to how the
> database objects are merged, but this is my current understanding.
I think the best policy, for the avoidance of confusion for people
writing policy modules or calling semanage in rpm post-install scripts,
is to encourage them to use strings that will sort as "more specific",
i.e. avoid metacharacters if possible, and if not, use as long a stem as
possible. This probably means having two separate entries for things
that will go under /lib or /lib64, rather than the current idiom of
/lib(64)?, which has a metacharacter very early in the string.
Paul.
More information about the fedora-selinux-list
mailing list