[英]linux setgid() permission error
因此,用户具有主要组,并且可能属于其他补充组。
假设用户的主要组是G,补充组G + 1,G + 2
用户A运行一个程序,可以将组ID更改为G + 1
默认情况下,我知道组ID将设置为G,但是当我在程序以下运行时抛出错误。错误:不允许进行操作,其中4是用户所属的补充组。
根据《手册错误说明》,呼叫进程没有特权(不具有CAP_SETGID功能),并且gid与呼叫进程的真实组ID或保存的set-group-ID不匹配。
如何列出流程的能力?
保存的set-group-id是什么意思?
int
main ()
{
int x = 0;
char *error = "erroris";
x = setgid (4);
printf ("%d", x);
perror (error);
}
一个问题中有太多问题!
问题1:无法使用setgid
更改为其他组ID
失败原因:用户不是root用户,用户不是euid 0
,用户没有CAP_SETGID
问题2:如何列出流程的功能
答案2:使用cap_get_proc和cap_to_text列出进程的功能
问题3:保存的set-group-id是什么意思
答案3:成功使用sete*id()
调用之一后,它将在保存的ID中记录旧的。 这使您可以还原为已保存的值,因为这是允许使用set调用更改为ID之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.