[英]Running a C program as root user programatically
我需要在“ / Library / Preferences /” Mac目录下创建一个文件。 但是在Lion中,只有root用户才对该目录具有写权限。
#include <stdio.h>
int main()
{
FILE *fileHandle = NULL;
fileHandle = fopen("/Library/Preferences/v.test", "w");
fclose(fileHandle);
return 0;
}
如果我以sudo ./a.out
运行此代码,则此行代码有效。 我想通过编程来做同样的事情。
谢谢!
可以将可执行文件设置为setuid吗? 只需将其chown
root
并chmod u+s
。
您可以从C调用setuid(0)
将用户ID更改为root。 该程序将需要由root拥有并设置为允许的setuid:
chown root:root a.out
chmod u+s a.out
我不认为有办法实现这一目标(即在执行之前不手动授予程序某些特殊权限),而且最好没有。 任何此类方法都将是主要的OS安全漏洞。 如果您可以编写具有root特权的程序,那么任何恶意软件制造商也可以...
这不是一件容易的事,但仍然可行。 从Apple搜索SMJobBless示例。 通常,它将设置启动守护进程,该守护进程在root拥有的启动实例中运行。
当要进行此类特权工作时,要求用户以root用户身份登录并启动程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.