1

执行此操作时:

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 错误。关于我应该如何解决它的任何想法?

4

2 回答 2

0

您不能setuid()从非 root 用户 root。

如果您想以 root 身份运行您的应用程序,请使用Authorization Services,或者sudo如果它是一个命令行工具。

于 2013-11-01T15:41:41.033 回答
0

SETUID(2) 手册页

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

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

错误代码:1

#define EPERM       1       /* Operation not permitted */
于 2013-12-10T07:40:17.093 回答