Не вдалося відкрити конфігураційний файл '/ 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установлена. Проста помилка при хронуванні, яка може призвести до таких помилок, як ця.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.