setuid(0)在Mac OS X 10.9上给出了EPERM

时间:2013-11-01 15:21:25

标签: macos launchd setuid

执行此操作时

err = setuid(0);
if (err < 0) {
    fprintf(stderr, "return value: %d \n", err);
    fprintf(stderr, "error code: %d \n", errno);
 }

我收到了这个输出:

return value: -1 
error code: 1 

错误代码1表示EPERM错误。有关如何修复它的任何想法?

2 个答案:

答案 0 :(得分:0)

您无法setuid()从非root用户root。

如果您想以root用户身份运行应用程序,请使用Authorization Servicessudo(如果它是命令行工具)。

答案 1 :(得分:0)

SETUID(2) Man Pages

  

如果用户不是超级用户,或者指定的uid不是   真实,有效ID或保存的ID,这些函数返回-1。

setuid(0);仅适用于root(SU)用户。

错误代码:1

#define EPERM       1       /* Operation not permitted */