set*gid()
除极少数情况外,各种系统调用都需要特权来更改组。将主要组更改为进程的补充组之一似乎不是其中之一,这意味着例如newgrp
/ sg
命令需要提升特权才能切换主要组。
是否有一个原因,为什么setgid()
/ setegid()
/ setregid()
/ setfsgid()
不允许没有PRIVS切换到补充组?如果是这样,原因是什么?
newgrp/sg
指的是帐户数据库,而不是流程的补充组列表。
setgid()
允许您离开组的成员身份(这将是安全问题),但是同样,您也可以使用与上述相同的setgid可执行技巧来做到这一点,并且您的gid通常也位于您的补充列表中(initgroups(3)
为此只需要一个gid参数)。
/usr/bin/env
具有setgid权限的副本)。