Получение имени владельца файла с помощью getpwuid() в c всегда выдает root

Привет, когда я вхожу в систему как root в моей системе Linux и пытаюсь получить имя владельца файла. Используя getpwuid(), он всегда отображает root(ложь), а не фактическое имя владельца ниже, это мой код. пожалуйста, помогите мне получить собственно имя, а не 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 Как я могу получить имя владельца?

1 ответ

Решение

geteuid() получает эффективный идентификатор пользователя, под которым в данный момент выполняется процесс. Поскольку вы вошли в систему как пользователь root, это вернет UID 0 - и getpwuid() правильно скажу вам, что это root.

Если вы хотите получить владельца файла, почему вы используете geteuid()? Вам нужно вызвать функцию из stat() семья, чтобы получить эту информацию.

Другие вопросы по тегам