UNIX で権限を制限してスクリプトを実行したいと考えています。具体的には、データを送信せずに受け取ったコードを実行したいと考えています。私の現在の解決策は次のとおりです。
- ダミーユーザーを作成します。
iptables
ダミー ユーザーのすべての送信トラフィックをブロックするために使用します。- を使用して、ターゲット プログラムをダミー ユーザーとして実行します
su - dummy -c 'command'
。
上記のステップ 2 を達成する方法は、このページで説明されているとおりです。具体的には、次のコマンドを使用して新しいルールを追加します。
sudo iptables -I OUTPUT -m owner --uid-owner dummy -j DROP
ダミー アカウントに切り替えて Web アドレスに ping を実行しようとすると、ルールを iptables に追加したため、実際には ping が失敗します。そのコマンドは次のとおりです。
> su - dummy -c 'ping www.google.com'
ping: unknown host www.google.com
を使用しようとする場合も同様traceroute
です。ただし、を使用して同様の方法でメールを送信しようとするとmutt
、成功します。
su - dummy -c 'echo "test" | mutt -s test [emailaddress]'
ルールがこれをブロックしないのはなぜですか? より一般的には、実行中のプログラムのすべての送信トラフィックがブロックされるようにするにはどうすればよいですか?