[systemd-devel] [PATCH v2] selinux: fix missing SELinux unit access check

HATAYAMA Daisuke d.hatayama at jp.fujitsu.com
Thu Jun 18 19:58:23 PDT 2015


From: Lennart Poettering <lennart at poettering.net>
Subject: Re: [systemd-devel] [PATCH v2] selinux: fix missing SELinux unit access check
Date: Thu, 18 Jun 2015 13:30:43 +0200

> On Thu, 18.06.15 18:29, HATAYAMA Daisuke (d.hatayama at jp.fujitsu.com) wrote:
> 
>> >>          int r;
>> >>  
>> >>          STRV_FOREACH(i, units) {
>> >> -                u = manager_get_unit(m, *i);
>> >> +                r = manager_load_unit(m, *i, NULL, error, &u);
>> >> +                if (r < 0)
>> >> +                        return r;
>> >>                  if (u) {
>> >> +                        if (u->load_error != 0)
>> >> +                                return u->load_error;
>> >>                          r = mac_selinux_unit_access_check(u, message, permission, error);
>> >>                          if (r < 0)
>> >>                                  return r;
>> > 
>> > I commented on the issue now in github, could you please follow up
>> > there?
>> > 
>> > https://github.com/systemd/systemd/pull/145
>> > 
>> 
>> Thanks for your reviewing. However, unfortunately, I cannot use github
>> for some reason for now. So, please let me discuss in the mailing
>> list. I'm sorry for the inconvenience.
>> 
>> > I don't think we should check this, it doesn't matter if we managed
>> > to successfully load the unit or not, we should still allow access
>> > either way.
>> 
>> Sorry, I don't understand well. Do you mean removing this SELinux unit
>> access check? If so, it means that current logic since the following
>> commit, is changed, right?
> 
> No, I meant tjust the u->load_error != 0 check, and the one line
> following it. The SELinux check following that should stay.
> 

I see.

> I guess this related to the question you raised in the other thread:
> Unit objects may or may not have a unit file on disk attached, and
> that's completely OK. We should do the access check on the label of
> the unit file if we have one, and otherwise fall back to some more
> generic selinux access check.
> 
> Specifically that means here that u->load_error is nothing we need to
> explicitly check, as mac_selinux_unit_access_check() already has a
> generic fallback if the unit doesn't have a file associated. 
> 
> Long story short: just remove the two lines I pointed out, and leave
> the mac_selinux_unit_access_check() in place and all should be good.
> 

I see. I'll post v3 patch soon.

Also, I'll include in the v3 patch set, a patch related to the
question I raised in
http://lists.freedesktop.org/archives/systemd-devel/2015-June/033104.html.

--
Thanks.
HATAYAMA, Daisuke



More information about the systemd-devel mailing list