Как я могу скрыть пароль / имя пользователя, используемые в скрипте bash для доступа к MySQL? - PullRequest
15 голосов
/ 27 января 2010

Я пишу bash-скрипт, который планирую выполнить через cron. В этом сценарии я хочу выполнить команду для базы данных MySQL, примерно так:

$ mysql -u username -ppassword -e 'show databases;'

Для ясности и для тех, кто не знаком с mysql, ключ "-u" принимает имя пользователя для доступа к базе данных, а "-p" - для пароля (пробел намеренно пропущен).

Я ищу хороший способ сохранить имя пользователя / пароль под рукой для использования в сценарии, но таким образом, чтобы эта информация также была защищена от посторонних глаз. Я видел стратегии, которые требуют следующего:

  1. Сохранить пароль в файле: pword.txt
  2. chmod 700 pword.txt (удалить разрешения для всех, кроме владельца файла "
  3. Cat pword.txt в переменную в скрипте, когда это необходимо для входа в систему.

но я не чувствую, что это тоже очень безопасно (что-то из-за того, что пароли хранятся в открытом виде, вызывает у меня тошноту).

Итак, как мне защитить пароль, который будет использоваться в автоматизированном сценарии в Linux?

Ответы [ 4 ]

5 голосов
/ 27 января 2010

Один из способов скрыть пароль - поместить его в файл параметров . Обычно это находится в ~ / .my.cnf в системах UNIX / Linux. Вот простой пример, показывающий имя пользователя и пароль:

[client]
user=aj
password=mysillypassword
5 голосов
/ 27 января 2010

Единственный действительно безопасный способ защитить ваш пароль - это зашифровать его. Но тогда у вас есть проблема защиты ключа шифрования. Эта проблема доходит до черепах.

Когда хорошие люди, создавшие OpenSsh, решили эту проблему, они предоставили инструмент под названием ssh-agent, который будет хранить ваши учетные данные и позволит вам использовать их для подключения к нужному серверу. Но даже ssh-agent содержит именованный сокет в файловой системе, и любой, кто может получить доступ к этому сокету, может действовать с использованием ваших учетных данных.

Я думаю, что только две альтернативы

  • Попросите человека ввести пароль.

  • Доверяйте файловой системе.

Я бы доверял только локальной файловой системе, а не удаленной. Но я бы поверил этому.

Безопасность - это ад.

0 голосов
/ 27 января 2010

Пожалуйста, смотрите документ для некоторых рекомендаций .дополнительный шаг, который вы можете предпринять, это ограничить использование команды ps для обычных пользователей, если у них есть разрешение на доступ к серверу.

0 голосов
/ 27 января 2010

Я согласен с Норманом, что вам нужно, чтобы кто-то набрал пароль. Если вы просто поставите флаг -p без сопроводительного пароля, он запросит у пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...