加密的linux密码文件

时间:2014-10-26 06:15:00

标签: linux shell

我正在使用redhot linux

我将数据库用户名和密码存储到一个名为filename.txt的文本文件中。这个filenam.txt是我的shell脚本中的一个变量。

filename=/home/oracle/filename.txt
vi filename.txt
auth scott tiger

username=`cat ${filename} | grep auth | awk ' {print $2}'`

password=`cat ${filename} | grep auth | awk ' {print $3}'`

我在我的脚本中使用此用户名和密码变量来连接数据库。

任何正文都可以帮我识别这个文本文件(文件名)。这样其他人就无法将数据包含在其中。还有如何使用加密的文本文件。

1 个答案:

答案 0 :(得分:0)

在您的问题中有很多依赖,这在很大程度上取决于谁可以访问该脚本以及谁需要运行它?

如果只是您需要访问该文件但又想让其他人看不到该文件,请确保您是该文件的owner并将文件权限设置为0600因此,只有您对filename.txt

具有读取权限

另一方面,如果脚本在盒子上的公共场所发布(例如/ usr / local / bin),并且有几个人需要能够运行脚本,则可以将文件的读取限制为只有那些需要通过创建公共unix group并将所有权设置为公共组并且最多只读取0640文件名权限来运行脚本的人。但是,该组的所有成员仍将具有该文件的读取权限。 (不,你不能使文件组可执行但组不可读)

最后,如果你加密文件,它会带来它自己的问题。然后,脚本必须(1)提示输入密码,或者(2)包含密码本身。这不会给你带来太大的收获,你可能只是让数据库提示输入密码并限制密码传播给那些需要运行密码的人。

但你的问题是关于加密,所以让我们至少看一看。有许多工具,pgpopenssl等。以openssl为例,您可以使用以下方式轻松加密filename.txt

openssl des3 -salt -in filename.txt -out filename.des -pass pass:thepassword

或使用-k选项代替-pass

openssl des3 -salt -in filename.txt -out filename.des -k thepassword

如果未指定密码选项,系统将提示您输入密码

解密以相同的方式工作,只需添加-d选项并反转-in-out文件名(确保您这样做或者您可以破坏文件):

openssl des3 -d -salt -in filename.des -out filename.txt -k thepassword

显然这不会给你带来太大的影响,因为thepasswordfilename.txt仍然可见,并且可以用来解密那些有权访问该脚本的人filename.txt

因此,从需要文件凭据的人那里隐藏凭据文件并非易事。现在,如果你搜索,你可能会发现一些基于密钥的方案,可能会让你更接近,但这不是我的舌尖。您还受限于不使用setuid / setgid与其他权限一起运行的shell脚本(不会产生大的安全漏洞)。

希望这有帮助。没有银弹可以涵盖所有可能性,并且没有简单的方法来对脚本中的密码进行硬编码,然后阻止对脚本用户的读取访问,比如说 - 使用.htaccess文件和Web服务器