Детские игры: потехе час

В LXF166 Майк Сондерс уже рассказывал о том, как защитить ваш их детей от темной стороны Интернета - и от них самих. Ну, а если вы также хотите контролировать, когда и как долго они пользуются компьютером? Например, выставить запрет на сидение по ночам, или лимит на Facebook не более 2 часов. Gnome Nanny [Нянюшка Gnome], которая кое с чем из этого справлялась, больше не разрабатывается и несовместима с Gnome 3. Та же участь постигла Timekpr (хотя разработчик планирует воскресить его в этом году).
Стало быть, сейчас в Linux нет простого способа типа наведи-и-щелкни, чтобы ввести такие ограничения. Но не все потеряно - это можно сделать; надо лишь немного утрудить ручки.
PAM
Ограничение использования компьютера по времени осуществляется при помощи PAM (Pluggable Authentication Module, Подключаемые модули аутентификации). Прежде чем перейти к делу, разберемся в общих чертах, что это и как работает. Раньше программы работали непосредственно на уровне аутентификации пользователя, обычно выполняя ее через файл /etc/passwd. А значит, при введении нового способа аутентификации каждую программу приходилось перекодировать под него. PAM предоставляет для этой процедуры отдельный уровень. Программа обращается к PAM, а тот занимается собственно аутентификацией. По стандартному ли вводу логина/пароля, или с помощью дактилоскопического анализа, или грубых жестов в адрес Kinect - программе не важно. Все это делает PAM, а затем сообщает программе, прошел ли пользователь проверку. Выглядит процесс аутентификации вроде бы более трудоемким; так оно и есть, но иногда лучше лишний раз перестраховаться. Настройки PAM хранятся в ряде файлов в /etc/pam.d, и имя каждого файла связано с соответствующей службой: auth required pam_securetty.so auth include system-local-login account include system-local-login password include system-local-login session include system-local-login Первый элемент в строке указывает на действие PAM, за которое он отвечает, второй - на то, обязательно [required] его выполнение или достаточно [sufficient], третий - на имя модуля PAM, применяемого для аутентификации. То есть первая строка обозначает, что действие auth осуществляется при помощи модуля pam_securetty, и статус его успеха - required. Если модуль не проходит аутентификацию, процесс завершается, а если проходит, PAM переходит к следующему правилу. Флажок sufficient указывает, что данная проверка полностью обеспечивает аутентификацию и PAM возвращает результат «выполнено», если она завершается успешно. Есть и другие опции (описанные на man- страницах), в том числе include. Она добавляет выполнение условий из другого файла, так что вторая строка дублирует правила auth из /etc/pam.d/system-local-login, который нам вскоре пригодится. Заметим, что в некоторых дистрибутивах вместо него используется формат ©include common-account. Но это мелкое отличие для нас неважно. Важно заглянуть в файлы из /etc/pam.d, чтобы понять, какие из них нужно редактировать.