【发布时间】:2018-07-31 15:13:52
【问题描述】:
我正在编写一个执行需要密码的命令的 shell 脚本。我无法在脚本中以纯文本形式输入密码。我阅读了有关 openssl 加密解密机制的信息,但是为了再次加密文件,我需要一个密码,我又无法将其放入脚本中。我不知道让脚本使用安全密码执行命令的最佳方法是什么。
【问题讨论】:
-
如果脚本包含它需要找出密码的信息,那么它还包含查看脚本的人需要找出密码的信息。除非有某种方法可以让正在运行的脚本访问阅读它的人无法获得的信息,否则我认为没有办法做你想做的事。
-
你能再具体一点吗?是否所有用户都需要能够运行脚本?为什么命令需要密码?如果是
ssh,则可以通过要求用户进行公钥认证来避免需要;如果是sudo,请查看编辑您的/etc/sudoers等。作为最后的手段,您可以安排脚本从每个用户提供的文件(例如$HOME/.secret/myapp)中读取密码,如果您“感觉不错,你甚至可以检查一下别人看不懂。 -
这不适用于用户身份验证。我需要执行一个以密码为参数的脚本。所以我的脚本需要执行另一个以密码作为命令行参数的脚本
-
"...它将密码作为命令行参数。" -- 这是一个非常糟糕的主意。 系统的所有用户都可以看到命令行上的密码,通过查看进程列表(
ps或 @987654327 @ 会做)。