Получение имени владельца файла с помощью 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()
семья, чтобы получить эту информацию.