代码之家  ›  专栏  ›  技术社区  ›  Steven

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

  •  15
  • Steven  · 技术社区  · 15 年前

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

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

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

    我正在寻找一种好的方法来保持用户名/密码在脚本中的使用方便,但同时也要确保这些信息不被窥探。我已经看到了需要以下内容的策略:

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

    但我也不觉得这是非常安全的(一些关于保持密码清晰的事情让我感到不安)。

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

    4 回复  |  直到 15 年前
        1
  •  5
  •   AJ.    15 年前

    一种使密码混淆的方法是将其放入 options file .通常位于 ~/.M.CNF 在UNIX/Linux系统上。下面是一个显示用户和密码的简单示例:

    [client]
    user=aj
    password=mysillypassword
    
        2
  •  5
  •   Norman Ramsey    15 年前

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

    当构建OpenSSH的优秀人员解决这个问题时,他们提供了一个名为 ssh-agent 这将保留您的凭证,并允许您在需要时使用它们连接到服务器。但甚至 SSH剂 在文件系统中保存一个命名的套接字,任何可以访问该套接字的人都可以使用您的凭据进行操作。

    我想只有两种选择

    • 让一个人输入密码。

    • 信任文件系统。

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

    安全是地狱。

        3
  •  0
  •   ghostdog74    15 年前

    请看 doc for some guidelines . 您可以采取的一个额外步骤是,如果普通用户有权访问服务器,则限制他们使用ps命令。

        4
  •  -2
  •   Tor Valamo    15 年前

    我同意诺曼的观点,你应该让别人输入密码。如果你只是提供 -p 如果没有附带的密码,它将提示用户输入密码。