如何隐藏bash脚本中用于访问MySQL的密码/用户名?

Ste*_*ven 15 mysql security bash scripting

我正在编写一个我计划通过cron执行的bash脚本.在这个脚本中,我想对MySQL数据库执行一个命令,如下所示:

$ mysql -u username -ppassword -e 'show databases;'
Run Code Online (Sandbox Code Playgroud)

为清楚起见,那些不熟悉mysql的人," - u"开关接受用于访问数据库的用户名," - p"用于密码(故意省略空格).

我正在寻找一种方法来保持用户名/密码在脚本中的使用方便,但这种方式也可以保护这些信息免受窥探.我见过要求以下的策略:

  1. 将密码保存在文件中:pword.txt
  2. chmod 700 pword.txt(删除文件所有者以外的所有权限"
  3. 当需要登录时,将cat pword.txt转换为脚本中的变量.

但我不觉得这也很安全(关于保持密码明确让我感到不安).

那么我应该如何保护将在Linux上的自动脚本中使用的密码?

Nor*_*sey 5

保护密码的唯一真正安全的方法是加密密码.但是你有保护加密密钥的问题.这个问题一直是乌龟.

当构建OpenSsh的优秀人员解决了这个问题时,他们提供了一个工具,该工具ssh-agent将保留您的凭据并允许您使用它们连接到需要的服务器.但即使ssh-agent在文件系统中保存了一个命名套接字,任何可以访问该套接字的人都可以使用您的凭据.

我认为只有两种选择

  • 有人输入密码.

  • 信任文件系统.

我只信任本地文件系统,而不是远程安装的文件系统.但我相信它.

安全是地狱.

  • @AJ:当然。如果您不信任您的系统管理员,您也可以放弃(或退出)。即使是加密的文件系统也无法有效防止具有内部访问权限的恶意系统管理员。 (2认同)

AJ.*_*AJ. 5

您可以对密码进行模糊处理的一种方法是将其放入选项文件中.这通常位于UNIX/Linux系统上的〜/ .my.cnf中.这是一个显示用户和密码的简单示例:

[client]
user=aj
password=mysillypassword
Run Code Online (Sandbox Code Playgroud)