Назад | Перейти на главную страницу

установка пароля и безопасности

Я иногда делаю echo "secret" | mysql -u root -p .... Теперь я беспокоюсь о безопасности: может ли кто-нибудь, кто перечисляет все процессы, увидеть пароль?

Чтобы проверить, я пробовал с echo "test" | sleep 1000 и команда echo с секретом была не видно в выводе "ps aux". Я предполагаю, что это безопасно, но может ли эксперт по безопасности подтвердить это, пожалуйста? :)

Ответ на этот вопрос зависит от того, какую оболочку вы используете. Многие снаряды имеют echo как встроенный означает, что она не порождает отдельный процесс и, следовательно, не будет отображаться в списке процессов. Однако, если вы наберете /bin/echo или ./echo или если вы отключите встроенные функции с помощью enable -n echo , то оболочка не будет использовать свою встроенную команду, а вместо этого будет использовать двоичную версию. Это отобразится в списке процессов.

Если вы используете двоичный файл, а не встроенную оболочку, команда echo будет отображаться столько, сколько потребуется для перемещения данных в буфер STDIN другого процесса. Этот буфер имеет конечный размер, поэтому, если данных больше, чем уместится в буфере, команде echo придется некоторое время зависать, пока другой процесс не сможет прочитать некоторые данные из буфера. В большинстве случаев (например, в двух приведенных выше примерах) этот период времени составляет микросекунды. Если вы вставляете дамп SQL 20 МБ в MySQL с помощью echo, это может быть дольше. Независимо от того, насколько коротко время, если вы используете двоичный файл вместо встроенной оболочки, и кто-то случайно уловил время, они смогут увидеть процесс в списке процессов.

Вы можете избежать этого, поместив секретные данные в файл (с соответствующими разрешениями) и используя файл как STDIN следующим образом:

mysql -u root -p < file_with_secret.sql

Для случая mysql ~ / .my.cnf может использоваться для хранения секретов, т.е.

[client]
user = DBUSERNAME
password = DBPASSWORD
host = DBSERVER

[mysql]
database = DBNAME

Просто используйте

mysql -uroot -p

и нажмите Enter. Затем вам будет предложено ввести пароль, и он не будет отображаться ни в списке процессов, ни в файлах истории.