-1

嗨,当我在我的 Linux 系统中以 root 身份登录并尝试使用 getpwuid() 获取文件的所有者名称时,它总是显示 root(lie) 而不是下面的实际所有者名称是我的代码。请帮助我获取实际名称而不是root。

int main(int argc, char *argv[])
{
        register struct passwd *access;
        register uid_t uid;
        int c;

        uid = geteuid ();
        access= getpwuid (uid);
        if (access)
        {
                puts (access->pw_name);
                exit (EXIT_SUCCESS);
        }
        fprintf (stderr,"%s: cannot find username for UID %u\n",
                        _PROGRAM_NAME, (unsigned) uid);
        exit (EXIT_FAILURE);

}

我总是将用户名作为 root 我如何才能获得所有者的实际名称?

4

1 回答 1

1

geteuid()获取进程当前运行的有效用户 ID。由于您以 root 身份登录,因此这将返回 UID 0 - 并且getpwuid()会正确地告诉您这是 root。

如果要获取文件的所有者,为什么要使用geteuid()?您需要从stat()家庭中调用一个函数来获取该信息。

于 2017-03-19T19:09:54.380 回答