/etc/os-release
説明するDebian GNU/Linux 9 (stretch)
/proc/version
説明するLinux version 4.4.132+ (jenkins@fdc-06) (gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) ) #1 SMP
sudo /sbin/wpa_supplicant -v
印刷wpa_supplicant v2.4
/etc/wpa_supplicant/wpa_supplicant.conf
設定ファイルでこれらの権限を設定しています。
両方の方法を試してみましたが、録音された一つ:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=linaro
このリクエスタのソースコードを読んだ後、別のコードが見つかりました。
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=linaro
それらのどれも動作しません:
$ ls -la /var/run/wpa_supplicant
ls: cannot open directory '/var/run/wpa_supplicant': Permission denied
$ sudo ls -la /var/run/wpa_supplicant
srwxrwx--- 1 root root 0 Mar 22 19:24 wlan0
構成に何を記録しても、所有者とグループはルートです。
数ヶ月前は、Linux 4.4.71+で正常に動作しました。
UNIXソケットの権限を設定するには?
PS:背景情報:これはARM SoC上で動作する組み込みシステムです。私はこの制御インターフェースをプログラム的に使用します。つまり、Wi-Fiを制御するには、通常のユーザーアカウントで実行されるソフトウェアが必要です(接続、切断、パスワード設定など)。 LinuxデスクトップまたはX-windowsが実行されていません。
修正する:コメントで提案されているように、より多くのコンテキストを追加してください。これはカスタマイズされた組み込みデバイスに基づいています。RK3288、Linuxカーネルの実行、最小限のシステムサービスセット(wpa_supplicantが1つ)、および私が開発した単一のアプリケーションを実行します。ユーザーはタッチスクリーンとネットワークを介して自分のアプリとやり取りします(ただし、まず何とか接続する必要があります)。 X WindowやWaylandもなく、デスクトップもなく、マウスやキーボードもありません。
答え1
実際、UNIXソケットに関連付けられた非ルートグループの構成を設定する方法は次のとおりです。wpa_requester非常に奇妙で文書化されていません。次の手順が役に立ちます。
- グループを作成する(リナロあなたの場合);とにかく、私の例では「netdev」を使用します。これはほとんどのディストリビューションにすでに存在する必要があります(そうでない場合:)
sudo groupadd netdev
。 - ユーザーをグループに関連付けます(例:ユーザー)私のユーザー"
sudo usermod -a -G netdev my_user
:); - 方法を確認してくださいwpa_requester開始(
ps -ef | grep wpa_supplicant
):-O
たとえば、このオプションを使用する場合は、-O /run/wpa_supplicant
次を含む文字列に変更します。目次そしてグループ属性、割り当てグループ到着Web開発者、写真-O "DIR=/run/wpa_supplicant GROUP=netdev"
。- andの代わりにwhileを使用している場合は、
-O
このオプションを以前のように設定する必要があります。-i
-s
-O
wpa_requester-c
この場合、設定ファイル(オプション)は使用されません。正しい設定の例:/sbin/wpa_supplicant -u -s -O "DIR=/run/wpa_supplicant GROUP=netdev"
; - 使用されていない場合と
-O
使用される場合-i
は-c
設定できますグループプロパティからwpa_requester設定ファイル(-c
オプションで指定)例:ctrl_interface=DIR=/run/wpa_supplicant GROUP=netdev
。
/var/run
通常、シンボリックリンクの場合と同様に、上記の例ではシンボリックリンクを代わりに使用できます。/run
/var/run
/run
答え2
問題は、wpa_supplicantが私の設定をロードしないことです。設定がまったく読み込まれているかどうかはわかりません。ドキュメントまたはソースコードでデフォルト設定へのパスが見つかりません。問題を解決する方法は次のとおりです。
sudo nano /lib/systemd/system/wpa_supplicant.service
次の行を探してください。
ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
それに変える
ExecStart=/sbin/wpa_supplicant -u -s -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
変更を適用するには、Linuxを再起動してください。
以前のバージョンのOSにその機能があるかどうか、wpa_supplicant.service
または古いwpa_supplicantがデフォルト設定を使用しているかどうかはわかりません。これを確認するために、古いOSをNANDにフラッシュするのは少し複雑です。
PSこれはコマンドラインヘルプの関連部分です。
-c = Configuration file
-C = ctrl_interface parameter (only used if -c is not)
-i = interface name
-I = additional configuration file
-d = increase debugging verbosity (-dd even more)
-f = log output to debug file instead of stdout
-g = global ctrl_interface
-G = global ctrl_interface group
-s = log output to syslog instead of stdout
-O = override ctrl_interface parameter for new interfaces
-q = decrease debugging verbosity (-qq even less)
-u = enable DBus control interface
-W = wait for a control interface monitor before starting
答え3
使用wpa_priv
ルートで起動し wpa_priv
(たとえば、システム起動スクリプトで)、コマンドラインでアクティブなインターフェイスを設定します。
wpa_priv -B -c /var/run/wpa_priv -P /var/run/wpa_priv.pid [driver:interface]
wpa_priv -B -c /var/run/wpa_priv -P /var/run/wpa_priv.pid nl80211:wlan0
次に、wpa_supplicant
wpapriv グループのユーザーを使用して root 以外のユーザーとして実行します。
wpa_supplicant -i wlan0 -c wpa_supplicant.conf
wpa_priv
マニュアルページを確認してください。https://www.linux.org/docs/man8/wpa_priv.html