我正在编写访问Linux原始套接字的Qt应用程序,因此我需要root特权才能运行该程序。所以我这样做:

在我的程序中,我一开始就有这个:

if (getuid() != 0)
{
    fprintf(stderr, "You must be root to run this program. UID = %i\n", getuid());
    exit(-1);
}

然后,我以root用户身份执行了“chmod 6777 myProgram”。

但是,当我尝试以普通用户身份运行它时,它说:
“您必须是root用户才能运行此程序。UID= 1002”,其中1002是我当前正在使用的用户ID。

任何人都可以发布线索吗?

谢谢

最佳答案

您正在混合getuid()geteuid()。在getuid()的手册页中:

Linux的手册页更加简洁(以前的手册来自Mac OS X):

对于setuid程序,该文件必须由您要设置为setuid的用户标识(在大多数情况下为root)拥有。

10-05 18:13