Linuxアプリケーションでioctlを介してWi-Fiアダプタへの非ルートアクセス - 権限を付与する方法は?

Linuxアプリケーションでioctlを介してWi-Fiアダプタへの非ルートアクセス - 権限を付与する方法は?

OdroidボードのUbuntu 20.04でQt5 cアプリケーションをデバッグしようとしています。アプリケーションはioctl()を介してWi-Fiアダプタと通信します。たとえば、次のようになります。

int fd = iw_sockets_open();
struct ifreq ifreq;
//ifreq.ifr_name holds "wlxe894f617ebe6" from "iw dev" output
if (ioctl(fd, SIOCSIFFLAGS, &ifreq) == -1) {
  return FALSE;
}

問題は、sudoで実行した場合にのみ機能することです。 QtCreatorで実行すると、上記のioctl()呼び出しで失敗し、-1を返し、「操作が許可されていません」というperror()を返します。 sudoでは正常に動作し、よりうまく動作します。

lsusb は、アダプタ名を次のように指定します。

Bus 001 Device 012: ID 148f:5572 Ralink Technology, Corp. RT5572 Wireless Adapter

iw devは以下を提供します:

phy#0
        Interface wlxe894f617ebe6
                ifindex 3
                wdev 0x1
                addr e8:94:f6:17:eb:e6
                type managed
                txpower 20.00 dBm

また、アダプタの/dev/ディレクトリにそのファイルがないようです。この場合、ioctl()へのユーザーアクセスをどのように付与しますか?

他のUSBデバイスと同様にアクセス権を付与しようとしました。

SUBSYSTEM=="usb", ATTRS{idVendor}=="148f", ATTRS{idProduct}=="5572", MODE="0666"

/etc/udev/rules.d/50-myusb.rulesにありますが、結果はありません。 「wlan」などの一部のグループにユーザーを追加する必要があると思いますが、関連するグループ名を見つけることができません。

ベストアンサー1

おすすめ記事