Ответы:
Вы не хотите симметричный шифр
Если вам нужно автоматически запустить шифрование, вы не хотите использовать симметричный шифр с парольной фразой (это то, что делает gpg -ac ). Хранить парольную фразу в скрипте или в cron недопустимо и бессмысленно (серьезно, это звучит грубо, но вы можете также сгнить 13).
Если вы используете шифрование, недостаточно просто «изменить разрешения» сценария. Если это так, вы можете просто изменить разрешения для данных, которые вы хотите скрыть. Шифрование на этом уровне, очевидно, предназначено для того, чтобы помешать кому-либо, получившему доступ к вашей учетной записи (скорее всего, злонамеренно), прочитать данные, как только они получат доступ.
В этом случае вам нужна криптография с открытым ключом. Вы генерируете закрытый ключ (который снова шифруется симметричным шифром с паролем) и открытый ключ. Открытый ключ может распространяться где угодно. Любой может зашифровать данные, которые вы можете прочитать с помощью вашего закрытого ключа. Никто не должен иметь доступ к вашему личному ключу. Так что для того типа шифрования, который вам нужен, он идеален. Вы можете хранить свой открытый ключ на сервере и шифровать все свои данные, используя его. Если у злоумышленника есть ваш открытый ключ и зашифрованные данные, он ничего не может сделать.
Ваш закрытый ключ должен быть частью головоломки, которую потенциальный злоумышленник всегда упускает. Вы должны это скрыть. т.е. шифрование данных, которые вы можете прочитать, легко. Расшифровывать это должно быть сложно. С симметричным шифром сложность обоих одинакова (если вы хотите думать об этом в этих терминах, это, вероятно, не самая лучшая аналогия).
GPG делает общедоступную криптографию относительно безболезненной, но, во-первых, вам нужно сгенерировать пару ключей (это не делается на вашем сервере, но на вашем рабочем столе или в другом безопасном месте вы счастливы, имея свой закрытый ключ):
$ gpg --gen-key
Пробежись по вопросам там.
Затем вы хотите экспортировать ваш открытый ключ GPG, скопировать и вставить его на свой сервер:
$ gpg --list-keys
$ gpg --armor --export me@mydomain.com > pub.key
Скопируйте pub.key на ваш сервер и затем импортируйте с помощью:
$ gpg --import pub.key
Если вы в первую очередь рассматриваете возможность использования шифрования, это очевидно, потому что у вас есть конфиденциальные данные. Я хотел бы еще раз подчеркнуть: вам нужно серьезно подумать о том, как вы шифруете эти данные, так как это немало усилий, и вы ничего не выиграете, если просто используете симметричный шифр, к которому можно получить простой доступ к паролю.
#!/bin/bash
gpg -ac passphrase="secret" < $1
Кажется, немного ненужным, чтобы сделать его собственным сценарием.
gpg -ac passphrase="secret" < file
из cron. Как сказал Тайлерл, здесь действительно нет необходимости в сценарии.
Следующая crontab
строка будет вызывать secretfile
шифрование каждые 5 минут с указанной парольной фразой без раскрытия парольной фразы ps aux
и аналогичных запросов. Конечно, вы, вероятно, также захотите что-то сделать с исходным файлом и зашифрованным результатом, но это ваше дело.
*/5 * * * * gpg -c --passphrase-fd 3 secretfile 3<<<"passphrase"