У меня есть несколько инструментов BASH, которые используют эту mysql -e "{command}"
функцию. Ввод пароля каждый раз, когда я использую эти инструменты, будет проблематичен, поэтому, чтобы избежать записи пароля в текстовом файле с кодом, я сохраняю его в памяти (используя read -s
) и читаю BASH при каждом запуске команд.
Mysql по-прежнему считает, что пароль передается через командную строку (потому что, так сказать, это так), и по-прежнему выдает ошибку «Использование пароля в интерфейсе командной строки может быть небезопасным».
Для моих целей мне не нужно подавлять это сообщение. Что мне нужно знать, так это то, что может сделать его небезопасным? Пароль никогда не виден физически, поэтому серфинг по плечу не может этого сделать, и даже тот, кто угадал мой пароль SSH, не сможет этого сделать, поскольку он хранится в памяти, а не в самих скриптах. Возможна ли атака «человек посередине» или нечто подобное?
~/.my.cnf
пример. Вы можете указать для каждого хоста,[client<hostname>]
например,[clientlocalhost]
инструменты MySQL будут использовать его автоматически, так что это будет проще и безопаснееbash
прочитали это, когда запускаете команду? Если вы это сделаете,mysql -p"$pass"
то любой может увидеть это вps
.Ответы:
Любой, кто может видеть переменные вашей среды (включая программы, которые вы запускаете), может видеть пароль. И любой, кто может просматривать ваши процессы, может видеть командную строку, используемую для их запуска, включая параметры.
Так что для ящика, в который вы входите только, риск, вероятно, незначителен. Но для целенаправленной атаки на вас лично это тривиальный вектор атаки в общей схеме вещей.
источник
~/.history
и т. Д.