Как я могу скрыть пароль/имя пользователя, используемые в bash script для доступа к MySQL?
Я пишу bash script, который планирую выполнить через cron. В этом script, я хочу выполнить команду против базы данных MySQL, примерно так:
$ mysql -u username -ppassword -e 'show databases;'
Для ясности и тех, которые не знакомы с mysql, переключатель "-u" принимает имя пользователя для доступа к базе данных, а "-p" - для пароля (место опущено намеренно).
Я ищу хороший способ сохранить имя пользователя/пароль удобным для использования в script, но таким образом, который также будет защищать эту информацию от посторонних глаз. Я видел стратегии, которые требуют следующего:
- Сохранить пароль в файле: pword.txt
- chmod 700 pword.txt(удалить разрешения для всех, кроме владельца файла)
- Cat pword.txt в переменную в script, когда это необходимо для входа.
но я не чувствую, что это тоже очень безопасно (что-то о сохранении паролей в яслях делает меня тошнотворным).
Итак, как мне следует защищать пароль, который будет использоваться в автоматическом script в Linux?
Ответы
Ответ 1
Один из способов, которым вы можете запутать пароль, состоит в том, чтобы поместить его в файл опций . Обычно это находится в ~/.my.cnf в системах UNIX/Linux. Вот простой пример, показывающий пользователя и пароль:
[client]
user=aj
password=mysillypassword
Ответ 2
Единственный по-настоящему безопасный способ защитить свой пароль - зашифровать его. Но тогда у вас есть проблема с защитой ключа шифрования. Эта проблема - черепахи до конца.
Когда хорошие люди, которые создали OpenSsh, решили эту проблему, они предоставили инструмент под названием ssh-agent
, который будет содержать ваши учетные данные и позволит вам использовать их для подключения к серверу при необходимости. Но даже ssh-agent
содержит именованный сокет в файловой системе, и любой, кто может получить доступ к этому сокету, может действовать с использованием ваших учетных данных.
Я думаю, что только две альтернативы:
Я бы доверял только локальной файловой системе, а не удаленной установленной. Но я бы доверял ему.
Безопасность - это ад.
Ответ 3
Обратитесь к doc для некоторых рекомендаций. дополнительный шаг, который вы можете предпринять, это ограничить использование команды ps для обычных пользователей, если у них есть разрешение на доступ к серверу.
Ответ 4
Я соглашусь с Норманом, что вы должны ввести кого-то пароль. Если вы просто поставьте флаг -p
без сопроводительного пароля, он предложит пользователю его.