2013-02-01 42 views
3

我有一個產生,當敏感的內容運行一個shell腳本自動解密,並運行一個加密的bash腳本。它位於只有少數用戶有權訪問的框中。不過,我也加入了分層模糊處理,以防止未經授權的使用,通過如下:不保存解密文件到文件系統

  1. 腳本必須以root身份運行
  2. 腳本必須通過特定的命令行參數產生任何輸出
  3. 腳本已由shell編譯器「shc」編碼以屏蔽來自普通用戶(那些不知道使用TRACE或STRINGS來仍然查看實際代碼)的事實#1和#2。

然後添加一層實際的安全性來保護更高級的用戶和系統管理員,我也用gpg加密了腳本。

我的問題是 - 是否有gpg命令(或其他加密方法),我可以運行哪些提示解密密碼,並解密腳本並在內存中運行它(不保存解密版本的文件到文件系統)?

我意識到,敏感信息可能仍然存在無保護存儲在被執行時,我會單獨解決這個問題。

+1

創建一個小的虛擬盤,格式化,安裝它,保存文件存在,執行它,格式化ramdisk的一個問題,釋放RAMDISK。但我必須問......這種保護水平是否真的有必要? –

回答

3

您可以捕捉

decrypted=$(gpg -d ...) 

解密的輸出,那麼您可以EVAL結果

eval "$decrypted" 
+0

謝謝你的回覆!我只能在從加密腳本中刪除命令行參數要求後才能使其工作。 我不知道爲什麼我沒有想到捕捉命令的輸出到一個變量的! 我可能不會再需要保持參數的要求,但我的猜測是我必須調整語法的eval命令,如果我想將它們回。 謝謝! – user1880028

0

另一種簡單的選擇與choroba的答案對比:

保存解密輸出一個文件在/dev/shm/。 (幾乎所有的Linux發行版都默認使用這種內置tmpfs文件系統。)設置trap以在腳本退出時刪除文件。

0

這是非常有可能的,我可以改進這一點,但在這裏就是你在choroba的例子執行腳本,而不是評估它像另一種思路。它允許你傳遞參數...

bash <(gpg -d ...) arg1 arg2 

......它'重寫'解釋器,但。即我會用bash -ue運行我的腳本。可能會或可能不會取決於腳本和不管你是自己寫與否:)