Armadilloフォーラム

Armadillo-x1でWebからIPアドレスを変更したい

oota-h

2022年4月19日 14時01分

お世話になっております。太田と申します。
Armadillo-x1にlighttpdサーバーを建て、その上でWebアプリケーションを動作させています。

このWebアプリケーションでx1自体のIPアドレスも変更できるようにしたいと考え、cgi+シェルスクリプトで実現できないか試しています。
具体的には、
1. WebフォームにIPアドレスを入力し、送信ボタンを押下
2. 上記送信ボタンをトリガーにcgiが起動
3. cgiからシェルスクリプト(nmcliコマンド)を実行
という形でプログラムを組みました。
通常のコンソールからcgiとシェルスクリプトを実行すると問題なく動作し、IPアドレスも書き変わるのですが、
Web上から実行すると権限の問題かIPアドレスを書き替えるコマンド(nmcli)が動作していないようです。
(echo などのコマンドは動作しています)
nmcliをWebから実行することができる方法があればご教示いただけますと幸いです。

コメント

at_ohsawa

2022年4月20日 11時51分

NetworkManagerの権限はpolkitという仕組みで制御されているので、
次のようなファイルを作ることでルールを設定できます。

/var/lib/polkit-1/localauthority/50-local.d/10-nm.pkla

[www-data can manage nmcli]
Identity=unix-user:www-data
Action=org.freedesktop.NetworkManager.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes

lighttpd含め大抵のcgiの実行ユーザーはwww-dataですが、違う場合は合わせて変更してください。
1行目の[...]の中身はルールの説明なので何でも良いのですが、必要な行です。

oota-h

2022年4月20日 15時53分

ご回答いただきありがとうございます。
早速試してみたところ、問題なくWebからも変更することが可能になりました。
ありがとうございました。