我想创建一个新用户(或组),以便与该用户一起运行的任何应用程序都无法连接到网络。
@Michael Kjörling 我已按照您的建议(使用 Ubuntu 12.04 64 位)并得到了一些错误信息:
$ sudo iptables -A OUTPUT -m owner --uid-owner xyz ! -i lo -j REJECT --reject-with network-unreachable
iptables v1.4.12: unknown reject type "network-unreachable"
Try `iptables -h' or 'iptables --help' for more information.
$ sudo iptables -A OUTPUT -m owner --uid-owner xyz ! -i lo -j REJECT
iptables v1.4.12: Can't use -i with OUTPUT
Try `iptables -h' or 'iptables --help' for more information.
$ sudo iptables -A OUTPUT -m owner --uid-owner xyz ! -j REJECT
iptables v1.4.12: cannot have ! before -j
Try `iptables -h' or 'iptables --help' for more information.
Run Code Online (Sandbox Code Playgroud)
最后,以下一个有效。但我不确定是否有什么问题。
$ sudo iptables -A OUTPUT -m owner --uid-owner xyz -j REJECT
$
Run Code Online (Sandbox Code Playgroud)
您可以使用 iptables 的所有者匹配扩展 (ipt_owner.ko) 以及环回接口的例外来阻止特定用户的外部网络通信。(或者,仅允许一组用户访问网络。)
例如:
modprobe ipt_owner
iptables -A OUTPUT -m owner --uid-owner $USERNAME ! -o lo -j REJECT
Run Code Online (Sandbox Code Playgroud)
(未经测试,但应该明白要点。)将 $USERNAME 替换为相关用户的登录名。
如何使用 iptables 限制用户/组的网络访问 - Nikesh Jauhari 的所有者匹配提供了一些背景知识。它也可以与组一起使用,但我不确定它如何处理主要和次要组。