LINUX.ORG.RU
решено ФорумAdmin

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

 , ,


0

2

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

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



Последнее исправление: cetjs2 (всего исправлений: 2)

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

anonymous
()

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

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

emulek
()

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

dn2010 ★★★★★
()

Вот какое решение я нашел узнав про 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

Решение. С правами админа вписываем в /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. Редактируем планировщик:

# crontab -e

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

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

jkjkjirf
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.