Quiero escribir un script que ejecute gpg
un archivo llamado "archivo" con la frase de contraseña "prueba".
Normalmente, cuando uso gpg
, simplemente lo ejecuto gpg -c file
y me pide la frase de contraseña. Pero como quiero que este script haga todo por sí solo, me gustaría proporcionar la frase de contraseña como parte del comando.
Ahora, cuando intento usar: gpg -c file --passphrase test
, sale:
uso: gpg [opciones] --simétrico [nombre de archivo]
Lo cual parece que quiere que use gpg --passphrase test --symmetric file
. Pero si hago eso, aparece un cuadro de diálogo que me pide la frase de contraseña a utilizar; que no es lo que quiero.
¿Cómo configuro los argumentos correctamente?
Respuesta1
En GnuPG, las opciones deben preceder a los comandos, por lo que la --passphrase
opción debe ir antes --symmetric
.
Con respecto a la ventana de ingreso de PIN, que aparece de todos modos (aunque uses --passphrase
), probablemente ya estés usando GnuPG 2, que debe --batch
usarse junto con --passphrase
. De las 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.
Tenga en cuenta que en sistemas multiusuario todos los demás usuarios podrán leer su línea de comando y, por lo tanto, también la frase de contraseña mientras se ejecuta GnuPG. Es mejor utilizar una de las otras --passphrase-*
opciones para leer desde un archivo o canalización.
Respuesta2
El uso --pinentry-mode loopback
funciona con --passphrase
& --passphrase-[file/fd]
y le permitirá ingresar nueva información, en caso de conflictos de nombre de archivo, por ejemplo:
File 'xyz.gpg' exists. Overwrite? (y/N)n
Enter new filename: xyz2.gpg
a diferencia de --batch
eso fallará rápidamente, diciendo...failed: File exists
Si originalmente había agregado -v
primero la opción detallada ( ), debería haber 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 con bastante claridad que no le gustaba algo acerca de poner -c
( --symmetric
) primero.
Considero que el comportamiento de gpg2 de ignorar --passphrase
opciones a menos que vaya acompañado de --batch
un error.
Respuesta3
Si gpg --version
informa v2, debe agregar la --batch
opción.
Según el resultado de sintaxis, probablemente esté usando la versión 1, en cuyo caso desea:
gpg --passphrase PASS -c --no-use-agent FILE
Tenga en cuenta que el orden de las opciones no es importante; sin embargo, cualquier archivo debe ser el último argumento.
Respuesta4
Puedes usarlo así:
gpg --passphrase hello -c --no-symkey-cache --cipher-algo AES256 --batch basic.c
Además, el uso de lotes no es un error, está escrito en la documentación.aquí: