我想在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