Re: initial_sid context via libsepol

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

 







> On Tuesday, 8 March 2016, 13:17, Richard Haines <richard_c_haines@xxxxxxxxxxxxxx> wrote:
> > 
> 
> 
> 
> On Tuesday, 8 March 2016, 1:32, William Roberts <bill.c.roberts@xxxxxxxxx> 
> wrote:
> 
> 
>> 
>> 
>> 
>> 
>> 
>> 
>> On Mon, Mar 7, 2016 at 12:32 PM, Stephen Smalley <sds@xxxxxxxxxxxxx> 
> wrote:
>> 
>> On 03/07/2016 01:44 PM, Stephen Smalley wrote:
>>> 
>>> On 03/07/2016 10:41 AM, Richard Haines wrote:
>>>> 
>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> On Saturday, 5 March 2016, 14:48, Richard Haines
>>>>>> <richard_c_haines@xxxxxxxxxxxxxx> wrote:
>>>>>> 
>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Friday, 4 March 2016, 21:18, "Roberts, William 
> C"
>>>>>> <william.c.roberts@xxxxxxxxx> wrote:
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> How can one obtain the same value as
>>>>>>> /sys/fs/selinux/initial_contexts/file
>>>>>>> 
> via libsepol?
>>>>>> 
>>>>>> 
>>>>>>> I’ve been digging around libsepol and its not quite 
> clear to me.
>>>>>>> 
>>>>>>> It looks as though the record is here:
>>>>>>>                  context_struct_t *a = &((policydb_t
>>>>>>> 
> *)pol.db)->ocontexts[OCON_ISID]->context[0];
>>>>>> 
>>>>>>                  context_struct_t *b = &((policydb_t
>>>>>>> 
> *)pol.db)->ocontexts[OCON_ISID]->context[1];
>>>>>> 
>>>>>> 
>>>>>>>                  printf("%u\n", 
> a->type);
>>>>>>>                 
> printf("%u\n",b->type);
>>>>>>> 
>>>>>>> Prints:
>>>>>>> 185
>>>>>>> 0
>>>>>>> 
>>>>>>> Not sure if this is right, and how to format the context 
> struct to a
>>>>>>> string.
>>>>>>> 
> I didn’t see any helpers.
>>>>>> 
>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> 
>>>>> 
>>>>> I've attached an example, hope it's useful
>>>>>> 
>>>>> I've updated the example with more detail and display SID 
> name using
>>>>> SID value not counter.
>>>>> 
>>>>> 
>>>> Any particular reason you didn't use sepol_sid_to_context()?
>>>> 
>>> 
> I guess context_to_string() on the context structure would work better for your 
> purposes.   sepol_sid_to_context() would require loading the sidtab via 
> policydb_load_isids() and setting the internal policydb to the one you loaded 
> via sepol_set_policydb().
>> 
>> 
>> 
>> 
>> Seems as though its not exported api, but it does indeed print something:
>> 
>> code:
>> char *s;
>> size_t len;
>> context_struct_t *a = &((policydb_t 
> *)pol.db)->ocontexts[OCON_ISID]->context[0];
>> 
>> 
>> int rc = context_to_string(pol.handle, (policydb_t *)pol.db, a, &s, 
> &len);
>> 
>> 
>> printf("rc: %d\n", rc);
>> printf("con: %s\n", s);
>> 
>> 
>> prints:
>>   rc: 0
>>   con: u:object_r:null_device:s0
>> 
>> 
>> However, I am after the initial sid for file, which this isn't it... is 
> it in the ocontexts array under a different index?
> 
>> 
> 
> From what I can see the only ways for you to get the context of a specifically
> named initial sid, is to:
> 
> 1) If working on the active policy then read /sys/fs/selinux/initial_contexts
> for the specific name.
> 
> 2) If working on a binary policy that has been loaded by libsepol for
> investigation, then I guess the official answer would be "you cannot do
> this", simply because the names are not held in the binary policy.
> 
> What you could do is:
> 
> a) Load the initial_sid_to_string.h or the policy initial_sids file and search
> through it for a match. This will give the offset and would (by magic) give
> the initial SID value (e.g. "file" = 5) as it just so happens that the
> initial SIDs start at '1' in a standard SELinux system. You can then 
> obtain

> the context string.
Sorry missed the bit about using the offset as the index for matching 
the cur->sid[0] value that would then allow the correct context to be
retrieved.

> 
> b) Or you could just say they start at 1 and I know "file" is the 5th 
> entry !!
> 
> c) Modify policy, kernel etc. to add the names.
> 
> Unless someone knows another way !!!!
> 
>> 
>> Bill
>> 
>> 
>>> 
>>> _______________________________________________
>>> Selinux mailing list
>>> Selinux@xxxxxxxxxxxxx
>>> To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx.
>>> To get help, send an email containing "help" to 
> Selinux-request@xxxxxxxxxxxxx.
>>> 
>> 
>> 
>> 
>> -- 
>> 
>> Respectfully,
>> 
>> William C Roberts
> 
>> 
>> 
>> 
>> 
>> 
> 
> _______________________________________________
> Selinux mailing list
> Selinux@xxxxxxxxxxxxx
> To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx.
> To get help, send an email containing "help" to 
> Selinux-request@xxxxxxxxxxxxx.
>

_______________________________________________
Selinux mailing list
Selinux@xxxxxxxxxxxxx
To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx.
To get help, send an email containing "help" to Selinux-request@xxxxxxxxxxxxx.




[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux