Falha ao abrir o arquivo de configuração '/ dev / fd / 63', erro: Esse arquivo ou diretório não existe para wpa_supplicant

12

Quando eu faço isso:

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

eu recebo

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'

Alguma ideia?

Oskar K.
fonte

Respostas:

14

Citando o wiki do ArchLinux :

Nota: Devido à substituição do processo, você não pode executar este comando com o sudo - será necessário um shell raiz.

Você deve ser capaz de usar su -csob sudoassim:

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

A substituição de processo <(…) cria um canal, usa /dev/fdpara fornecer um caminho equivalente ao descritor de arquivo em que o canal está e passa o nome do arquivo como argumento para o programa. Aqui está o programa sudo, e ele passa esse argumento (que é apenas uma string, no que diz respeito a) wpa_supplicant, que o trata como um nome de arquivo.

O problema é que o sudo fecha todos os descritores de arquivos, exceto os padrão (stdin = 0, stdout = 1 e stderr = 2). O canal da substituição do processo está em outro descritor, que é fechado; portanto, ao wpa_supplicanttentar abri-lo, ele encontra um arquivo que não existe.

Se sua política do sudo permitir ( closefrom_overrideopção ativada), você pode dizer para não fechar os descritores de arquivo. Mas esse geralmente não é o caso.

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

Como alternativa, como você não está usando entrada padrão, passe os dados para lá.

wpa_passphrase  | sudo wpa_supplicant  -c /dev/stdin

Como alternativa, execute um shell no sudo e coloque a substituição do processo lá. Tome cuidado ao citar se o comando contiver caracteres especiais.

sudo bash -c 'wpa_supplication … -c <(wpa_passphrase …)'
Gilles 'SO- parar de ser mau'
fonte
1

Para quem vem de um mecanismo de pesquisa na web: verifique se o seu /devestá montado. Um erro fácil de cometer ao fazer o chroot, que pode resultar em erros como este.

Vladimir Panteleev
fonte