2012-11-17 34 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