Читаем Разработка приложений в среде Linux. Второе издание полностью

В результате выполнения команды ls -l для вывода списка содержимого текущего каталога в третьей и четвертой колонках указываются идентификаторы (ID) пользователя и группы, к которой принадлежит каждый файл. Этот список выглядит примерно следующим образом.

drwxrwxr-x  5 christid christid 1024 Aug 15 02:30 christid

drwxr-xr-x 73 johnsonm root     4096 Jan 18 12:48 johnsonm

drwxr-xr-x 25 kim      root     2048 Jan 12 21:13 kim

drwxrwsr-x  2 tytso    tytso    1024 Jan 30  1996 tytso

Однако нигде в ядре не хранится строка christid. Программа ls осуществляет преобразование номеров, предоставленных ядром, в имена. Она получает номера из системного вызова stat() и производит поиск имен в двух системных базах данных. Обычно эти базы данных хранятся в файлах /etc/passwd и /etc/group, хотя в некоторых системах информация может располагаться где-нибудь в сети или в каком-то другом нестандартном месте. Программистам не нужно беспокоиться о том, где хранится эта информация; библиотека С предлагает обобщённые функции, которые считывают конфигурационные файлы для определения места хранения этой информации, производят выборку информации и возвращают ее незаметно для вас.

Чтобы продемонстрировать, что программа ls получает из ядра, выполним команду ls -ln.

drwxrwxr-x  5 500  500  1024 Aug 15 02:30 christid

drwxr-xr-x 73 100  0    4096 Jan 18 12:48 johnsonm

drwxr-xr-x 25 101  0    2048 Jan 12 21:13 kim

drwxrwsr-x  2 1008 1008 1024 Jan 30 1996  tytso

Структура, представляющая элементы в /etc/passwd (или эквивалентной базы данных системы), определена в .

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;  /* Программа shell */

};

• pw_name представляет уникальное имя пользователя.

• pw_passwd может представлять зашифрованный пароль или нечто подобное, связанное с процедурой аутентификации. Зависит от системы.

• pw_uid представляет номер (обычно уникальный), который используется в ядре для идентификации пользователя.

• pw_gid представляет главную группу, которую ядро связывает с пользователем.

• pw_gecos представляет член, зависящий от системы, который хранит информацию о пользователе. Обычно сюда включается настоящее имя пользователя; во многих системах здесь приводится список членов, разделенных запятыми, который включает номера домашних и рабочих телефонов.

• pw_dir представляет домашний каталог, связанный с пользователем. Обычные сеансы регистрации начинают работать с этим каталогом в качестве текущего каталога.

• pw_shell представляет имя командной оболочки, которая запускается в случае успешной регистрации пользователя. Сюда обычно относятся /bin/bash, /bin/tcsh, bin/zsh и так далее. Однако элементы, используемые для других целей, могут иметь другие оболочки, /bin/false применяется для элементов passwd, которые не используются для регистрации пользователей. Специализированные оболочки часто служат для целей, рассмотрение которых выходит за рамки настоящей книги.

Структура, которая представляет элементы в /etc/group (или в эквивалентных базах данных), определена в .

struct group {

 char * gr_name;   /* Имя группы */

 char * gr_passwd; /* Пароль */

 __gid_t gr_gid;   /* Идентификатор группы */

 char ** gr_mem;   /* Список членов */

};

• gr_name представляет уникальное имя группы.

• gr_passwd представляет пароль (обычно неиспользуемый). К нему применимы те же требования, что и к pw_passwd, только в еще большей степени.

• gr_gid представляет номер (обычно неуникальный), который ядро использует для идентификации группы.

• gr_mem представляет список членов группы, разделенных запятыми. Это список имен пользователей, которые присваиваются этой группе на вторичной основе (см. главу 10).

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных