switching between groups
Adil Katchi
AdilK at sandvine.com
Wed Jan 7 09:52:55 PST 2004
Unfortunately, newgrp(1) would not work, because it calls setgroups, which
for some weird reason, needs the caller to be a superuser. Isn't there a
function that sets the groups (like setgroups) of the current process where
you don't have to be a superuser? To maintain security, that function could
just check that the groups being set by setgroups are a subset of the
caller's set. Does a function like that already exist? If not, how come?
Thanks,
Adil
-----Original Message-----
From: Bruce M Simpson [mailto:bms at spc.org]
Sent: Tuesday, January 06, 2004 1:12 PM
To: Adil Katchi
Cc: 'freebsd-hackers at freebsd.org'
Subject: Re: switching between groups
On Tue, Jan 06, 2004 at 11:14:06AM -0500, Adil Katchi wrote:
> I was just wondering if anyone has any ideas how it's possible for a user
> that belongs to multiple groups to somehow limit his or her own
capabilities
> by using only one of the n groups that they belong to and be able to
switch
> between these groups? For example, if userA belongs to groupA, groupB and
> groupC, can userA enter a mode that would force it to only belong to
groupA
> (or groupB, or groupC)? UserA whould be able to switch between these
groups
> and back to normal (ie. belong to all groups).
newgrp(1) could be hacked to do this fairly easily. Currently it preserves
supplemental group memberships. An option to discard supplementals could
be added.
Or just call setgroups() with a no-op group-list vector and then setgid()/
setegid() from within your application.
BMS
More information about the freebsd-hackers
mailing list