root権限なしでiwlistをスキャンする

root権限なしでiwlistをスキャンする

ワイヤレスインターフェイスの1つをスキャンする必要があるアプリケーションを作成しています。過去に私のプログラムが実行され、sudoコードで使用されていました。

iwlist wlanX scan

しかし、今はroot権限なしでプログラムを実行することを許可したいと思います。私がこの仕事をする能力を変えれば、/sbin/iwlist比較的安全でしょうかcap_net_admin+eipIwlist詳細な無線情報を表示するためにのみ使用されるため、このコマンドへのより広いアクセス権を持つことはそれほど危険ではありません。

答え1

sudoグループメンバーがパスワードなしでコマンドを実行できるように構成できます。ファイルvisudo編集の場合sudoers

# visudo

次のような内容を追加します。

%mygroup ALL = (root) NOPASSWD: iwlist wlanX scan

ファイルの下部に追加します(ここでmygroupグループ名の前にはパーセント記号が付いています)。

%mygroupに変更して、単一のユーザーがこのプログラムを実行できるようにすることもできます。myuserここで、myuserユーザー名は不足しているパーセント記号に注意してください。

%mygroupまたはに置き換えて、誰でもスキャンできるようにすることができますALL

使用するとすべてのコマンドがcapabilities許可されますが、上記のように構成すると特定のオプションを持つ 1 つのコマンドのみに制限されます。これはより安全でなければなりません。cap_net_adminiwlistsudo

もう1つの(一般的な)理由は、構成がをsudo使用するよりも移植性に優れているためですcapabilites。ただし、Linuxのみを使用している場合は関係ありません。

答え2

中毒でないiwlist scan場合wpa_requesterインストール後、次のことを試すことができます。

wpa_cli -i wlan0 scan > /dev/null; sleep 5; wpa_cli -i wlan0 scan_results

実行にはroot権限は必要ありません。出力はcsv形式に似ており、解析するのは簡単です。

bssid / frequency / signal level / flags / ssid
aa:bb:cc:dd:ee:aa   5220    -26 [WPA2-PSK-CCMP][WPS][ESS]   AP-5G
aa:bb:cc:dd:ee:bb   5745    -62 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]  AP2
aa:bb:cc:dd:ee:cc   2412    -50 [WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]  AP3

答え3

sudoパスワードを要求しないように設定できます。

visudo次の行を入力して追加します。

myuser ALL=(root) NOPASSWD: /sbin/iw wlan0 scan
myuser ALL=(root) NOPASSWD: /sbin/iwlist wlan0 scan

または

%mygroup ALL=(root) NOPASSWD: /sbin/iw wlan0 scan
%mygroup ALL=(root) NOPASSWD: /sbin/iwlist wlan0 scan

フルパスを指定しiw、まだrunを使用する必要がありますsudoが、パスワードを入力するように求められません。

sudo iw wlan0 scan

ありがとうこんにちはこれは答えの一部です。

答え4

システムでNetwork Managerを使用している場合、sudo権限は必要ありません。ただ実行してください:

nmcli dev wifi rescan

このコマンドを実行すると(30秒間続くことがあります)、利用可能なWiFiネットワークの完全なリストが他のツールでも表示されます。

たとえば、私のテストでは次のようになります。

iwlist scan             # lists 1 AP
nmcli dev wifi rescan
iwlist scan             # lists 8 APs

関連情報