Impossibile aprire il file di configurazione '/ dev / fd / 63', errore: nessun file o directory per wpa_supplicant


12

Quando faccio questo:

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

ottengo

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'

Qualche idea?

Risposte:


14

Citando il wiki di ArchLinux :

Nota: a causa della sostituzione del processo, non è possibile eseguire questo comando con sudo: sarà necessaria una shell di root.

Dovresti essere in grado di utilizzare su -cin questo sudomodo:

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

11

La sostituzione del processo <(…) crea una pipe, utilizza /dev/fdper fornire un percorso equivalente al descrittore di file in cui si trova la pipe e passa il nome del file come argomento al programma. Qui il programma è sudo, e passa quell'argomento (che è solo una stringa, per quanto riguarda) wpa_supplicant, che lo tratta come un nome di file.

Il problema è che sudo chiude tutti i descrittori di file tranne quelli standard (stdin = 0, stdout = 1 e stderr = 2). La pipe della sostituzione del processo si trova su un altro descrittore, che viene chiuso, quindi quando wpa_supplicanttenta di aprirlo, trova un file che non esiste.

Se la tua politica sudo lo consente ( closefrom_overrideopzione abilitata), puoi dirgli di non chiudere i descrittori di file. Ma di solito non è così.

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

In alternativa, poiché non si utilizza l'input standard, passare i dati lì.

wpa_passphrase  | sudo wpa_supplicant  -c /dev/stdin

In alternativa, eseguire una shell da sudo e inserire lì la sostituzione del processo. Fai attenzione quando apri il comando se il comando contiene caratteri speciali.

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

1

Per chi proviene da un motore di ricerca web: assicurati che /devsia montato. Un errore facile da fare quando si fa il chrooting, che può quindi causare errori come questo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.