/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 소켓에 대한 권한을 설정하는 방법은 무엇입니까?
추신: 배경 정보: 이는 ARM SoC에서 실행되는 임베디드 시스템입니다. 나는 이 제어 인터페이스를 프로그래밍 방식으로 사용합니다. 즉, Wi-Fi를 제어하기 위해 일반 사용자 계정으로 실행되는 소프트웨어가 필요합니다(연결, 연결 끊기, 비밀번호 설정 등). Linux 데스크톱이나 X-windows가 실행되고 있지 않습니다.
고쳐 쓰다:의견에 제안된 대로 더 많은 컨텍스트를 추가하세요. 이는 맞춤형 임베디드 장치를 기반으로 합니다.RK3288, Linux 커널 실행, 최소한의 시스템 서비스 세트(wpa_supplicant가 하나임) 및 내가 개발한 단일 애플리케이션을 실행합니다. 사용자는 터치 스크린과 네트워크를 통해 내 앱과 상호 작용합니다(그러나 먼저 어떻게든 연결해야 합니다). 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
다음을 포함하는 문자열로 변경합니다.목차그리고그룹속성, 할당그룹도착하다웹 개발자, 그림-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 그룹의 사용자를 사용하여 루트가 아닌 사용자로 실행합니다.
wpa_supplicant -i wlan0 -c wpa_supplicant.conf
wpa_priv
매뉴얼 페이지를 확인하십시오 :https://www.linux.org/docs/man8/wpa_priv.html