Error al abrir el archivo de configuración '/ dev / fd / 63', error: no existe dicho archivo o directorio para wpa_supplicant

12

Cuando hago esto:

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

yo obtengo

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'

¿Algunas ideas?

Oskar K.
fuente

Respuestas:

14

Citando el wiki de ArchLinux :

Nota: Debido a la sustitución del proceso, no puede ejecutar este comando con sudo; necesitará un shell raíz.

Debería poder usar su -cdebajo de esta sudomanera:

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

La sustitución del proceso <(…) crea una tubería, se usa /dev/fdpara dar una ruta que es equivalente al descriptor de archivo donde está la tubería, y pasa el nombre del archivo como argumento al programa. Aquí el programa es sudo, y pasa ese argumento (que es solo una cadena, en lo que a él respecta) wpa_supplicant, que lo trata como un nombre de archivo.

El problema es que sudo cierra todos los descriptores de archivos, excepto los estándar (stdin = 0, stdout = 1 y stderr = 2). La canalización de la sustitución del proceso está en otro descriptor, que se cierra, por lo que cuando wpa_supplicantintenta abrirlo, encuentra un archivo que no existe.

Si su política de sudo lo permite ( closefrom_overrideopción habilitada), puede indicarle que no cierre los descriptores de archivo. Pero este no suele ser el caso.

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

Alternativamente, como no está utilizando una entrada estándar, pase los datos allí.

wpa_passphrase  | sudo wpa_supplicant  -c /dev/stdin

Alternativamente, ejecute un shell desde sudo y coloque la sustitución del proceso allí. Tenga cuidado con las citas si el comando contiene caracteres especiales.

sudo bash -c 'wpa_supplication … -c <(wpa_passphrase …)'
Gilles 'SO- deja de ser malvado'
fuente
1

Para aquellos que vienen de un motor de búsqueda web: asegúrese de que /devesté montado. Un error fácil de cometer al hacer chrooting, que luego puede dar lugar a errores como este.

Vladimir Panteleev
fuente