Учет-контроль игрового времени

в 13:47, , рубрики: дети, игры, образование, системное администрирование, метки: , ,

Не пускайте ребенка в интернет — он от этого тупеет! (bash.org.ru)

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

Расскажу, как это делается у нас в семье. Дети засекают время внешним будильником (телефоном), а я на досуге просматриваю логи и по мере надобности раздаю SIGSTOP, SIGKILL и прочих люлей, в том числе IRL. Понятно, что такая система не очень удобна, поскольку требует дополнительного контроля и не учитывает способов использования компьютера ребенком. Я смотрю только last — кто когда зашел/вышел из системы, поэтому не различаю, кто играл, а кто слушал аудиокнигу. (Только тсс! — дети пока полагают, что папа видит всё.)

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

  1. Разделение видов взаимодействия ребенка с компьютером на несколько классов (игры, фильмы, аудиокниги, самообразование (чтение википедии и прочей документации), ...). Классификация должна производиться по двум факторам: степень нагрузки на глаза и нервную систему и, скажем так, польза для развития. Большинство игр скорее развлекают, чем развивают, и хочется простимулировать ребенка заниматься более полезным нежели приятным.
  2. Гибкое задание системы ограничений времени с учетом классификации. Например, такой класс как аудиокниги можно считать безвредным для организма, и поэтому вообще не ограничивать. Еще было бы удобно (для ребенка) переносить неиспользованный остаток времени на завтра или даже брать в долг (хе-хе, с процентами), но все эти махинации должны вкладываться в жесткие ограничения (за сутки, за сеанс и т.п.).
  3. Удобная и наглядная индикация оставшегося времени и цепочка предупреждений (вплоть до последнего китайского с последующим убийством всех процессов и баном учетной записи пользователя).
  4. Журналирование: кто сколько времени провел и каким образом.
  5. Учесть наличие нескольких компьютеров. Если дети захотят зарубиться по сети, нет причин им в этом отказывать.

Что касается взломоустойчивости, то достаточно лишь, чтобы не срабатывали совсем уж наивные способы обойти ограничения. Всё равно надежно сделать вряд ли удастся, ведь при наличии физического доступа к железу получить рута не составляет проблем. И если ребенок умеет это делать, то наверно вам не следует пытаться его контролировать.

Основные идеи реализации (для линукса) таковы.

  • Сбор статистики по процессам (кажется atop из этого обзора должен подойти).
  • Демон (в крайнем случае скрипт, вызываемый через хрон), который просматривает эту статистику и принимает решения.
  • Система уведомления: наверно всплывающее изредка окно и таймер где-то в статус-баре (хотя я, например, не использую таких излишеств как статус-бар); также в запущенных случаях посылка SIGSTOP и через несколько секунд SIGCONT (правда, не все процессы могут это пережить).
  • Ну а репрессивные механизмы (блокировка экрана скринсейвером и далее sudo -u luser kill -9 -1) — это совсем просто.

Пока не очень ясно, как классифицировать процессы. Придется либо вручную, либо применять эвристику типа «всё, что из /usr/games — это игры».

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

Автор: janatem

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js