我需要在“/ 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
运行,则此代码行有效。我想以编程方式做同样的事情。
谢谢!
答案 0 :(得分:4)
可以将可执行文件设置为setuid吗?只需chown
即root
和chmod u+s
。
答案 1 :(得分:2)
您可以从C调用setuid(0)
将您的用户ID更改为root。该程序需要由root拥有并设置为允许的setuid:
chown root:root a.out
chmod u+s a.out
答案 2 :(得分:1)
我认为没有办法实现这一目标(即在执行之前没有手动授予程序的某些特殊权利) - 并且没有办法实现。任何此类方法都将成为主要的操作系统安全漏洞。如果您可以编写具有root权限的程序,任何恶意软件制造商都可以......
答案 3 :(得分:0)
要求用户以root用户身份登录,并在完成此类特权工作时启动该程序。
答案 4 :(得分:0)
不是一件容易的事,但仍然可行。从Apple搜索SMJobBless示例。通常,它设置launchd守护进程,该守护进程在root拥有的launchd实例中运行。