Esse é provavelmente um problema de permissão de arquivo do dispositivo. pinentry
não usa os descritores de arquivos herdados, mas tenta acessar o TTY transmitido diretamente, o que não funciona.
Você pode executar tty
no shell e depois ls -l /dev/pts/1
com o resultado e provavelmente perceberá que apache
não tem acesso a ele.
Você também pode executar
strace -o gpg.strace -f -e trace=open gpg --gen-key
e provavelmente encontrará algo como
open("/dev/pts/1", O_RDONLY) = -1 EACCES (Permission denied)
A solução perigosa é (temporariamente) conceder acesso apache
a um console root
... ( chown apache /dev/pts/1
). A melhor solução é fazer um login real como apache
.
Isso afeta apenas a geração de chaves. Você também pode criar um par de chaves como outro usuário, exportá-lo e importá-lo na conta apache
.