无法打开配置文件“ / 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'

有任何想法吗?

Answers:



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运行shell并在其中放置进程替换。如果命令包含特殊字符,请小心加引号。

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

1

对于来自网络搜索引擎的用户:确保/dev已安装。chroot时容易犯的一个错误,然后可能导致诸如此类的错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.