[apparmor] Bug#735470: Fwd: Bug#735470: Could be implemented centrally with a dpkg trigger instead of requiring every package shipping an apparmor file to use dh_apparmor

John Johansen john.johansen at canonical.com
Sat Jan 18 00:34:15 UTC 2014

On 01/17/2014 04:20 PM, Seth Arnold wrote:
> [I've trimmed the Cc:, it didn't seem worthwhile to keep all this in the
> Debian BTS in addition to the usual mail list archives.]
> On Thu, Jan 16, 2014 at 04:15:35PM -0800, John Johansen wrote:
>> It does not at the moment consider what is loaded into the kernel, but only
>> works off of the cache time stamps. For older kernels there really isn't
>> a way to check if what is loaded in the kernel is up to date. However
>> for 3.12+ kernels we could leverage the policy dir to compare timestamps
>> or if policy hashing is enabled we could compare to the sha1 stored for
>> each profile that is loaded.
>> we can of course also change the letter chosen
>> @@ -873,6 +878,14 @@
>>  		if (!skip_read_cache &&
>>  		    stat(cachename, &stat_bin) == 0 &&
>>  		    stat_bin.st_size > 0 && (mru_t_cmp(stat_bin.st_mtim))) {
>> +			if (update_only) {
>> +				/* cache hit means profile is not out of
>> +				 * date so don't load
>> +				 */
>> +				if (show_cache)
>> +					PERROR("skipping load of up to date: %s\n", cachename);
>> +				goto out;	/* retval already 0 */
>> +			}
>>  			if (show_cache)
>>  				PERROR("Cache hit: %s\n", cachename);
>>  			retval = process_binary(option, cachename);
> I don't like this much; why wouldn't -u be the default?
> I know that /etc/apparmor/parser.conf can be used to set default options,
> but I like that even less -- the parser shouldn't behave differently from
> system to system.
> Most of the time --replace is the right option. Most of the time
> --write-cache is the right option. And once we're happy with the
> implementation of -u, it should probably be used for every --replace.
> So why expose it to the user? Why not just do it?
Because as the patch stands, -u prevents loading of profiles on boot/
if for some reason a profile isn't loaded and has a cache file.

Oh look the timestamp is good, so I can skip loading it!

We could invert the flag and use that instead for anything that is
supposed to load a profile regardless of whether a cache file exists.
But until the kernel load picks up introspection, this is the best we
can do.

Please by all means add kernel introspection. I don't have time atm
but if you want to pick that up as part of your init rework I'd be

More information about the AppArmor mailing list