我想在UNIX上以受限特权运行脚本。具体来说,我想运行我收到的代码而不让它发送数据。我目前的解决方案是:如何阻止给定用户的所有流量?
- 创建一个虚拟用户。
- 使用
iptables
来阻止伪用户的所有传出流量。 - 使用
su - dummy -c 'command'
作为虚拟用户运行目标程序。
我实现上述第2步的方式如this page中所述。具体来说,我用下面的命令来添加新的规则:
sudo iptables -I OUTPUT -m owner --uid-owner dummy -j DROP
当我现在尝试通过切换到虚拟帐户ping一个网址,因为我加入了规则iptables的平安确实失败。下面是一个命令:
> su - dummy -c 'ping www.google.com'
ping: unknown host www.google.com
也是一样尝试使用traceroute
。然而,当我尝试使用mutt
类似的方式发送电子邮件,它成功:
su - dummy -c 'echo "test" | mutt -s test [emailaddress]'
为什么不规则街区,以及更普遍,如何确保所有出站流量被阻挡了我正在运行的程序?
这可能更适合http://superuser.com/。 – 2013-03-06 02:25:17
谢谢,我不知道那个网页。我认为没有任何方法可以在那里转移这个问题,而不必重新发布。 – ask 2013-03-06 02:32:02