Gagal membuka file konfigurasi '/ dev / fd / 63', kesalahan: Tidak ada file atau direktori untuk wpa_supplicant

12

Ketika saya melakukan ini:

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

saya mendapat

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'

Ada ide?

Oskar K.
sumber

Jawaban:

14

Mengutip wiki ArchLinux :

Catatan: Karena proses substitusi, Anda tidak dapat menjalankan perintah ini dengan sudo - Anda akan memerlukan shell root.

Anda harus dapat menggunakan seperti di su -cbawah ini sudo:

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

Substitusi proses <(…) membuat pipa, digunakan /dev/fduntuk memberikan jalur yang setara dengan deskriptor file tempat pipa berada, dan meneruskan nama file sebagai argumen ke program. Di sini programnya sudo, dan ia melewati argumen itu (yang hanya berupa string, sejauh menyangkut) wpa_supplicant, yang memperlakukannya sebagai nama file.

Masalahnya adalah sudo menutup semua file deskriptor kecuali yang standar (stdin = 0, stdout = 1 dan stderr = 2). Pipa substitusi proses ada di deskriptor lain, yang ditutup, jadi ketika wpa_supplicantmencoba membukanya, ia menemukan file yang tidak ada.

Jika kebijakan sudo Anda membolehkannya ( closefrom_overrideopsi diaktifkan), Anda dapat mengatakannya untuk tidak menutup file deskriptor. Tapi ini biasanya tidak demikian.

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

Atau, karena Anda tidak menggunakan input standar, sampaikan data di sana.

wpa_passphrase  | sudo wpa_supplicant  -c /dev/stdin

Atau, jalankan shell dari sudo dan letakkan proses substitusi di sana. Berhati-hatilah dengan mengutip jika perintah berisi karakter khusus.

sudo bash -c 'wpa_supplication … -c <(wpa_passphrase …)'
Gilles 'SANGAT berhenti menjadi jahat'
sumber
1

Bagi yang berasal dari mesin pencari web: pastikan Anda /devsudah terpasang. Kesalahan yang mudah dilakukan saat chroot, yang kemudian dapat menghasilkan kesalahan seperti ini.

Vladimir Panteleev
sumber