как сравнить заданные пользователем входные данные (строку) с файлом / etc / passwd в Ubuntu в C - PullRequest
0 голосов
/ 26 августа 2010

Я хочу сравнить данные, введенные пользователем, то есть имя пользователя, с уже сохраненными именами пользователей в файле / etc / passwd в Ubuntu. Я пытаюсь в C. любая помощь, пожалуйста

Ответы [ 2 ]

4 голосов
/ 26 августа 2010
#include <pwd.h>
...

struct passwd *e = getpwnam(userName);
if(e == NULL) {
   //user not found
} else {
  //found the user
}

См. Документы здесь и здесь

(Если вы на самом деле также хотите аутентифицировать пользователя, то требуется больше работы)

0 голосов
/ 26 августа 2010

Этот код печатает все имена пользователей из /etc/passwd.

#include <stdio.h>

int main()
{  
        char buffer[128];
        char* username;
        FILE* passwdFile;

        passwdFile = fopen("/etc/passwd", "r");
        while (fgets(buffer, 128, passwdFile) != NULL)
        {
                username = strtok(buffer, ":");
                printf("username: %s\n", username);
        }
        fclose(passwdFile);
        return 0;
}

Изменить для сравнения username с вашим вводом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...