我正在编写一个我计划通过cron执行的bash脚本。在这个脚本中,我想对MySQL数据库执行命令,如下所示:
$ mysql -u username -ppassword -e 'show databases;'
为了清楚和不熟悉mysql的人,“ - u”开关接受用于访问数据库的用户名,“ - p”用于密码(故意省略空格)。
我正在寻找一种方法来保持用户名/密码在脚本中的使用方便,但是这种方式也可以保护这些信息免受窥探。我已经看到了需要以下内容的策略:
但是我觉得这也不是很安全(关于保持密码的问题让我感到不安)。
那么我应该如何保护将在Linux上的自动脚本中使用的密码?
答案 0 :(得分:5)
保护密码的唯一真正安全的方法是加密密码。但是你有保护加密密钥的问题。这个问题一直是乌龟。
当构建OpenSsh的优秀人员解决了这个问题时,他们提供了一个名为ssh-agent
的工具,它将保留您的凭据并允许您使用它们连接到需要的服务器。但即使ssh-agent
在文件系统中拥有一个命名套接字,任何可以访问该套接字的人都可以使用您的凭据。
我认为只有两种选择
让某人输入密码。
信任文件系统。
我只信任本地文件系统,而不是远程安装的文件系统。但我相信它。
安全是地狱。
答案 1 :(得分:5)
您可以对密码进行模糊处理的一种方法是将其放入options file。这通常位于UNIX / Linux系统上的 〜/ .my.cnf 中。这是一个显示用户和密码的简单示例:
[client]
user=aj
password=mysillypassword
答案 2 :(得分:0)
请参阅doc for some guidelines。您可以采取的额外步骤是限制普通用户使用ps命令,前提是他们有权访问服务器。
答案 3 :(得分:-2)
我同意Norman你应该让别人输入密码。如果您只提供-p
标记而没有附带的密码,则会提示用户输入密码。