Re: Programmatic domain change to unprivileged role

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

 



On 08/21/2013 10:22 AM, Stephen Smalley wrote:
> On 08/20/2013 04:05 PM, Dan Pou wrote:
>> On Fri, Aug 09, 2013 at 08:51:17AM -0400, Stephen Smalley wrote:
>>> On 08/08/2013 03:58 PM, Dan Pou wrote:
>>>> Thanks for the suggestion about strace, that is pointing to the problem.
>>>> I need to check the policy rules I have been adding to see how I got
>>>> here:
>>>>
>>>> write(3, "user_u:sysadm_r:sysadm_t:s0\0", 28) = -1 EINVAL (Invalid
>>>> argument)
>>>>
>>>> This is the second write.  When I test the same code with sshd_t to
>>>> <username> transition, I get one write, with a successful return of
>>>> default_context_with_level.
>>>>
>>>> Thanks, this gives me something to go off of.
>>>
>>> Could be that security_compute_user() (which writes to
>>> /sys/fs/selinux/user) is getting an error or no results and thus the
>>> code is trying to fall back to the failsafe context (as specified in
>>> /etc/selinux/$SELINUXTYPE/contexts/failsafe_context), which isn't legal
>>> for user_u.
>>> The failsafe is to permit root / admin logins under such a situation.
>>>
>>> I'd look to see what the result of writing to /sys/fs/selinux/user was
>>> and what was written to it in the strace output.  You can also directly
>>> call security_compute_user via the compute_user tool under
>>> libselinux/utils if you obtain and build the sources yourself.  That
>>> utility doesn't appear to get included in the libselinux-utils rpm though.
>>>
>>>
>>
>> I addeded the system_r:my_daemon_t:s0 user_r:user_t:s0 role transition
>> to /etc/selinux/mls/contexts/default_contexts.
>> This got me to actually writing user_u:user_r:user_t:s0 for setexeccon,
>> but I am still failing.  It looks like it is failing in the
>> selinux_trans_to_raw_context.  I was thinking this was an issue with
>> declaring the transition.
>> What steps do I need to setup a role_transition and/or type_transistion?
>>
>> I tried adding the following to no avail:
>> type_transition my_daemon_t non_security_file_type:process user_t;
>> Do I need more type_transitions, or addition role_transition
>> declarations (aside from /etc/selinux/mls/contexts/default_context)?
>>
>> Other info:
>> The daemon (without SELinux) just sets the euid/egid to match the user
>> requesting the job. So I inserted calls to
>> getseuserbyname
>> get_default_context_with_rolelevel or get_default_context_with_level
>> then setexeccon
>> the returned context before execve'ing.
> 
> If you are getting to the point of setexeccon() with the correct
> security context, then you are past the point of any type transition or
> role transition rules.  The transition rules are just to define defaults
> in the absence of an explicit setexeccon(); it is the allow rules that
> govern what is permitted.  You do need both role allow and TE allow
> rules in your policy, of course.  Did you add the interface calls that I
> listed earlier for your daemon domain?  However, lack of permission
> there should show up as an AVC denial; you might re-test with dontaudit
> rules stripped to confirm (semodule -DB).
> 
> If the error truly lies during the trans_to_raw_context, then maybe you
> have a problem in your label translation daemon?  Are you running
> mcstransd or something else?  What happens if you simply stop the label
> daemon (it isn't required for operation; it just provides translation of
> MLS labels to and from more human-readable form and deals with complex
> label encodings ala the old MITRE label encodings format).

Also, in addition to the interfaces I listed earlier, you likely need
mls_process_set_level(X_t)
to permit the daemon to set the current/low level.



--
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.




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

  Powered by Linux