Программирование в стандарте POSIX


Данные, ассоциированные с пользователем - часть 3


пример 3.2).

Листинг 3.2. Пример работы с базой данных пользователей. (html, txt)

По окончании работы этой программы может быть получен следующий результат (см. пример 3.3):

Листинг 3.3. Возможный результат работы с базой данных пользователей. (html, txt)

Аналогичные функции имеются для поиска в базе данных групп - getgrgid() и getgrnam() (см. пример 3.4):

#include <grp.h> struct group *getgrgid (gid_t gid); #include <grp.h> struct group *getgrnam (const char *name);

Листинг 3.4. Описание функций getgrgid() и getgrnam(). (html, txt)

Структура group обязана содержать поля

char *gr_name;/* Имя группы */ gid_t gr_gid; /* Числовой идентификатор группы */ char **gr_mem; /* Указатель на ограниченный пустым указателем массив символьных указателей на имена пользователей, которым разрешено становиться членами данной группы */

Применение функции getgrgid() отражено в пример 3.5.

Листинг 3.5. Пример работы с базой данных групп. (html, txt)

Приведенная в качестве примера программа может привести к результату, показанному в пример 3.6:

Пользователи, включенные в группу с идентификатором 1: root bin daemon

Листинг 3.6. Возможный результат работы с базой данных групп. (html, txt)

Для смены текущей группы пользователя предназначена служебная программа newgrp (стандарт POSIX-2001 относит ее к числу необязательных, входящих в расширение "Мобильность пользователей", UP):

newgrp [-l] [группа]

Группа, в которую осуществляется переход, задается именем или числовым идентификатором. Будучи вызванной без аргументов, утилита newgrp возвращает пользователя в его начальную группу, заданную в базе данных пользователей.

При смене группы порождается новый процесс, в рамках которого запускается новый экземпляр командного интерпретатора, наследующий у своего предшественника текущий каталог и значения переменных окружения. При указании опции -l окружение формируется так, будто пользователь заново вошел в систему.

Если пользователь не входит в список возможных членов новой группы, при переходе в нее может запрашиваться пароль, однако в стандарте POSIX-2001 этот аспект считается зависящим от реализации.Более того, отмечается, что в базе данных групп нет удобных способов задания паролей, поэтому их использование в приложениях не приветствуется, а со временем пароли групп могут стать ненужными.




Начало  Назад  Вперед



Книжный магазин