Gentoo Linux GPG encripta correctamente un archivo pasado a través del parámetro pero arroja "ioctl inapropiado para el dispositivo" cuando lee desde la entrada estándar

23

Estoy ejecutando Gentoo Hardened con el kernel 4.1.7-hardened-r1 y estoy tratando de cifrar un archivo usando GPG desde una sesión de shell abierta desde SSH y con la DISPLAYvariable deshabilitada para usar pinentry-curses para el aviso de contraseña. Usando gpg -o file.gpg --symmetric filepuedo cifrar muy bien. Utilizando pv file | gpg -o file.gpg --symmetricme sale el siguiente mensaje de error:

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

Respuestas:

41

Debe configurar su variable GPG_TTY para que funcione, como en este documento :

GPG_TTY=$(tty)
export GPG_TTY

Se supone que esas dos líneas están en su .bashrc(suponiendo bash), por lo que se ejecutan cada vez que abre una nueva sesión de terminal.

Sin embargo, hay otra solución: en bash puedes ejecutar tu pvy pretender que es un archivo, usando la sustitución del proceso:

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

Como tal, puede que no sea una buena idea canalizar cosas a programas que esperan aportes adicionales. Puede funcionar de manera diferente a lo esperado.

TNW
fuente
¿Hay alguna forma de cambiar o corregir este comportamiento? En este momento, probé exactamente el mismo comando read-from-stdin en Debian y GPG me pidió mi contraseña.
RAKK
@RAKK ¿Podrías descifrar el archivo resultante?
TNW
Sí, sin problemas en Debian. Cree un pequeño archivo con datos aleatorios llamados dsfargeg, cifre con pv dsfargeg | gpg -o dsfargeg.gpg --symmetric, ingrese una contraseña cuando se le solicite, descifre la salida con gpg -o dsfargeg.gpg.dec --decrypt dsfargeg.gpg, ingrese su contraseña y compare el archivo original y el descifrado sha256sum dsfargeg dsfargeg.gpg.dec. Ambos hashes serán iguales.
RAKK
@RAKK Tienes razón. Parece que gpg se está abriendo /dev/ttyen Debian. Esta fue la versión 1.4, sin embargo, en mi caso; GPG tuvo un poco de revisión desde entonces. Es posible que ese enfoque se haya descartado por alguna razón; es posible que desee obtener más información por su cuenta (o esto puede ser un parche específico de Debian). Como tal, probablemente sería mejor que no cuentes con eso. Examinaré los rastros para verificar qué está sucediendo exactamente en el nuevo gpg (tengo 2.1).
TNW
Por extraño que parezca, ¡he encontrado una solución! Establecer la variable GPG_TTY lo hace por mí. Actualizaré la respuesta en consecuencia.
TNW