C语言 Not understanding setuid



我创建了一个非常简单的脚本:

//#escalate.c - a setuid utility so that we can call shutdown
//# and other things safely without needing root access.  We 
//# do need to:
//#   gcc escalate.c -o escalate.out
//#   sudo chown root:root escalate.out
//#   sudo chmod 4755 escalate.out
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
int main()
{
int status;
status = setuid( 0 );   // you can set it at run time also
system("date > /tmp/date.fil");
return errno;
}

在Raspian上,它在/tmp中生成文件,由根用户拥有,并按预期返回0。

在Ubuntu 22上,它创建了属于ME的文件,返回状态为1。关于setuid(0);,我错过了什么?

我尝试创建,修改权限和所有权等。在Raspian上它像一个魅力,在Ubuntu上它不是。

==================好吧,我自己解决了。在Ubuntu上,我运行的是加密的home,所以它是用nosuid set挂载的。

问题是文件系统已挂载nosuid

相关内容

  • 没有找到相关文章

最新更新