Gentoo Linux GPG crittografa correttamente un file passato attraverso il parametro ma genera "Ictl inappropriato per dispositivo" durante la lettura dallo standard input


23

Sto eseguendo Gentoo Hardened con il kernel 4.1.7-hardened-r1 e sto cercando di crittografare un file usando GPG da una sessione della shell aperta da SSH e con la DISPLAYvariabile disabilitata per usare pinentry-curses per la richiesta della password. Usando gpg -o file.gpg --symmetric fileposso crittografare bene. Utilizzando pv file | gpg -o file.gpg --symmetricottengo il seguente messaggio di errore:

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

Risposte:


41

È necessario impostare la variabile GPG_TTY affinché funzioni, come in questo documento :

GPG_TTY=$(tty)
export GPG_TTY

Queste due linee dovrebbero essere nella tua .bashrc(supponendo bash), quindi vengono eseguite ogni volta che apri una nuova sessione di terminale.

C'è un'altra soluzione, però: in bash puoi eseguire il tuo pve far finta che sia un file, usando la sostituzione del processo:

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

Pertanto, potrebbe non essere una buona idea eseguire il pipe-in ​​delle cose ai programmi che prevedono input aggiuntivi. Può funzionare diversamente dal previsto.


Esiste un modo per modificare o correggere questo comportamento? In questo momento ho appena provato lo stesso comando read-from-stdin su Debian e GPG ha chiesto la mia password.
RAKK,

@RAKK Potresti decifrare il file risultante, però?
TNW,

Sì, senza intoppi su Debian. Crea un piccolo file con i dati casuali chiamati dsfargeg, crittografalo con pv dsfargeg | gpg -o dsfargeg.gpg --symmetric, inserisci una password quando richiesto, decodifica l'output con gpg -o dsfargeg.gpg.dec --decrypt dsfargeg.gpg, inserisci la password e confronta il file originale e il file decrittografato sha256sum dsfargeg dsfargeg.gpg.dec. Entrambi gli hash saranno gli stessi.
RAKK,

@RAKK Hai ragione. Sembra che gpg si stia aprendo /dev/ttysu Debian. Questa era la versione 1.4, tuttavia, nel mio caso; gpg ha avuto un po 'di revisione da allora. Questo approccio potrebbe essere stato abbandonato per qualche motivo - potresti voler saperne di più da solo (o questa può essere una patch specifica Debian). Come tale, probabilmente sarebbe meglio per te non contare su di esso. Scorrerò le tracce per verificare cosa sta succedendo esattamente nel nuovo gpg (ho 2.1).
TNW,

Stranamente, ho trovato una soluzione! L'impostazione della variabile GPG_TTY lo fa per me. Aggiornerò la risposta di conseguenza.
TNW,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.