【发布时间】:2020-08-11 09:45:06
【问题描述】:
我在 RedHat linux 服务器上使用 applicative 用户(无 root)工作。
我有一个 ksh 脚本,可以通过这个命令在不同的 DB 上建立一些 sqlplus 连接:
sqlplus -s myuser/password@DBNAME。
此连接需要密码,每个密码都不同。
我想加密这些密码并将它们存储在一个文件中。
然后,每次我运行我的脚本时,它都必须读取一个特定的加密密码,解密它,最后将它传递给sqlplus 命令。
关于使用特定密码,我想我可以在行首插入一个标签,但我的问题是如何使用 openSSL 加密此密码(我无法在机器上安装任何工具)以及它是否是一种安全方法以避免发送纯文本密码。提前致谢。
【问题讨论】:
-
这有点像第 22 条规则。如果您希望脚本验证用户提供的密码,您可以使用一些散列,例如使用 htpasswd。但是,如果您希望脚本“知道”密码以在无人看管的情况下运行,那就另当别论了。您可以对密码进行编码,例如 Base64,并即时解码。授予密码不会在文件中以明文形式显示,但任何有权访问的人都可以解码。与加密相同,因为脚本需要知道要解密的密钥。不妨使用模式为 600 的隐藏文件并在您的脚本中获取它(这就是我实际上所做的)。
-
包含加密密码的文件将被放置到任何人都无法访问(特定用户除外)的“受信任”目录中。为此,我想到了这个方法。
-
然后使用一个隐藏文件(模式 600)和一个以 UID 为索引的关联数组并获取该文件。您将节省解密开销并具有基本相同的安全性。
-
好的,我会尝试这样做。我不知道实际上我必须做什么,但我会去做。 :) 谢谢。
-
我知道关联数组和隐藏文件,但不太了解 > "...以 UID 为索引并获取该文件的来源。"
标签: shell scripting openssl ksh password-encryption