2012-11-17 33 views
0

我有使用包含登录列表的文本文件bash脚本:加密bash脚本使用的登录列表 - FIFO还是...?

LOGINLIST=/home/user/logins.txt 
while read line 
do 
echo $line 
done < $LOGINLIST 

我宁愿不保存登录以纯文本格式的名单,但我不希望有手动解密它每次都运行脚本。 (让脚本提示输入密码即可)

我可以这样做的一种方法是在脚本中包含一行,例如openssl在读取文件之前解密文件。不幸的是,如果脚本停滞了(可能是其中一个登录到的站点没有响应),这会使文件在不确定的时间段内不受保护。

所以我宁愿只保留在内存中的明文。

这篇帖子在LinuxQuestions(http://www.linuxquestions.org/questions/programming-9/can-we-hide-the-code-of-a-shell-script-370328/#post1887648)上表明,发送明文到FIFO可能会诀窍,但这对我来说完全陌生。有更好/更简单的方法吗?如何在脚本完成时清除内存?

...有没有办法编辑加密的登录列表,同时也保持明文内存?

回答

4

您可以使用openssl和流程替换来完成此操作,而无需更改代码的结构。

要加密的文件,使用这样的:

openssl blowfish -in plaint_text_file -out encrytped_file 

(选择你想要的密码,它会提示你输入密码。)

然后你就可以使用加密文件与:

LOGINLIST=/path/to/encrypted/file 
while read line 
do 
    echo $line 
done < <(openssl blowfish -d -in $LOGINLIST) 

这将提示您输入密码。没有生成临时文件。

(慎用在最后的命令的空间,它确实是< <(。)

+0

谢谢!这正是我所希望的。将logins.txt提供给vi时有什么办法可以做类似的事情 - 我可以模拟例如'crontab -e'将vi提供给临时文件,然后在vi完成后处理它吗? – 3dan

1

您可以在vim打开现有的加密命名encrytped_file文件有:

openssl blowfish -d -in encrytped_file | vim - 

您可以创建或修改/使用以下命令覆盖名为encrytped_file的加密文件:

:w !openssl blowfish -in /dev/stdin -out encrytped_file 

只需查找密码提示即可。他们会被vim的用户界面模糊一点。

这是这个答案中使用的技巧。你应该学习它们,而不是复制和粘贴它们,以便在其他情况下使用它们。

  1. vim从管道(又名:标准输入或标准输入)读取时,给出一个裸露连字符的参数。
  2. Vim可以管其缓冲区的命令与:w !command
  3. 这是很常见的UNIX命令解释裸连字符作为“从标准输入读取”,但不是所有的命令的功能。在这种情况下,您可以经常使用/dev/stdin