구성 파일 '/ dev / fd / 63'을 (를) 열지 못했습니다. 오류 : wpa_supplicant에 대한 해당 파일 또는 디렉토리가 없습니다.


12

내가 이것을 할 때 :

sudo wpa_supplicant -D nl80211,wext -i wlp4s0 -c <(wpa_passphrase "some ssid" "password")

나는 얻다

Successfully initialized wpa_supplicant
Failed to open config file '/dev/fd/63', error: No such file or directory
Failed to read or parse configuration '/dev/fd/63'

어떤 아이디어?

답변:


14

ArchLinux 위키 인용하기 :

참고 : 프로세스 대체로 인해 sudo를 사용하여이 명령을 실행할 수 없습니다. 루트 쉘이 필요합니다.

당신은 사용할 수 있어야 su -c에서 sudo이렇게 같은 :

$ sudo su -c 'wpa_supplicant -D nl80211,wext -i wlp4s0 -c \
    <(wpa_passphrase "some ssid" "password")'

11

프로세스 대체 <(…) 는 파이프를 작성하고 파이프 /dev/fd가있는 파일 디스크립터와 동등한 경로를 제공하는 데 사용 하며 파일 이름을 프로그램의 인수로 전달합니다. 여기에서 프로그램은이며 sudo, 해당 인수 (관련된 문자열 만 해당)를 wpa_supplicant파일 이름으로 처리 하는 인수로 전달합니다 .

문제는 sudo가 표준 파일 디스크립터 (stdin = 0, stdout = 1 및 stderr = 2)를 제외한 모든 파일 디스크립터를 닫는다는 것입니다. 프로세스 대체 파이프는 다른 디스크립터에 있으며 닫히므로 wpa_supplicant열려고 시도하면 존재하지 않는 파일을 찾습니다.

sudo 정책에서 허용하는 경우 ( closefrom_override옵션 사용) 파일 설명자를 닫지 않도록 지시 할 수 있습니다. 그러나 이것은 보통 그렇지 않습니다.

sudo -C 64 wpa_supplicant  -c <(wpa_passphrase …)

또는 표준 입력을 사용하지 않으므로 데이터를 전달하십시오.

wpa_passphrase  | sudo wpa_supplicant  -c /dev/stdin

또는 sudo에서 쉘을 실행하고 프로세스 대체를 넣습니다. 명령에 특수 문자가 포함되어 있으면 인용 부호를주의하십시오.

sudo bash -c 'wpa_supplication … -c <(wpa_passphrase …)'

1

웹 검색 엔진에서 온 사용자의 경우 : /dev마운트되어 있는지 확인하십시오 . chroot 할 때 쉽게 실수 할 수 있습니다. 그러면 이와 같은 오류가 발생할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.