Форум русскоязычного сообщества Ubuntu


Автор Тема: Ограничение локального входа по времени  (Прочитано 6534 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Densakh

  • Автор темы
  • Участник
  • *
  • Сообщений: 125
    • Просмотр профиля
Возникла вот такая вот потребность - ограничить локальный вход по времени. Например с 18-00 до 22-00 разрешить логин на машину, а во все остальное время - запретить. Как и чем это сделать? PAM я уже ковырял - ничерта не понял, и не заработало.
Буду рад более-менее подробным шагам. В инете инфы по этому вопросу - мизер.

Пользователь решил продолжить мысль 03 Марта 2010, 15:35:42:
пока нашел вот такой вот кривой выход по КРОНУ:
в 18-00 делаем passwd - l user
а в 22-00 делаем passwd -u user
как бы все работает как надо...но что-то криво все это, неправильно как-то...
« Последнее редактирование: 03 Марта 2010, 15:35:42 от Densakh »
Ubuntu 8.04, Win Vista.

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Ограничение локального входа по времени
« Ответ #1 : 03 Марта 2010, 15:51:38 »
Я так понимаю, что для этого есть pam_time. Вроде бы там все прозрачно и просто:

http://opennet.ru/man.shtml?topic=pam_time&category=8&russian=2
http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag-pam_time.html

что именно не получилось?

Оффлайн Densakh

  • Автор темы
  • Участник
  • *
  • Сообщений: 125
    • Просмотр профиля
Re: Ограничение локального входа по времени
« Ответ #2 : 03 Марта 2010, 15:57:53 »
не могу понять что именно прописать в /etc/security/time.conf
и что делать дальше
Ubuntu 8.04, Win Vista.

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Ограничение локального входа по времени
« Ответ #3 : 03 Марта 2010, 16:26:13 »
Ну вот примерно так (только что попробовал - все работает): Вру. Что-то не то. Пытаюсь разобраться...

1. Определяем, что именно хотим ограничить по pam_time. В нашем случае (например) вход через gdm.
2. Идем в директорию /etc/pam.d и открываем файл gdm
3. Вставляем туда (в начало файла) строку

login account required pam_time.so

и записываем файл.
4. Идем в файл /etc/security/time.conf и создаем в нем правило для ограничения.
Например, чтобы разрешить все входы с 18:00 до 20:00 прописываем

login ; tty* & !ttyp* ; !root ; !Al1800-2000

(это запрет всем, кроме рута). Описание файла time.conf - man time.conf)
« Последнее редактирование: 03 Марта 2010, 16:33:55 от Karl500 »

Оффлайн Densakh

  • Автор темы
  • Участник
  • *
  • Сообщений: 125
    • Просмотр профиля
Re: Ограничение локального входа по времени
« Ответ #4 : 03 Марта 2010, 16:38:44 »
Спасибо огромное, что-то я файл GDM упустил из вида...
Все получилось! :)
Ubuntu 8.04, Win Vista.

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Ограничение локального входа по времени
« Ответ #5 : 03 Марта 2010, 16:45:19 »
Да? А у меня как раз - НЕ получилось...  :o Поделитесь, плиз... :)

Оффлайн Densakh

  • Автор темы
  • Участник
  • *
  • Сообщений: 125
    • Просмотр профиля
Re: Ограничение локального входа по времени
« Ответ #6 : 03 Марта 2010, 16:46:44 »
Да? А у меня как раз - НЕ получилось...  :o Поделитесь, плиз... :)
;D ;D проверил - доступ закрыт. И войти никак не могу, ни админом, ни юзером. ;D
Ubuntu 8.04, Win Vista.

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Ограничение локального входа по времени
« Ответ #7 : 03 Марта 2010, 22:53:46 »
Я, кажется, понял, как это работает...

Значит, так. В файле /etc/security/time.conf могут быть записаны правила для совершенно разных сервисов. Например, для входа по ssh строка будет иметь вид:

sshd;*;username;!Al1800-2400

Здесь пользователю с именем username запрещают работать c 18:00 до 24:00 во все дни недели (все остальные пользователи могут входить через ssh).
При этом в файл /etc/pam.d/sshd нужно вставить строку

account required pam_time.so

Т.е., резюмируя, идея такая: в файле /etc/security/time.conf может быть записано множество разных правил для разных сервисов. При этом в соответствующие файлы для этих сервисов в /etc/pam.d/* нужно вставить загрузку pam_time.so

Оффлайн Densakh

  • Автор темы
  • Участник
  • *
  • Сообщений: 125
    • Просмотр профиля
Re: Ограничение локального входа по времени
« Ответ #8 : 04 Марта 2010, 08:01:38 »
Спасибо, Karl500, я с твоей помощью разобрался.
И в итоге нашел маленькую прогу, которая это прекрасно делает в GUI.
Только вот не разлогинивает пользователя.
Timekpr
https://launchpad.net/timekpr
http://ubuntuforums.org/showthread.php?t=887769
Довольно-таки просто и удобно ;)

ЗюЫю добавка после тестирования: разлогинивает пользователя, если в проге ставить вторую галку - на общее время работы в сутки! УРА! :)
Естественно общее время должно совпадать с разрешенными часами работы, тогда все пучком.
« Последнее редактирование: 04 Марта 2010, 13:20:42 от Densakh »
Ubuntu 8.04, Win Vista.

Оффлайн amitim

  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Ограничение локального входа по времени
« Ответ #9 : 02 Октября 2010, 15:31:54 »
Порыскав в инете инфу по топику обнаружил, что подробное описание настроек на русском языке встречается очень редко. Посему хочу написать как я настраивал ограничение по времени (использовалась замечательная статья Scott'а Kindley отсюда http://skindley.wordpress.com/2006/12/11/fedora-core-6-controlling-logins-by-time/ ).

Задача:
пользователь myuser. Система Ubuntu.
Время, когда можно пользоваться компьютером вышеуказанным пользователем:
Понедельник, вторник, четверг в 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" выполняют принудительное завершение сеанса пользователя, если он сам не захотел отключаться.
« Последнее редактирование: 24 Октября 2010, 20:41:01 от amitim »

Оффлайн RustemNur

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Re: Ограничение локального входа по времени
« Ответ #10 : 02 Октября 2010, 16:30:15 »
2 amitim :
Хотелось бы узнать, зачем вы отвечаете на пост от марта месяца, тем более, что автор вопроса все уже решил?
Если вы хотите поделиться полезной информацией, то создайте топик в разделе HowTo; здесь же ваша тема "потонет" на следующий же день.

Оффлайн amitim

  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Re: Ограничение локального входа по времени
« Ответ #11 : 04 Октября 2010, 20:47:54 »
RustemNur, с модератором, конечно, дискутировать в топике негоже, но раз сообщение было адресовано мне тут - отвечу. Не уверен, что новый топик в каком-либо разделе будет лучше, чем продолжение уже изложенной кем-то мысли и что моя мысль тянет на полноценное HowTo. Время создания совсем не имеет значения, т.к. вопросы у других  появляются снова и снова. Решение, изложенное топикстартером по моему мнению немного сумбурно. Потому посчитал необходимым изложить свою мысль так, чтобы было понятнее для "не гуру", для тех, кто только вливается в ряды Linux. Альтернатива всегда должна быть. Одностороннее тыканье в англоязычные man'ы не всегда приятна пользователю, который не дружит с "ангельским" языком. А тут пусть читают, пробуют, сравнивают и делают сами выводы. Кому-то понравится путь, изложенный не мной. Linux - богатство выбора.
PS. Исправил в своем сообщении одну маленькую неточность, благодаря тому самому человечку myuser

 

Страница сгенерирована за 0.031 секунд. Запросов: 23.