加密/解密密码并通过 ksh 脚本使用
Posted
技术标签:
【中文标题】加密/解密密码并通过 ksh 脚本使用【英文标题】:Encrypt/decrypt password and use it by ksh script 【发布时间】: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 为索引并获取该文件的来源。" 【参考方案1】:类似:
凭证文件
#!/bin/ksh
#######################################################
#
# Source for UID/Password. MUST be with access 600
#
# .credential.sh
#
# Usage : . .credential.sh
#
######################################################
#Declaring associative array
typeset -A Password
# Setting the values
Password[USER1]="Passwd1"
Password[USER2]="Passwd2"
在你的脚本中:
#!/bin/ksh
#sourcing the credential files
. /foo/bar/.credential.sh
#............... Some code
myuser=USER1 # Or whatever means to set the user variable
#............... Some code
sqlplus -s $myuser/$Password[$myuser]@DBNAME
#............... Some code
【讨论】:
好的,完美。非常感谢。关于权限,将它们设置为 400 会更好吗?以避免任何可能的修改。您是否同意或有特定理由设置为 600 ?谢谢。 不会有太大变化。使用 400,作为所有者,如果您尝试编辑或删除文件,您将收到文件被写保护的警告,但您可以选择覆盖该保护。此外,所有者可以随时更改其文件的模式。 好的。谢谢你。最好的后卫。以上是关于加密/解密密码并通过 ksh 脚本使用的主要内容,如果未能解决你的问题,请参考以下文章