[systemd-devel] [PATCH] condition, man: Add support for ConditionSecurity=smack

Karol Lewandowski k.lewandowsk at samsung.com
Tue May 7 05:29:48 PDT 2013


On 05/07/2013 01:32 PM, Lennart Poettering wrote:
> On Tue, 07.05.13 13:21, Karol Lewandowski (k.lewandowsk at samsung.com) wrote:
> 
> Heya,
> 
> Hmm, does that directory always exist? Or only if AppArmor is actually
> runtime enabled?

/sys/fs/smackfs is only registered when smack lsm is actually enabled:

  https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/security/smack/smackfs.c?id=e93072374112db9dc86635934ee761249be28370#n2179

> I.e. this check should ideally only return true if SMACK is not only
> built into the kernel, but actually really enabled during
> runtime. That's what the SELinux check does and what the most useful
> semantics are.

Ok, I see that libselinux will consider selinux to be disabled also when
policy is not loaded:

  http://userspace.selinuxproject.org/trac/browser/libselinux/src/enabled.c#L12

I guess we could do something similar (inspect /proc/self/attr/current)
but honestly, I don't think it's really needed.  Rafał, could you correct me
if I'm wrong?

Cheers

> 
>> Signed-off-by: Karol Lewandowski <k.lewandowsk at samsung.com>
>>
>> diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
>> index 49103da..256c813 100644
>> --- a/man/systemd.unit.xml
>> +++ b/man/systemd.unit.xml
>> @@ -984,8 +984,9 @@
>>                                  may be used to check whether the given
>>                                  security module is enabled on the
>>                                  system.  Currently the only recognized
>> -                                values are <varname>selinux</varname>
>> -                                and <varname>apparmor</varname>.
>> +                                values are <varname>selinux</varname>,
>> +                                <varname>apparmor</varname> and
>> +                                <varname>smack</varname>.
>>                                  The test may be negated by prepending
>>                                  an exclamation
>>                                  mark.</para>
>> diff --git a/src/core/condition.c b/src/core/condition.c
>> index 4aa5530..16cae6d 100644
>> --- a/src/core/condition.c
>> +++ b/src/core/condition.c
>> @@ -164,6 +164,8 @@ static bool test_security(const char *parameter) {
>>  #endif
>>  	if (streq(parameter, "apparmor"))
>>  		return access("/sys/kernel/security/apparmor/", F_OK) == 0;
>> +	if (streq(parameter, "smack"))
>> +		return access("/sys/fs/smackfs", F_OK) == 0;
>>          return false;
>>  }
>>  
> 
> 
> Lennart
> 



More information about the systemd-devel mailing list