我已遵循本指南: 如何阻止 Wine 应用程序的互联网访问?
并制定了以下规则:
sudo addgroup no-internet # Create group "no-internet"
sudo adduser $USER no-internet # Add current user to no-internet
sudo iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP
sudo ip6tables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP # To also block IPv6 traffic
然后我运行 WINE 应用程序:
sg no-internet -c "wine-stable pathToApp"
但是我如何使其成为一条持久规则,以便我不必通过运行 WINE 应用程序sg no-internet -c "wine-stable pathToApp"
(即即使我直接运行该应用程序)并且它即使在重启后也能正常工作?
答案1
问题在于用户的默认主要组。如果用户已创建并且其用户名属于默认用户组(大多数情况下默认设置下都是这个),则检查gid-owner
将不匹配,因为进程的所有者组 ID 不是no-internet
,而是该用户的组,而不是您尝试匹配的目标组 ID。
注意:如果您对当前正在运行的用户进行此更改,则sudo
可能会破坏某些功能,因此我建议您创建一个辅助测试用户*并从那里测试 Internet 规则
假设您的iptables
规则将持续存在,那么请进行以下额外更改:
sudo usermod -g no-internet $USER
然后,测试用户登录后的互联网连接(ping 8.8.8.8
应该说“操作不允许”,curl https://google.com
应该得到“无法解决”错误等)。
* 请注意,我使用deaduser
以下命令创建的,然后以该用户身份登录以测试 Internet 连接:sudo useradd --create-home --user-group -g no-internet deaduser
,然后以该用户身份强制登录以sudo su - deaduser
测试规则的配置。
我所做的测试是ping 8.8.8.8
(收到“操作不允许”的答复)和curl google.com
(收到“无法解决”的错误)。