如何在不授予任何 Internet 访问权限的情况下运行 Windows 程序?

如何在不授予任何 Internet 访问权限的情况下运行 Windows 程序?

所以我在 Linux 上有 CrossOver,但由于这基本上是我也帮助 Wine 人员的项目,并且几乎所有基础知识都适用于两者,所以我在下面询问

是否可以在Wine下启动一个Windows程序,使其完全无法访问互联网?

到目前为止,我在这件事上还是两手空空。我正在考虑编写自己的共享对象,以便进行修补,LD_PRELOAD但这类事情无论如何都与主题无关。

有没有办法从纯粹的用户角度来实现我想要的?内核命名空间可以以任何方式用于此目的吗?

答案1

我可以想到这种复杂的方式:创建一个单独的用户帐户,例如 wineuser 并在其下运行您的 Windows 应用程序。您可能想在您的用户帐户下运行此命令:(xhost +SI:localuser:wineuser以允许 wine 用户访问您的图形会话)并在 wine 帐户下导出 DISPLAY 变量,例如export DISPLAY=:0

要限制此用户访问 Internet,请运行此命令/添加此 iptables 规则:

iptables -I OUTPUT -m owner --uid-owner wineuser -j DROP

(或者您可以使用 REJECT 而不是 DROP)。


您还可以尝试 OpenSnitch:https://itsfoss.com/opensnitch-firewall-linux/或 LAF(Linux 应用程序防火墙):https://github.com/matrix-ac/LAF

答案2

您可以取消共享网络命名空间:

sudo unshare -n -- su your_user -c your_command

相关内容