10

Я хочу написать скрипт, который будет запускать gpg файл с именем "file" с парольной фразой "test".

Обычно, когда я использую gpg , я обычно запускаю gpg -c file и он запрашивает у меня пароль. Но так как я хочу, чтобы этот скрипт выполнял все самостоятельно, я хотел бы предоставить парольную фразу как часть команды.

Теперь, когда я пытаюсь использовать: gpg -c file --passphrase test , он выдает:

использование: gpg [параметры] --симметричный [имя файла]

Какие швы, как он хочет, чтобы я использовал gpg --passphrase test --symmetric file . Но если я сделаю это, появится диалоговое окно с просьбой ввести пароль; что не то, что я хочу.

Как правильно настроить аргументы?

3 ответа3

5

В GnuPG опции должны предшествовать командам, поэтому опция --passphrase должна предшествовать --symmetric .

Что касается окна ввода пин- кода , которое всплывает в любом случае (хотя вы используете --passphrase), вы, вероятно, уже используете GnuPG 2, который требует использования --batch вместе с --passphrase . Из справочных страниц:

--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.

Имейте в виду, что в многопользовательских системах все другие пользователи смогут читать вашу командную строку и, следовательно, также пароль во время выполнения GnuPG. Лучше использовать одну из других опций --passphrase-* вместо того, чтобы читать из файла или канала.

2

Если gpg --version сообщает v2, вам нужно добавить опцию --batch .

Основываясь на выводе синтаксиса, вы, вероятно, используете v1, и в этом случае вы хотите:

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

Обратите внимание, что порядок опций не важен; однако любой файл должен быть последним аргументом.

0

Использование --pinentry-mode loopback работает с --passphrase & --passphrase-[file/fd] и позволит вам ввести новую информацию, в случае конфликта имен файлов, например:

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

в отличие от --batch , который быстро потерпит неудачу, говоря ...failed: File exists


Если вы сначала добавили подробный параметр (-v), вы должны были увидеть что-то вроде:

$ 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]

довольно ясно указывает на то, что сначала не нравится -c (--symmetric).


Я считаю поведение gpg2 игнорированием опций --passphrase , если оно не сопровождается --batch как ошибку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .