русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Шаг 16 - Получение информации о группах пользователей


Дата добавления: 2015-07-04; просмотров: 587; Нарушение авторских прав


Мы с Вами раньше узнали как получать информацию о пользователях, но не секрет, что эти пользователи могут быть объединены в группы. Для разграничения доступа в системе используются оба идентификатора: идентификатор пользователя UID и идентификатор группы GID. С помощью совокупности этих идентификаторов можно достаточно гибко настраивать безопасность системы.

Для работы с группами требуется подключить файл grp.h и Вам станут доступны следующие функции:

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

Функция getgrnam() ищет группу в файле /etc/group с именем name и возвращает указатель на структуру struct group, либо NULL в случае неудачи.

Функция getgrgid() ищет группу по идентификатору и также возвращает стуктуру struct group, либо NULL в случае неудачи. Данная структура имеет следующий вид:

struct group { char *gr_name; /* имя группы */ char *gr_passwd; /* групповой пароль */ gid_t gr_gid; /* идентификатор группы */ char **gr_mem; /* члены группы */};

Назначение полей думаю не требуют объяснения. Один лишь момент в том, что поле members это массив указателей на строки, в котором для обозначения конца последний элемент равен NULL.

Давайте попробуем написать программку, которая будет выводить информацию о группе:

#include <stdlib.h>#include <grp.h>#include <sys/types.h> int main(){ struct group *g= NULL; char **p = NULL; g = getgrnam("webmasters"); if (g != NULL){ printf ("gr_name = \"%s\"\n",g->gr_name); printf ("gr_passwd = \"%s\"\n",g->gr_passwd); printf ("gr_gid = \"%d\"\n",g->gr_gid); printf ("gr_members = "); p = g->gr_mem; while (*p != NULL){ printf ("\"%s\" ", *p); p++; }; printf ("\n"); }; return 0;};

После компиляции и запуска программы мы получим список пользователей системы относящихся к группе webmasters:



dron~# ./a.outgr_name = "webmasters"gr_passwd = "x"gr_gid = "102"gr_members = "dron" "kost" "aneta"

Теперь, если посмотреть содержимое файла /etc/group можно увидеть следующую строку:

webmasters:x:102:dron,kost,aneta

Важно отметить то, что в файле /etc/group совершенно не обязательно должны быть перечислены все пользователи из этой группы. В описании каждой группы добавляются только те пользователи, которые входят в несколько групп пользователей одновременно. Все это задается на этапе создания нового пользователя. В первую очередь ему задается основная группа, к которой он принадлежит, как правило это группа users. Далее, если требуется, ему назначаются дополнительные группы, в которые он может входить. После этого в описание этих дополнительных групп добавляется имя этого нового пользователя.



<== предыдущая лекция | следующая лекция ==>
Шаг 15 - Работа с паролями системы с помощью функции crypt() | Шаг 17 - Работа с переменными окружения - setenv и getenv


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.29 сек.