
ワイヤレスインターフェイスの1つをスキャンする必要があるアプリケーションを作成しています。過去に私のプログラムが実行され、sudo
コードで使用されていました。
iwlist wlanX scan
しかし、今はroot権限なしでプログラムを実行することを許可したいと思います。私がこの仕事をする能力を変えれば、/sbin/iwlist
比較的安全でしょうかcap_net_admin+eip
?Iwlist
詳細な無線情報を表示するためにのみ使用されるため、このコマンドへのより広いアクセス権を持つことはそれほど危険ではありません。
答え1
sudo
グループメンバーがパスワードなしでコマンドを実行できるように構成できます。ファイルvisudo
編集の場合sudoers
:
# visudo
次のような内容を追加します。
%mygroup ALL = (root) NOPASSWD: iwlist wlanX scan
ファイルの下部に追加します(ここでmygroup
グループ名の前にはパーセント記号が付いています)。
%mygroup
に変更して、単一のユーザーがこのプログラムを実行できるようにすることもできます。myuser
ここで、myuser
ユーザー名は不足しているパーセント記号に注意してください。
%mygroup
またはに置き換えて、誰でもスキャンできるようにすることができますALL
。
使用するとすべてのコマンドがcapabilities
許可されますが、上記のように構成すると特定のオプションを持つ 1 つのコマンドのみに制限されます。これはより安全でなければなりません。cap_net_admin
iwlist
sudo
もう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