Como usar o GnuPG com --passphrase?

10

Eu quero escrever um script que execute gpg um arquivo chamado "file" com a senha "test".

Normalmente, quando uso o gpg , normalmente corro gpg -c file e ele me pergunta a senha. Mas como quero que esse script faça tudo sozinho, gostaria de fornecer a frase secreta como parte do comando.

Agora, quando tento usar: gpg -c file --passphrase test , ele gera:

usage: gpg [options] --symmetric [filename]

Quais costuras como essa querem que eu use gpg --passphrase test --symmetric file . Mas se eu fizer isso, aparece uma caixa de diálogo pedindo-me que a frase secreta seja usada; que não é o que eu quero.

Como configuro os argumentos corretamente?

    
por Jens Erat 12.09.2015 / 23:24

3 respostas

5

No GnuPG, as opções devem preceder comandos, portanto, a opção --passphrase deve vir antes de --symmetric .

Com relação à janela de entrada de pinos, que aparece de qualquer maneira (embora você use --passphrase ), provavelmente já está usando o GnuPG 2, que requer que --batch seja usado junto com --passphrase . Das man pages:

--passphrase string
    Use string as the passphrase. This can only be used if only one
    passphrase is supplied. Obviously, this is of very questionable
    security on a multi-user system. Don't  use this option if you
    can avoid it.  Note that this passphrase is only used if the
    option --batch has also been given.  This is different from
    GnuPG version 1.x.

Esteja ciente de que em sistemas multiusuários todos os outros usuários poderão ler sua linha de comando e, portanto, também a frase secreta enquanto o GnuPG é executado. É melhor usar uma das outras opções --passphrase-* para ler de um arquivo ou pipe.

    
por 13.09.2015 / 13:10
2

Se gpg --version relatar v2, você precisará adicionar a opção --batch .

Com base na saída de sintaxe, provavelmente você está usando v1, e nesse caso você quer:

gpg --passphrase PASS -c --no-use-agent FILE

Observe que a ordem das opções não é importante; no entanto, qualquer arquivo precisa ser o último argumento.

    
por 14.09.2015 / 05:41
0

Usar --pinentry-mode loopback funciona com --passphrase & --passphrase-[file/fd] e permitirá que você insira novas informações, no caso de conflitos de nome de arquivo, por exemplo:

File 'xyz.gpg' exists. Overwrite? (y/N)n
Enter new filename: xyz2.gpg

ao contrário de --batch , que falhará rapidamente, dizendo ...failed: File exists

Se você tivesse adicionado originalmente a opção detalhada ( -v ) primeiro, deveria ter visto algo como:

$ gpg -v -c file --pinentry-mode loopback --passphrase-file=passfile
gpg: Note: '--pinentry-mode' is not considered an option
gpg: Note: '--passphrase-file=passfile' is not considered an option
usage: gpg [options] --symmetric [filename]

indicando claramente que não gostava de colocar -c ( --symmetric ) em primeiro lugar.

Eu considero o comportamento do gpg2 de ignorar --passphrase opções a menos que seja acompanhado por --batch como um bug.

    
por 29.12.2017 / 05:46

Tags