Читаем Linux API. Исчерпывающее руководство полностью

39.1. Измените программу из листинга 35.2 (sched_set.c) так, чтобы она могла задействовать возможности файла и выполняться от имени непривилегированного пользователя.

<p>40. Учет входа в систему</p>

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

40.1. Краткий обзор файлов utmp и wtmp

В UNIX-системах имеются два файла, содержащих информацию о входе пользователей в систему и их выходе из нее.

• Файл utmp хранит записи о пользователях, находящихся в системе в текущий момент времени (а также некую дополнительную информацию, о которой мы поговорим чуть позже). При каждом входе в систему в этот файл добавляется новая запись. Одно из его полей, ut_user, содержит имя пользователя. Во время выхода из системы данное поле очищается. Такие программы, как who(1), используют содержимое файла utmp для вывода списка пользователей, находящихся в системе.

• Файл wtmp представляет собой учетный журнал с информацией обо всех входах в систему и выходах из нее (плюс ряд дополнительных сведений, речь о которых пойдет чуть позже). При каждом входе в систему в этот файл добавляется та же запись, что и в utmp. При выходе добавляется еще одна запись с тем же содержимым, но с обнуленным полем ut_user. Данные, хранящиеся в файле wtmp, можно просматривать и фильтровать с помощью команды last(1).

В Linux файлы utmp и wtmp имеют пути /var/run/utmp и, соответственно, /var/log/wtmp. В целом, программу не должно заботить ее местоположение, так как информация о нем заложена в библиотеку glibc. Если вам все же нужно получить эти пути, то лучше не указывать их напрямую в своем коде, а воспользоваться константами _PATH_UTMP и _PATH_WTMP, объявленными в заголовочном файле (и в ).

Стандарт SUSv3 не предусматривает никаких символьных обозначений для путей к файлам utmp и wtmp. В Linux и BSD используются имена _PATH_UTMP и _PATH_WTMP, однако во многих других реализациях UNIX вместо этого определены константы UTMP_FILE и WTMP_FILE. Кроме того, в Linux указанные значения хранятся только в файле , но не в или .

40.2. Программный интерфейс utmpx

Файлы utmp и wtmp присутствуют в системе UNIX с давних пор. За это время они постепенно эволюционировали и претерпели различные изменения на разных платформах — особенно заметна разница между BSD и System V. В System V Release 4 значительно расширился программный интерфейс, в результате чего появилась новая (параллельная) структура utmpx, а также связанные с ней файлы utmpx и wtmpx. Функции, предназначенные для работы с ними, тоже имеют в своих названиях букву x, равно как и связанные с ними заголовочные файлы. Подобные нестандартные расширения этого программного интерфейса появились и во многих других реализациях UNIX.

В данной главе будет описана Linux-версия интерфейса utmpx, которая представляет собой смесь реализаций, входящих в состав систем BSD и System V. В отличие от последней Linux не создает параллельных файлов utmpx и wtmpx; вместо этого вся необходимая информация записывается в файлы utmp и wtmp. Но, чтобы сохранить совместимость с другими реализациями, для доступа к этим файлам Linux предоставляет сразу два программных интерфейса — традиционный utmp и utmpx, пришедший из System V. Оба они возвращают одни и те же данные (одно из немногих различий между этими интерфейсами заключается в том, что utmp содержит несколько реентерабельных функций). Однако здесь будет описан только интерфейс utmpx, так как он входит в стандарт SUSv3 и благодаря своей портируемости на другие системы является более предпочтительным.

Спецификация SUSv3 не покрывает все аспекты программного интерфейса utmpx (например, в ней не указано местоположение файлов utmp и wtmp). Содержимое файлов учета входа в систему зависит от конкретной реализации, а в ряде систем utmpx может поддерживать дополнительные функции, не предусмотренные стандартом SUSv3.

В главе 17 книги [Frisch, 2002] перечислены некоторые отличия в местоположении и применении файлов wtmp и utmp в разных реализациях UNIX. Там же можно найти описание работы с командой ac(1), позволяющей выводить информацию о входе в систему, хранящуюся в файле wtmp.

40.3. Структура utmpx

Каждая запись в файлах utmp и wtmp представляет собой структуру utmpx, объявленную в заголовочном файле (листинг 40.1).

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

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

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

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

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

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

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

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

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