この質問は完全に一般的なものであり、私の状況にのみ適用されるわけではありません。たとえば、DHCPを有効にする次の小さなスクリプトのよう$1
に、コマンドライン(!!)で送信する変数()は、送信するホスト名のみです。
#!/bin/bash
udhcpc -b -i eth0 -h $1
このようにudhcpcを実行するにはルートアクセスが必要なので、これを行う/etc/sudoers
には、次の行を含むように変更する予定です。
joe ALL = NOPASSWD: /path/to/enable_dhcp.sh
次のコマンドを実行するだけで、「joe」がそのスクリプトをルート権限で簡単に実行できるようになります
sudo /path/to/enable_dhcp.sh
パスワードを求められない(これは、joeがこれをスクリプト化できるようにするためです)。
今..私は、ルート権限で簡単に実行できるスクリプトで使用することは、あなたが望むものを何でも注入できるので、恐ろしいアイデアであることを知っています(または少なくとも私はそう思います)$1
。
だから...これに対処する最良の方法は何ですか?インジェクション攻撃に対して広く開かれていないときに、root権限でjoeに必要なことをさせ、変数を渡す(または環境変数を使用して効果的に行う)ようにするにはどうすればよいですか?