[systemd-devel] [PATCH] Add SELinuxContext configuration item
Daniel J Walsh
dwalsh at redhat.com
Fri Jan 3 08:48:49 PST 2014
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 01/03/2014 09:16 AM, Michael Scherer wrote:
> Le vendredi 03 janvier 2014 à 12:23 +0000, "Jóhann B. Guðmundsson" a écrit
> :
>> On 01/03/2014 10:56 AM, Michael Scherer wrote:
>>> Le vendredi 03 janvier 2014 à 00:58 +0000, "Jóhann B. Guðmundsson" a
>>> écrit :
>>>> On 12/28/2013 01:30 PM, Lennart Poettering wrote:
>>>>> On Fri, 27.12.13 23:26,misc at zarb.org (misc at zarb.org) wrote:
>>>>>
>>>>>>> From: Michael Scherer<misc at zarb.org>
>>>>>>>
>>>>>>> This permit to let system administrators decide of the domain
>>>>>>> of a service. This can be used with templated units to have
>>>>>>> each service in a différent domain ( for example, a per
>>>>>>> customer database, using MLS or anything ), or can be used to
>>>>>>> force a non selinux enabled system (jvm, erlang, etc) to start
>>>>>>> in a different domain for each service.
>>>>> Hmm, so far (as I understood it) the SELinux guys always wanted to
>>>>> make sure that label configuration stays in the the selinux
>>>>> database and nowhere else.
>>>> Right and if you add this you need to add something for the other
>>>> security solutions as well ( apparmor etc ).
>>> I do not see why we need to equally support all MAC frameworks for
>>> each change we do.
>>
>> Because people will start to expect being able to configure that there.
>
> So they can as well start to fill bug report and start to contribute code
> for this.
>
> We didn't added detection of all security framework for ConditionSecurity
> at the first patch, it was added later as people expressed interest ( hence
> the lack of tomoyo ), so I expect the same to be done for security
> frameworks. Also, having done my homework, IMA do not have the concept of
> domain, apparmor has profiles, and I have no idea for smack, so I prefer to
> defer integration to people who know, based on their use cases.
>
>>> And while I am familiar enough with apparmor to create a equivalent
>>> setting ( and plan to do ), I have no idea on how to translate the
>>> concept for smack, ima and tomoyo.
>>>
>>> In fact, the mere fact that tomoyo is not handled at all already show
>>> that we do treat all security framework as equal.
>>
>> How do you suppose we deal with man pages if selinux is not installed but
>> still refer to this.
>
> In the same way we do for all #ifdef feature. For example, for PAMName, the
> documentation is always present.
>
>> Wont users also need to check if selinux is enabled or not in the unit
>> file?
>
> I would rather do it in the C code, no need to have everybody asking for
> it.
>
>> Should systemd warn users if selinux is not installed,enabled and fail
>> or?
>
> It all depend. Either we are consistent with the other settings ( ie,
> setting a syscall filter will fail if not supported on the kernel ), and so
> fail, or we decide that selinux is special and we should silently ignore
> failure if it cannot be applied.
>
> I choose the first one for the first patch, but adding a conditional would
> be trivial if we decide to silently ignore if the setting cannot be
> applied.
>
> The main issue being of course that people who disable selinux do not
> always properly disable it ( ie using permissive rather than selinux=0 ).
>
>
>
>>>
>>>> This introduces yet another place for administrators to look at
>>>> while debugging problems so the question to ask here is.
>>>>
>>>> Is adding this ability to unit files the right way to solve what's
>>>> trying to be solved here?
>>> As Dan said, yes.
>>
>> "I would prefer if app writers do not start hard coding SELinux contexts
>> into the unit file"
>>
>> I hardly call that solid yes and this is what will start taking place if
>> this is introduced into the unit files.
>
> Then what about : "I like this patch, and I have seen people saying we have
> this capability in RHEL7 :^("
>
> We should separate the concern about "people in distribution/upstream using
> it if offered" and the rest of the world. Distribution policy is a matter
> of the distribution. If Fedora wish to forbid this unless there is a good
> use case, that's up to Fedora to do it, and to have it integrated into
> rpmlint or anything.
>
> I must also say that I didn't really see a rush from application developers
> to add selinux support or anything, and that people can already distribute
> policy along their application, with all support problem this could create
> for distributions. So we already have the problem, adding the setting in
> systemd wouldn't change much.
>
>>>
>>> However, as said, there is some case where the approach of making the
>>> transition based on the executed filename is not sufficient. For
>>> example, the erlang vm, the jvm, etc, because each software will run
>>> in the same domain, in different processes, because that's always the
>>> same jvm being used. See the bug I mentioned before.
>>>
>>> Now, if you have a more precise feedback and/or a better proposal,
>>
>> Add this to the daemon startup itself ( the confile or the code ) and or
>> use runcon in an exec start pre section to set this up.
>
> Runcon cannot be used in ExecStartPre, that's like "su". So you have to run
> it in ExecStart, and this make things harder for sysadmins, and doesn't
> look like in line with systemd philosophy since that's replacing
> configuration by code.
>
> On the integration point of view, that mean that anyone wanting to use this
> on a unit provided by a vendor have to duplicate the command line in a
> custom unit and/or using dropin configuration, and add runcon ( along
> proper quoting ). This also mean that a tool to read/write unit files would
> have to understand the command line of runcon if they want to provides a
> higher level overview, or just not understand it.
>
> So using runcon is just a workaround, and forking 1 process just to run 2
> selinux functions ( as done by the patch ) seems like a waste to me. It
> would also mean that we need to have runcon in a chroot/container if we
> decide to go this way, unlike the approach of doing it with system who
> doesn't need it.
>
>
>> In anycase Lennart decides this to me this seems like a workaround being
>> put in systemd for a limitation in selinux or the concept there of with
>> the added complexity for administrators.
>
> yes, that's put in systemd because placing this in every other possible
> place would be duplication. As i said, we could add this to jvm, to erlang,
> etc, but it would scale ( ie, we would have more place to look for
> configuration )
>
Well thinking about this again, I think still to the single label. Lets not
break the field up into multiple labels.
And not make it SELinux specific. Maybe the field could be SecurityLabel:
That would allow smack to also use the field and any other LSM that used a
labeling system.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
iEYEARECAAYFAlLG6fEACgkQrlYvE4MpobNgkACgotbJeCzZcZ4mJ3D5G11NtEoY
3UQAniChzbarSjvf6pmhdNl+2rWLnuZc
=gvT5
-----END PGP SIGNATURE-----
More information about the systemd-devel
mailing list