On Sun, Jun 03, 2007 at 11:28:59PM +0900, Scott McNab wrote:
> irb(main):001:0> `groups`
> => "root bin daemon sys adm disk wheel\n"
> irb(main):002:0> Process::GID.change_privilege(502)
> => 502
> irb(main):003:0> Process::UID.change_privilege(502)
> => 502
> irb(main):004:0> `groups`
> => "scott root bin daemon sys adm disk wheel\n"
> irb(main):005:0>
> 
> * Notice here how the process has correctly assumed the privileges of
> group 'scott', but is missing the 'testdev' group.

Try using Process.initgroups

> Note: if I do the same thing using shell commands I get the correct
> result as expected:
> 
> [root@localhost ~]# groups
> root bin daemon sys adm disk wheel
> [root@localhost ~]# su - scott
> [scott@localhost ~]$ groups
> scott testdev
> [scott@localhost ~]$

If you look at the source code to su, you'll probably find it calls
initgroups() somewhere.

Regards,

Brian.