通过bash安全地传递密码

时间:2016-11-17 20:32:57

标签: bash passwords

我正在为我的工作构建一个bash脚本,为我们的Ubuntu机器进行初始设置和windows-domain连接,这对于对Linux一无所知的人来说非常容易。我发现有很多人说你不应该通过脚本传递密码,但为了提高效率,我必须这样做。该脚本在开头提示输入信息和凭据,并且需要能够在没有交互的情况下完成它的工作。当我通过ps时,我无法通过ps看到它,而且我无法将其存储为不安全的变量。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

如果您真的必须这样做,您可以在脚本的早期用read -s将凭据读入变量,然后将这些值传递给提示。例如:

read -p "Enter your username: " username
read -sp "Enter your password: " password
echo

我添加了空白echo,因为-s的{​​{1}}选项会阻止用户输入显示在终端中,包括通常在用户按下后创建的新行kbd>在回答提示时输入。

然后,您可以将read$username变量用于脚本的其余部分,并且凭证不必存储在内存之外,这意味着在脚本完成后它们将被丢失/销毁

但是,请注意,将凭据作为命令行参数的任何程序或实用程序都会将其显示给运行该脚本的计算机上的其他用户。例如,如果我使用此方法运行MySQL查询,我可以这样做:

$password

计算机上的其他用户在使用mysql -u "${username}" -p"${password}" -e "SHOW DATABASES;"

之类的内容时可以看到凭据
ps

你只需要知道你所做的事情不一定安全,但似乎你已经是。