繁体   English   中英

以root用户身份以编程方式运行C程序

[英]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 rootchmod 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.

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