执行此操作时:
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 错误。关于我应该如何解决它的任何想法?
您不能setuid()
从非 root 用户 root。
如果您想以 root 身份运行您的应用程序,请使用Authorization Services,或者sudo
如果它是一个命令行工具。
如果用户不是超级用户,或者指定的 uid 不是真实有效的 ID 或保存的 ID,这些函数返回 -1。
setuid(0);
仅适用于 root(SU) 用户。
错误代码:1
#define EPERM 1 /* Operation not permitted */