Читать книгу 📗 "Linux программирование в примерах - Роббинс Арнольд"
Настоящее имя пользователя
Это по крайней мере имя и фамилия пользователя. Некоторые системы допускают разделяемые запятыми поля для местоположения офиса, номера телефона и т.д., но это не стандартизовано.
Входной каталог
Этот каталог становится домашним каталогом для пользователей, когда они зарегистрируются в системе (
$HOMEcdВходная программа
Программа, которая запускается при регистрации пользователя. Обычно это оболочка, но не обязательно. Если это поле оставлено пустым, по умолчанию используется
/bin/shДоступ к базе данных пользователей осуществляется через процедуры, объявленные в
<pwd.h>#include <sys/types.h> /* XSI */#include <pwd.h>struct passwd *getpwent(void);void setpwent(void);void endpwent(void);struct passwd *getpwnam(const char *name);struct passwd *getpwuid(uid_t uid);Поля в
struct passwdstruct passwd { char *pw_name; /* имя пользователя */ char *pw_passwd; /* пароль пользователя */ uid_t pw_uid; /* id пользователя */ gid_t pw_gid; /* id группы */ char *pw_gecos; /* настоящее имя */ char *pw_dir; /* домашний каталог */ char *pw_shell; /* программа оболочки */};(Имя
pw_gecosНазначение каждой процедуры описано в следующем списке.
struct passwd *getpwent(void)Возвращает указатель на внутреннюю структуру
static struct passwdstruct passwdgetpwent()NULLvoid setpwent(void)Сбрасывает внутреннее состояние, так что следующий вызов
getpwent()void endpwent(void)«Закрывает базу данных», так сказать, будь то простой файл, сетевое соединение или что-нибудь еще.
struct passwd *getpwnam(const char *name)Ищет пользователя с членом
pw_namenamestatic struct passwdNULLstruct passwd *getpwuid(uid_t uid)Сходным образом ищет пользователя с номером ID, приведенным в
uidstatic struct passwdNULLgetpwuid()struct statgetpwnam()chown()fchown()getpwent()bsearch()getpwuid()getpwnam()ЗАМЕЧАНИЕ. Указатели, возвращаемые
getpwent()getpwnam()getpwuid()staticХорошенько рассмотрите определение
struct passwdstatic6.3.2. База данных групп
Формат базы данных групп
/etc/group/etc/passwd$ <b>grep arnold /etc/group</b>mail:x:12:mail,postfix,arnolduucp:x:14:uucp,arnoldfloppy:x:19:arnolddevel:x:42:miriam,arnoldarnold:x:2076:arnoldОпять-таки на одну группу отводится одна строка, с полями, разделенными двоеточием. Поля следующие.
Имя группы
Это имя группы, как оно отображается в '
ls -lПароль группы
Историческое поле. Оно больше не используется.