Как можно отключить сеть пользователю на Ubuntu 14.04/ 16.04? (Пользователь — не администратор.)
Ответ
Команда для отключения интернета нашлась на askubuntu
sudo iptables -A OUTPUT -p all -m owner --uid-owner
Эта команда сбрасывает все пакеты, исходящие от пользователя
Теперь нужно сделать это изменение постоянным.
В ответе на askubuntu предлагают для этого создать в директории /etc/network/if-up.d/ скрипт, который вызывает команду выше:
cd /etc/network/if-up.d/
gksudo gedit block_user
sudo chmod +x block_user
У меня это почему-то не сработало:(, после перезагрузки sudo iptables -L показал таблицу без упоминания этого пользователя.
Другой способ нашелся на ubuntu.ru.
Кроме помещения скрипта в /etc/network/if-up.d/, там предлагают вызывать скрипт из /etc/network/interfaces:
gksudo gedit /etc/network/interfaces
добавляем последней строкой
post-up /etc/network/if-up.d/block_user
Проверяем после перезагрузки:
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere owner UID match
Теперь работает.
UPD: Поскольку gksudo больше не рекомендуется и его собираются отменить, редактирование можно сделать, например, так:
(лучше открыть для этого еще один терминал)
sudo -i
вводим свой пароль и дальше работаем от имени rootа. Эта команда также перемещает в /root. Далее:
root:~# cd /etc/network/if-up.d/
root:~# gedit block_users &
root:~# chmod +x block_user
root:~# gedit /etc/network/interfaces
root:~# exit
Обратите внимание: если закрыть терминал с rootом или сделать exit, gedit закроется. Поэтому это можно делать только после окончания редактирования.
Источник:askubuntu
Комментариев нет:
Отправить комментарий