Subject: [patch] ADJ_OFFSET_SS_READ and capabilities

Hi Roman, John,

ADJ_OFFSET_SS_READ is a read-only operation. Therefore, it seems
reasonable not to require any capability (as is the case when 'modes'
is zero. See the patch below. Does this change seem reasonable?

Cheers,

Michael

--- linux-2.6.26-rc5/kernel/time/ntp.c 2008-06-13 11:16:51.000000000 +0200
+++ linux-2.6.26-rc5-p/kernel/time/ntp.c 2008-06-22 07:31:43.000000000 +0200
@@ -281,7 +281,8 @@
int result;

/* In order to modify anything, you gotta be super-user! */
- if (txc->modes && !capable(CAP_SYS_TIME))
+ if (txc->modes && txc->modes != ADJ_OFFSET_SS_READ &&
+ !capable(CAP_SYS_TIME))
return -EPERM;

/* Now we validate the data before disabling interrupts */


2008-06-30 22:08:14

by john stultz

[permalink] [raw]
Subject: Re: [patch] ADJ_OFFSET_SS_READ and capabilities


On Sun, 2008-06-22 at 09:32 +0200, Michael Kerrisk wrote:
> Hi Roman, John,
>
> ADJ_OFFSET_SS_READ is a read-only operation. Therefore, it seems
> reasonable not to require any capability (as is the case when 'modes'
> is zero. See the patch below. Does this change seem reasonable?
>
> Cheers,
>
> Michael
>
> --- linux-2.6.26-rc5/kernel/time/ntp.c 2008-06-13 11:16:51.000000000 +0200
> +++ linux-2.6.26-rc5-p/kernel/time/ntp.c 2008-06-22 07:31:43.000000000 +0200
> @@ -281,7 +281,8 @@
> int result;
>
> /* In order to modify anything, you gotta be super-user! */
> - if (txc->modes && !capable(CAP_SYS_TIME))
> + if (txc->modes && txc->modes != ADJ_OFFSET_SS_READ &&
> + !capable(CAP_SYS_TIME))
> return -EPERM;
>
> /* Now we validate the data before disabling interrupts */
>


Hey Michael,
This seems like an ok change, but we'd first want to fix the issue you
pointed out earlier which would make sure adjtimex() read calls don't
cause side effects.

thanks
-john


2008-07-21 10:38:18

by Michael Kerrisk

[permalink] [raw]
Subject: Re: [patch] ADJ_OFFSET_SS_READ and capabilities

On Tue, Jul 1, 2008 at 12:07 AM, john stultz <[email protected]> wrote:
>
> On Sun, 2008-06-22 at 09:32 +0200, Michael Kerrisk wrote:
>> Hi Roman, John,
>>
>> ADJ_OFFSET_SS_READ is a read-only operation. Therefore, it seems
>> reasonable not to require any capability (as is the case when 'modes'
>> is zero. See the patch below. Does this change seem reasonable?
>>
>> Cheers,
>>
>> Michael
>>
>> --- linux-2.6.26-rc5/kernel/time/ntp.c 2008-06-13 11:16:51.000000000 +0200
>> +++ linux-2.6.26-rc5-p/kernel/time/ntp.c 2008-06-22 07:31:43.000000000 +0200
>> @@ -281,7 +281,8 @@
>> int result;
>>
>> /* In order to modify anything, you gotta be super-user! */
>> - if (txc->modes && !capable(CAP_SYS_TIME))
>> + if (txc->modes && txc->modes != ADJ_OFFSET_SS_READ &&
>> + !capable(CAP_SYS_TIME))
>> return -EPERM;
>>
>> /* Now we validate the data before disabling interrupts */
>>
>
>
> Hey Michael,
> This seems like an ok change, but we'd first want to fix the issue you
> pointed out earlier which would make sure adjtimex() read calls don't
> cause side effects.

John, Roman,

Are you pushing this into 2.6.27-rc1?

Cheers,

Michael

--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
man-pages online: http://www.kernel.org/doc/man-pages/online_pages.html
Found a bug? http://www.kernel.org/doc/man-pages/reporting_bugs.html