繁体   English   中英

linux setgid()权限错误

[英]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_proccap_to_text列出进程的功能

问题3:保存的set-group-id是什么意思

答案3:成功使用sete*id()调用之一后,它将在保存的ID中记录旧的。 这使您可以还原为已保存的值,因为这是允许使用set调用更改为ID之一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM