web-dev-qa-db-ja.com

Gentoo Linux GPGは、パラメーターを介して渡されたファイルを適切に暗号化しますが、標準入力からの読み取り時に「デバイスに対して不適切なioctl」をスローします

私はカーネル4.1.7-hardened-r1でGentoo Hardenedを実行しており、SSHから開いたシェルセッションからGPGを使用してファイルを暗号化し、DISPLAY変数を無効にしてpinentry-cursesを使用しようとしていますパスワードプロンプト。 gpg -o file.gpg --symmetric fileを使用すると、問題なく暗号化できます。 pv file | gpg -o file.gpg --symmetricを使用すると、次のエラーメッセージが表示されます。

gpg-agent[30745]: command get_passphrase failed: Inappropriate ioctl for device
26
RAKK

このドキュメント のように、それが機能するようにGPG_TTY変数を設定する必要があります。

GPG_TTY=$(tty)
export GPG_TTY

これらの2行は.bashrc(bashを想定)、新しいターミナルセッションを開くたびに実行されます。

ただし、別の解決策があります。bashでは、pvを実行し、プロセス置換を使用して、ファイルであるかのように見せかけることができます。

gpg -o file.gpg --symmetric <(pv file)

そのため、追加の入力を期待するプログラムにパイプインすることは良い考えではないかもしれません。予想とは異なる動作をする可能性があります。

44
TNW