Я хочу того из пользователей (не в списке sudoers), имеют доступ в Интернет с 14:00 до 16:00 и с 17:00 до 18:30. Действительно ли это возможно? Я могу установить различные временные интервалы в течение различных недельных дней?
Можно использовать iptables's owner
расширение, чтобы заблокировать пользователя от доступа к сети, как
sudo iptables -A OUTPUT -m owner --uid-owner user_you_want_to_block -j REJECT
Теперь можно использовать крон, чтобы добавить или удалить те правила (которому, возможно, понадобятся определенные сценарии оболочки, если Вы уже имеете некоторые iptable правила или хотите это к к для различных пользователей в разное время).
вход в систему как корень:
sudo su
проверьте состояние своего брандмауэра:
ufw status
если брандмауэр неактивен, проблема:
ufw enable
для ограничения пользователя wilhelm доступ в Интернет по воскресеньям, вторники, среды и пятницы к позволенным временным интервалам (14:00-16:00 и 17:00-18:30):
iptables -I OUTPUT -p tcp -m owner --uid-owner wilhelm -m time --weekdays Su,Tu,We,Fr --timestart 00:00:01 --timestop 14:00:00 -j DROP
iptables -I OUTPUT -p tcp -m owner --uid-owner wilhelm -m time --weekdays Su,Tu,We,Fr --timestart 16:00:00 --timestop 17:00:00 -j DROP
iptables -I OUTPUT -p tcp -m owner --uid-owner wilhelm -m time --weekdays Su,Tu,We,Fr --timestart 18:30:00 --timestop 23:59:59 -j DROP
примечание стороны: *отметьте использование -I
переключатель, а не -A
переключатель iptables
команда. -I
переключатель вставляет вышеупомянутые правила (3). вначале (вершина) ВЫВОДА управляет цепочкой, а не у основания цепочки. размещение вручную добавленных правил сверху регулярных политик брандмауэра важно, так как правила обрабатываются от начала до конца. если самые важные правила ПРИНИМАЮТ пакет, цепочка, ВЫВОД, больше не проверяется на следующие правила, которые, возможно, ОТБРОСИЛИ пакет.
удостоверьтесь, что правила действительно правильно вводились:
iptables -L OUTPUT
для удаления несоответствующего правила скажем правило № 1, (количество на основе 1 от вершины iptables -v -L OUTPUT
) проблема: iptables -D OUTPUT 1
.
сохраните iptables для восстановления на следующей начальной загрузке:
iptables-save > /etc/iptables.rules
в /etc/rc.local
добавьте строку:
iptables-restore < /etc/iptables.rules
готово
--
протестированный на (сновещательной) Ubuntu 11.10, локаль: он