Linux ограничение времени работы пользователя

Linux ограничение времени работы пользователя

У меня появилась необходимость ограничить техническим средствами время «работу» семилетнего чада за компьютером с GNU / Linux.

Проблему с великим и ужасным интернетом я легко решил с помощью детского браузера «Гогуль». А вот с ограничением времени работы пользователя возникли трудности. Начал поиск имеющихся программ для Ubuntu 12.04 и обнаружил, что с этим дела обстоят не лучшим образом.

Что-то у меня не работает, как Gnome nanny (у некоторых, судя по отзывам, она еще и портит систему), для чего-то даже нет готовых пакетов для установленной версии Ubuntu, в том числе и в сторонних хранилищах.

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

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

Исходный код доступен по ссылке — time-control

Приложение нужно прописать в автозапуске пользователя и инициализировать запуском из командной строки, передав в качестве параметра количество разрешенных за день минут. В дальнейшем редактировать этот параметр можно в файле /home/patient/.parcon/config, где patient следует заменить на имя пользователя, разумеется.

Когда время, отведенное для пользователя завершается, программа вызывает функции завершения сеансов работы Unity/(Gnome ?) и XFCE. Вариант для KDE был добавлен наугад и не тестировался, так что наверняка он работает кое-как.

Недостатком решения является то, что по завершении сеанса до завершения времени, программа продолжает работать и отсчитывать минуты. Я обошел это добавлением специальной кнопки завершения сеанса, заодно завершающей программу командой «pkill -9 parcon».

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

Источник

Читайте также:  Virtualbox linux virtual machines

Ограничиваем время проведенное за ПК в Linux с помощью Timekpr

Timekpr Revived — это программа, позволяющая отслеживать и ограничивать проведенное за компьютером время в Linux. С помощью Timekpr можно ограничить время в которое пользователю позволено заходить в систему, и количество проведенного времени. Эту небольшую программу ни в коем случае нельзя назвать полноценным родительским контролем, но во всяком случае, она позволяет ограничивать время проведенное чадом за компьютером. Это уже становится актуальным даже для Linux, т.к. количество игр с поддержкой Linux в Steam неумолимо растет.

Разработчик оригинальной программы Timekpr забросил проект довольно давно, но позже нашлись те, кому проект так же показался нужным, сделали форк и продолжили развитие проекта только под немного измененным названием — Timekpr Revived. Форк не сильно отличается от оригинала, но в отличии от него прекрасно работает в последних версиях Ubuntu, и есть индикатор для панели.

Timekpr - главное окно

Возможности

Основные возможности Timekpr-Revived:

  • Ограничение количества времени работы для определенной учетной записи пользователя;
  • Ограничение по времени суток, в которое разрешено пользоваться учетной записью;
  • Возможность сразу заблокировать аккаунт;
  • Возможность снять ограничения на один, сегодняшний день;
  • Поддержка индикаторов панели и системных уведомлений;

Вот так выглядит окно, в котором настраиваются ограничения:

Timekpr - настройка ограничений

Timekpr — настройка ограничений

Через апплет можно получить доступ к основному окну приложения, посмотреть сколько осталось времени:

Timekpr - unity индикатор

Как работает

Timekpr загружается когда пользователь заходит в систему, и проверяет сколько осталось у него времени для работы. Если не осталось совсем, то без лишних предупреждений через минуту Timekpr выйдет из учетной записи. При повторном входе timekpr сделает тоже самое — т.е. разлогинит через минуту, если не осталось времени. Таймаут нужен для того, чтобы была возможность добавить времени использования аккаунта.

Для изменения настроек и добавлении времени, Timekpr требует пароль пользователя:

Timekpr - запрос пароля

Когда останется несколько минут, Timekpr покажет всплывающее уведомление:

Timekpr - уведомление

Установка

Для установки необходимо добавить ppa:

sudo add-apt-repository ppa:mjasnik/ppa sudo apt-get update sudo apt-get install timekpr

Если у вас Debian, то здесь можно скачать готовый Deb пакет. В других дистрибутивах Linux придется собирать руками, из исходного кода. Скачать их можно тут.

Читайте также:  List all disk on linux

Индикатор на панели в Unity появится после следующего входа в систему.

Комментарии на этом сайте требуют включенного Javascript в вашем браузере. Вероятно, ваш браузер не поддерживает Javascript, или он был отключен по каким-то причинам. Если вы хотите прокомментировать пост, или просто почитать комментарии, то пожалуйста, включите Javascript или попробуйте открыть эту страницу другим браузером.

Источник

Ограничения времени работы пользователя.

Нужно чтобы пользователь мог работать только в определенное время (скажем с 15:00 до 21:00). При этом компьютер должен автоматически выключаться/переводится в спящий режим — не суть важно, и при попытках залогиниться пользователем в неподходящее время компьютер должен опять таки выключаться. То есть в данном случае, если компьютер включается в 1:00, то тут же он и выключается, если наступает 21:00, то компьютер выключается. Ну а если в данный момент от 15:00 до 21:00 пользователь может спокойно работать.

p.s. Мне все равно на изящность/убогость решения. Главное — чтобы работало, чем скорее — тем лучше. И просьба, если вы знаете куда копать надо, то не надо кидать пару умных фраз от которых все становится только запутанней. Пара ссылок на материал поможет куда больше.

емнип это можно с PAM организовать.

Нужно чтобы пользователь мог работать только в определенное время (скажем с 15:00 до 21:00). При этом компьютер должен автоматически выключаться/переводится в спящий режим — не суть важно, и при попытках залогиниться пользователем в неподходящее время компьютер должен опять таки выключаться. То есть в данном случае, если компьютер включается в 1:00, то тут же он и выключается, если наступает 21:00, то компьютер выключается. Ну а если в данный момент от 15:00 до 21:00 пользователь может спокойно работать.

скрипт напиши и повесь на crond.

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

Вот какое решение я нашел узнав про PAM

Задача: пользователь myuser. Время, когда можно пользоваться компьютером вышеуказанным пользователем: Понедельник, вторник, четверг в 08:00-10:00 и 20:00-21:30 (из промежутка 08:00-21:30 исключается время 10:00-20:00. Именно так прописывается в time.conf) — пояснение ниже Среда, пятница в 20:00-21:30 Суббота в 18:00-22:00 Воскресенье в 09:00-20:00

Читайте также:  Remote commands in linux ssh

Решение. С правами админа вписываем в /etc/security/time.conf следующую строку

*;*;myuser;WeFr2000-2130|Sa1800-2200|Su0900-2000|MoTuTh0800-1000|MoTuTh2000-2130

Я не стал замарачиваться ограничением по login, gdm, а сразу обрубаю всю активность на компе (звездочки). В вышеуказанной статье Scott’а Kindley дается пример с использованием символа &. Я не стал его использовать, т.к. неправильно отрабатывают правила. Поясню:

login|gdm;*;jordan;Wk1630-2000 | Wd0800-2230&!1200-1500

cовсем не одно и то же, что

login|gdm;*;jordan;Wd0800-2230&!1200-1500 | Wk1630-2000

Потому указал два диапазона времени для MoTuTh вместо MoTuTh0800-2130&!1000-2000. Далее вписываем ниже последней строки, начинающейся с auth в файлах /etc/pam.d/login, /etc/pam.d/gdm, /etc/pam.d/sshd

account required pam_time.so

Замечательно, ограничения вступают в силу немедля. Но есть один ньюанс. Наступает время, когда сеанс залогиненного пользователя должен закончится. Но он продолжает и далее работать. Непорядок! Надо принудительно завершить его сеанс, предварительно выдав пользователю сообщение. Выполняем это средствами штатного планировщика cron. Редактируем планировщик:

где вписываем такие строки:

#m - минуты, h - часы, dom - день месяца, mom - месяц, dow - день недели, command - выполняемая команда #m h dom mon dow command 00 10 * * 1-2 /usr/bin/zenity --text-info --title="Время вышло" --width=474 -height=400 --display=:0 --filename=/etc/myuser.zenity & 10 10 * * 1-2 /usr/bin/skill -KILL -u myuser 00 10 * * 4 /usr/bin/zenity --text-info --title="Время вышло" --width=474 -height=400 --display=:0 --filename=/etc/myuser.zenity & 10 10 * * 4 /usr/bin/skill -KILL -u myuser 30 21 * * 1-5 /usr/bin/zenity --text-info --title="Время вышло" --width=474 -height=400 --display=:0 --filename=/etc/myuser.zenity & 40 21 * * 1-5 /usr/bin/skill -KILL -u myuser 00 22 * * 6 /usr/bin/zenity --text-info --title="Время вышло" --width=474 -height=400 --display=:0 --filename=/etc/myuser.zenity & 10 22 * * 6 /usr/bin/skill -KILL -u myuser 00 20 * * 0 /usr/bin/zenity --text-info --title="Время вышло" --width=474 -height=400 --display=:0 --filename=/etc/myuser.zenity & 10 20 * * 0 /usr/bin/skill -KILL -u myuser

В указанное время на рабочем столе пользователя myuser будет появляться всплывающее окно размером 474×400 пикселей с заголовком «Время вышло». Текст сообщения будет браться из файла /etc/myuser.zenity, который предварительно надо создать. Строки «/usr/bin/skill -KILL -u myuser» выполняют принудительное завершение сеанса пользователя, если он сам не захотел отключаться.

Источник

Оцените статью
Adblock
detector