Quero escrever um script que execute gpg
um arquivo chamado "arquivo" com a senha "teste".
Normalmente, quando eu uso o gpg
, normalmente apenas executo gpg -c file
e ele me pede a senha. Mas como quero que esse script faça tudo sozinho, gostaria de fornecer a senha como parte do comando.
Agora, quando tento usar: gpg -c file --passphrase test
, ele gera:
uso: gpg [opções] --simétrico [nome do arquivo]
Que parece que quer que eu use gpg --passphrase test --symmetric file
. Mas se eu fizer isso, aparecerá uma caixa de diálogo solicitando a senha a ser usada; que não é o que eu quero.
Como configuro os argumentos corretamente?
Responder1
No GnuPG, as opções devem preceder os comandos, portanto a --passphrase
opção deve vir antes de --symmetric
.
Em relação à janela de entrada de pin, que aparece de qualquer maneira (embora você use o --passphrase
), provavelmente você já está usando o GnuPG 2, que precisa --batch
ser usado junto com o --passphrase
. Nas páginas de manual:
--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ário todos os outros usuários serão capazes de ler sua linha de comando e, portanto, também a senha enquanto o GnuPG é executado. É melhor usar uma das outras --passphrase-*
opções para ler um arquivo ou canal.
Responder2
O uso --pinentry-mode loopback
funciona com --passphrase
& --passphrase-[file/fd]
e permitirá inserir novas informações, em caso de conflitos de nome de arquivo, por exemplo:
File 'xyz.gpg' exists. Overwrite? (y/N)n
Enter new filename: xyz2.gpg
diferente --batch
disso irá falhar rapidamente, dizendo...failed: File exists
Se você adicionou 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 gostou de colocar -c
( --symmetric
) em primeiro lugar.
Considero o comportamento do gpg2 de ignorar --passphrase
opções, a menos que seja acompanhado --batch
como um bug.
Responder3
Se gpg --version
for relatório v2, você precisará adicionar a --batch
opção.
Com base na saída da sintaxe, você provavelmente está usando v1 e, nesse caso, deseja:
gpg --passphrase PASS -c --no-use-agent FILE
Observe que a ordem das opções não é importante; entretanto, qualquer arquivo precisa ser o último argumento.
Responder4
Você pode usá-lo assim:
gpg --passphrase hello -c --no-symkey-cache --cipher-algo AES256 --batch basic.c
Além disso, o uso de lote não é um bug, está escrito na documentaçãoaqui: