[systemd-devel] [PATCH] selinux: fix selinux check for transient units

Daniel J Walsh dwalsh at redhat.com
Tue Nov 19 05:54:41 PST 2013


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 11/18/2013 05:45 PM, Michal Sekletar wrote:
> On Mon, Nov 18, 2013 at 04:19:20PM -0500, Daniel J Walsh wrote: On
> 11/16/2013 08:10 AM, Lennart Poettering wrote:
>>>> On Thu, 14.11.13 15:43, Daniel J Walsh (dwalsh at redhat.com) wrote:
>>>> 
>>>>> 
>>>>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
>>>>> 
>>>>> On 11/14/2013 12:50 PM, Harald Hoyer wrote:
>>>>>> On 11/05/2013 11:12 PM, Daniel J Walsh wrote:
>>>>>>> On 11/05/2013 12:22 PM, Lennart Poettering wrote:
>>>>>> 
>>>>>>> Ok lets add a check that checks for start on a service labeled
>>>>>>> with the remote process label, then we can add rules like
>>>>>> 
>>>>>>> allow systemd_logind_t self:service start
>>>>>> 
>>>>>>> Or we can make it simpler and have the local end check against
>>>>>>> the init_t process.
>>>>>> 
>>>>>>> allow systemd_logind_t init_t:service start;
>>>>>> 
>>>>>>> Which is probably a better solution, if we have no way of 
>>>>>>> differentiating the services.
>>>>>> 
>>>>>>> Machineid usually runs as init_t now.
>>>>>> 
>>>>>>> systemd-run runs as the label of the process that executes it, 
>>>>>>> Usually unconfined_t, and sysadm_t.
>>>>>> 
>>>>>> 
>>>>>> has any solution been found for this?
>>>>>> 
>>>>>> seems like one is needed for 
>>>>>> https://bugzilla.redhat.com/show_bug.cgi?id=1008864
>>>>>> 
>>>>> 
>>>>> I guess the question I have is do you expect a patch from me?  Or
>>>>> are you guys working on it?  I would go with the checking based on
>>>>> process label.
>>>> 
>>>> I am hoping for a patch for this!
>>>> 
>>>> Thanks,
>>>> 
>>>> Lennart
>>>> 
> 
> This patch adds a new call for SELINUX_SNAPSHOT_ACCESS_CHECK, because I 
> believe this error will happen when a snapshot is created.  Also now pass
> in "system" when doing a system check, if it is doing a service check and
> does not pass in a unit file we will default the target to the label that
> systemd is running with.
> 
>> Hi,
> 
>> Maybe I am missing something but isn't this about transient units in
>> general, i.e. what about StartTransient()? What is going to change in
>> this case after applying this patch? tclass will be "system" since in
>> SELINUX_ACCESS_CHECK you now pass "system" as path and you will set
>> tclass in else branch to "system" which is afaik same as before.
> 
In the current code, passing a unit_file of NULL (StartTransients has a NULL
UnitFile) will indicate that it should do a system check.  My patch is
intended to change this so a NULL UnitFile will indicate that systemd should
check the access between the calling process label and the current process
label for a "service" access.  Where as the SELINUX_ACCESS_CHECK will now pass
a "system" flag to the function to make it do a system check.
>> On the side note, you forgot to define SELINUX_SNAPSHOT_ACCESS_CHECK as
>> do {} while (false) in case if we don't HAVE_SELINUX.
> 
>> It might be the case that I completely misunderstood what's this about,
>> in such case ignore this email.
> 
>> Michal
> 

Thanks added  SELINUX_SNAPSHOT_ACCESS_CHECK as do {} while (false) in case if
we don't HAVE_SELINUX.

Updated patch.

<snip>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.15 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iEYEARECAAYFAlKLbaEACgkQrlYvE4MpobPMMACeNeyrC3OBhx99DZ+JzOtV1ykZ
PvMAoJfiYBoJRBFgh2+FyOV+tNTuojNU
=9I5G
-----END PGP SIGNATURE-----
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Fix-SELinux-check-for-snapshot-and-transitent-unit-c.patch
Type: text/x-patch
Size: 4312 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/systemd-devel/attachments/20131119/a4f0d6eb/attachment.bin>


More information about the systemd-devel mailing list