getpw(3)

GETPW(3) Руководство программиста Linux GETPW(3)

ИМЯ

getpw - восстанавливает строку пароля

ОБЗОР

#define _GNU_SOURCE             /* смотрите feature_test_macros(7) */
#include <sys/types.h>
#include <pwd.h>
int getpw(uid_t uid, char *buf);

ОПИСАНИЕ

Функция getpw() заново создаёт в буфере строку пароля для пользователя с ID uid в буфере buf. Возвращаемый буфер содержит строку в формате


name:passwd:uid:gid:gecos:dir:shell

Структура passwd определена в <pwd.h> следующим образом:


struct passwd {

char *pw_name; /* имя пользователя */
char *pw_passwd; /* пароль пользователя */
uid_t pw_uid; /* идентификатор пользователя */
gid_t pw_gid; /* идентификатор группы */
char *pw_gecos; /* информация о пользователе */
char *pw_dir; /* домашний каталог */
char *pw_shell; /* программная оболочка */ };

Подробней о полях этой структуры смотрите в passwd(5).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении getpw() возвращается 0; при ошибке возвращается -1, а в errno содержится код ошибки.

Если uid не найден в базе данных паролей, то getpw() возвращает -1, присваивает errno значение 0 и buf не изменяется.

ОШИБКИ

0 или ENOENT
Отсутствует пользователь с соответствующим uid.
EINVAL
Значение buf равно NULL.
ENOMEM
Недостаточно памяти для структуры passwd.

ФАЙЛЫ

/etc/passwd
файл, содержащий базу паролей

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).

Интерфейс Атрибут Значение
getpw() Безвредность в нитях MT-Safe locale

СООТВЕТСТВИЕ СТАНДАРТАМ

SVr2.

ДЕФЕКТЫ

Функция getpw() является в каком-то смысле опасной, так как может переполнить предоставляемый ей буфер buf. Она заменена на getpwuid(3).

СМОТРИТЕ ТАКЖЕ

endpwent(3), fgetpwent(3), getpwent(3), getpwnam(3), getpwuid(3), putpwent(3), setpwent(3), passwd(5)

2017-09-15 GNU