mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Chris Wright <chrisw@osdl.org>
To: Lee Revell <rlrevell@joe-job.com>
Cc: Andrew Morton <akpm@osdl.org>, Chris Wright <chrisw@osdl.org>,
	Jody McIntyre <realtime-lsm@modernduck.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	torbenh@gmx.de, "Jack O'Quin" <joq@io.com>
Subject: Re: [PATCH] Realtime LSM
Date: Fri, 8 Oct 2004 14:45:39 -0700	[thread overview]
Message-ID: <20041008144539.K2357@build.pdx.osdl.net> (raw)
In-Reply-To: <1097269108.1442.53.camel@krustophenia.net>; from rlrevell@joe-job.com on Fri, Oct 08, 2004 at 04:58:29PM -0400

* Lee Revell (rlrevell@joe-job.com) wrote:
> +  # sysctl -w security/realtime/any=0
> +  # sysctl -w security/realtime/gid=29
> +  # sysctl -w security/realtime/mlock=1
> +

I think these should move to sysfs.

> +Jack O'Quin, joq@joq.us
> diff -ruN -X /home/joq/bin/kdiff.exclude linux-2.6.8.1/include/linux/sysctl.h linux-2.6.8.1-rt02/include/linux/sysctl.h
> --- linux-2.6.8.1/include/linux/sysctl.h	Sat Aug 14 05:55:33 2004
> +++ linux-2.6.8.1-rt02/include/linux/sysctl.h	Sun Oct  3 10:56:16 2004
> @@ -61,7 +61,14 @@
>  	CTL_DEV=7,		/* Devices */
>  	CTL_BUS=8,		/* Busses */
>  	CTL_ABI=9,		/* Binary emulation */
> -	CTL_CPU=10		/* CPU stuff (speed scaling, etc) */
> +	CTL_CPU=10,		/* CPU stuff (speed scaling, etc) */
> +	CTL_SECURITY=11         /* Security modules */
> +};
> +
> +/* CTL_SECURITY names: */
> +enum
> +{
> +	SECURITY_REALTIME=1	/* Realtime LSM */
>  };

Without adding this extra bit.

> diff -ruN -X /home/joq/bin/kdiff.exclude linux-2.6.8.1/security/Kconfig linux-2.6.8.1-rt02/security/Kconfig
> --- linux-2.6.8.1/security/Kconfig	Sat Aug 14 05:55:47 2004
> +++ linux-2.6.8.1-rt02/security/Kconfig	Sun Oct  3 10:56:17 2004
> @@ -84,6 +84,17 @@
>  	  
>  	  If you are unsure how to answer this question, answer N.
>  
> +config SECURITY_REALTIME
> +	tristate "Realtime Capabilities"
> +	depends on SECURITY && SECURITY_CAPABILITIES!=y

Capabilities can be disabled on boot command line.

> --- linux-2.6.8.1/security/realtime.c	Wed Dec 31 18:00:00 1969
> +++ linux-2.6.8.1-rt02/security/realtime.c	Mon Oct  4 21:35:41 2004
> +static int any = 0;			/* if TRUE, any process is realtime */

unecessary init to 0

> +MODULE_PARM(any, "i");

please use module_param (bonus, you get free entry on command line when
non-modular, and entry in /sysfs if you want).

> +MODULE_PARM_DESC(any, " grant realtime privileges to any process.");
> +
> +static int gid = -1;			/* realtime group id, or NO_GROUP */
> +MODULE_PARM(gid, "i");

module_param.

> +MODULE_PARM_DESC(gid, " the group ID with access to realtime privileges.");
> +
> +static int mlock = 1;			/* enable mlock() privileges */
> +MODULE_PARM(mlock, "i");

module_param.

> +MODULE_PARM_DESC(mlock, " enable memory locking privileges.");
> +
> +/* helper function for testing group membership */
> +static inline int gid_ok(int gid, int e_gid) {
> +	int i;
> +	int rt_ok = 0;
> +
> +	if (gid == -1)
> +		return 0;
> +
> +	if ((gid == e_gid) || (gid == current->gid))
> +		return 1;
> +
> +	get_group_info(current->group_info);
> +	for (i = 0; i < current->group_info->ngroups; ++i) {
> +		if (gid == GROUP_AT(current->group_info, i)) {
> +			rt_ok = 1;
> +			break;
> +		}
> +	}

why not in_group_p?

> +	put_group_info(current->group_info);
> +
> +	return rt_ok;
> +}
> +
> +int realtime_bprm_set_security(struct linux_binprm *bprm)
> +{
> +	/* Copied from security/commoncap.c: cap_bprm_set_security()... */
> +	/* Copied from fs/exec.c:prepare_binprm. */
> +	/* We don't have VFS support for capabilities yet */
> +	cap_clear(bprm->cap_inheritable);
> +	cap_clear(bprm->cap_permitted);
> +	cap_clear(bprm->cap_effective);
> +
> +	/*  If a non-zero `any' parameter was specified, we grant
> +	 *  realtime privileges to every process.  If the `gid'
> +	 *  parameter was specified and it matches the group id of the
> +	 *  executable, of the current process or any supplementary
> +	 *  groups, we grant realtime capabilites.
> +	 */
> +
> +	if (any || gid_ok(gid, bprm->e_gid)) {
> +		cap_raise(bprm->cap_effective, CAP_SYS_NICE);
> +		cap_raise(bprm->cap_permitted, CAP_SYS_NICE);
> +		if (mlock) {
> +			cap_raise(bprm->cap_effective, CAP_IPC_LOCK);
> +			cap_raise(bprm->cap_permitted, CAP_IPC_LOCK);
> +			cap_raise(bprm->cap_effective,
> +				  CAP_SYS_RESOURCE);
> +			cap_raise(bprm->cap_permitted,
> +				  CAP_SYS_RESOURCE);
> +		}
> +	}

Maybe it would be better to call cap_bprm_set_security first, then or in
the bits you care about.  That way you don't have to worry about any changes
over there.

thanks,
-chris
-- 
Linux Security Modules     http://lsm.immunix.org     http://lsm.bkbits.net

  parent reply	other threads:[~2004-10-08 21:46 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-09-12  5:46 Lee Revell
2004-09-12 13:58 ` James Morris
2004-09-12 14:05   ` James Morris
2004-09-12 19:03   ` Lee Revell
2004-09-12 19:16   ` Jack O'Quin
2004-09-16  2:31     ` Jody McIntyre
2004-09-16  4:48       ` Jack O'Quin
2004-09-16 15:51         ` Jody McIntyre
2004-09-16 18:27           ` Jack O'Quin
2004-09-17  7:08             ` torbenh
2004-09-17 20:01               ` Jack O'Quin
2004-09-20 20:20                 ` Jody McIntyre
2004-09-12 15:50 ` Kronos
2004-09-13 23:22   ` Lee Revell
2004-09-13 23:34     ` Chris Wright
2004-09-14  2:18       ` Lee Revell
2004-09-14  3:01         ` William Lee Irwin III
2004-09-14  3:46           ` Lee Revell
2004-09-14  3:50             ` William Lee Irwin III
2004-09-20 20:23 ` Jody McIntyre
2004-09-21  0:11   ` Jack O'Quin
2004-09-21  7:52     ` torbenh
2004-09-30 21:14   ` Jody McIntyre
2004-09-30 21:53     ` Lee Revell
2004-10-01  0:37       ` Jack O'Quin
2004-10-01  1:20         ` Chris Wright
2004-10-01  4:05           ` Jack O'Quin
2004-10-01 20:40             ` Lee Revell
2004-10-01 21:23               ` Chris Wright
2004-10-01 22:19                 ` Lee Revell
2004-10-01 22:27                   ` Chris Wright
2004-10-01 22:32                     ` Lee Revell
2004-10-01 22:44                       ` Chris Wright
2004-10-05  5:55                     ` Jack O'Quin
2004-10-07 23:51                       ` Lee Revell
2004-10-08 20:58                         ` Lee Revell
2004-10-08 21:21                           ` Andrew Morton
2004-10-08 21:22                             ` Lee Revell
2004-10-08 21:25                             ` Lee Revell
2004-10-08 21:45                           ` Chris Wright [this message]
2004-10-08 21:49                             ` Lee Revell
2004-10-08 21:52                               ` Chris Wright
2004-10-08 22:05                                 ` Lee Revell
2004-10-08 22:09                                   ` Chris Wright
2004-10-08 22:19                                   ` Chris Wright
2004-10-08 22:24                                     ` Chris Wright
2004-10-08 23:05                                       ` Lee Revell
2004-10-08 23:12                                         ` Chris Wright
2004-10-08 23:15                                           ` Lee Revell
2004-10-08 23:20                                             ` Chris Wright
2004-10-09  1:01                                       ` Jack O'Quin
2004-10-09  5:16                                         ` Chris Wright
2004-10-09 16:16                                           ` Jack O'Quin
2004-10-09 19:11                                             ` Chris Wright
2004-10-09 20:27                                               ` Jack O'Quin
2004-10-09 22:53                                                 ` Chris Wright
2004-10-22 23:59                                                   ` Jack O'Quin
2004-10-23  0:36                                                     ` Lee Revell
2004-10-23  1:23                                                     ` Jack O'Quin
2004-10-23  1:27                                                       ` Lee Revell
2004-10-23  5:08                                                         ` Jack O'Quin
2004-10-23 18:17                                                           ` Jack O'Quin
2004-10-25  2:03                                                             ` Jack O'Quin
2004-10-23 20:04                                                     ` Chris Wright
2004-10-05  4:00     ` Jack O'Quin
2004-10-15  1:55     ` Rusty Russell
2004-10-15  2:08       ` Lee Revell
     [not found] <87acu0p0nw.fsf@sulphur.joq.us>
2004-11-09 22:39 ` Jack O'Quin
2004-11-20  2:44   ` Lee Revell
2004-11-20  3:55   ` Lee Revell
2004-11-20  6:19     ` Jack O'Quin
2004-11-20  6:43       ` Lee Revell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20041008144539.K2357@build.pdx.osdl.net \
    --to=chrisw@osdl.org \
    --cc=akpm@osdl.org \
    --cc=joq@io.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=realtime-lsm@modernduck.com \
    --cc=rlrevell@joe-job.com \
    --cc=torbenh@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®