Apacheのiptablesルールを含むいくつかのスクリプトを実行したい(dd-wrtのポート81で実行)。権限が不足して動作しないようです。 Apacheを再コンパイルする必要はありませんが、私が見逃した部分を誰かが指摘してくれることを願っています。
私はdd-wrt v3.0-r33525M kongac(10/16/17)を実行しています。ポート81でApacheインスタンスを実行しています。
この動作を防ぐコンパイルディレクティブ/デフォルトがあるように見えるため、Apacheをrootとして実行することはできません。
SUIDスクリプトを実行できません。実行できますが、SUID ビットはスクリプトなので無視されます。
私が間違っているかもしれませんが、Busyboxのバージョンにはsudo機能がないようです。
ポート80で実行されるGUIでスクリプトを実行できますが、より多くの人がこのインターフェイスにアクセスしてリンクをクリックする代わりにコマンドを実行する必要があるよりも、独自のシンプルなインターフェイスを構築したいと思います。
cronで何かできるといいのですが、ファイルをポーリングするにはcronが必要なので、本当に避けたい遅延が発生したいと思います。繰り返しますが、私はlocalhostにsshを接続し、そのように自分の権限を拡大できるとします。しかし、それは安全ではないように見え、多くの作業が必要になります。
答え1
システムが制限されているため、バイナリsetuidルートを作成するだけではセキュリティリスクが大幅に発生しない可能性がありますiptables
。よくわかりませんが、dd-wrt
Linuxに対応するのはrootです。
chmod u+s /sbin/iptables
ファイルがルートに属しているとします。システムがその機能をサポートしている場合は、必要な機能を設定する方が安全なオプションかもしれません。
setcap CAP_NET_ADMIN,CAP_NET_RAW+ep /sbin/iptables
(もっと必要な場合があります)。
あなたのコメントで述べたように、バイナリは読み取り専用ファイルシステムにあるので、ファイルのコピーを使用する必要があります。