我创建了一个非常简单的脚本:
//#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。
在Ubuntu22上,它创建了我拥有的文件,返回状态为1。关于setuid(0);,我遗漏了什么?
我试着创建,修改权限和所有权等等。在拉斯宾,它的工作就像一个魅力,而在Ubuntu,它没有。
==================我自己解决了。在Ubuntu上,我运行的是一个加密的家庭,所以它用nosuid集挂载。
发布于 2022-11-23 20:06:28
问题是文件系统被挂载了
https://stackoverflow.com/questions/74552164
复制相似问题