回答:
注:プロセス置換のため、このコマンドをsudoで実行することはできません。ルートシェルが必要になります。
su -c以下のsudoように使用できるはずです:
$ sudo su -c 'wpa_supplicant -D nl80211,wext -i wlp4s0 -c \
<(wpa_passphrase "some ssid" "password")'
プロセス置換 <(…)はパイプを作成し、パイプを使用/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 …)'
ウェブ検索エンジンから来る人のために:あなた/devがマウントされていることを確認してください。chrootするときに簡単に間違えると、このようなエラーが発生します。