2012-03-14 116 views
0

我使用的是Ubuntu 10.04。我創建了一個shell腳本。編寫腳本後,右鍵單擊該文件並選擇Gedit時可以編輯該代碼。我想知道如何在Gedit中使腳本無法讀取。如何模糊shell腳本?

+1

腳本_必須是可讀的,以便解釋器能夠運行它。你在問如何用編譯語言重新編寫腳本作爲程序來阻止某人修改腳本?或者......你真的想完成什麼? [編譯器的shell腳本]的 – sarnold 2012-03-14 11:20:06

+0

可能重複(http://stackoverflow.com/questions/1297318/compilers-for-shell-scripts) – l0b0 2012-03-14 11:54:17

+0

模糊處理是東西比缺少訪問(讀取)的權限不同。你是指哪一個? – bitmask 2012-03-14 12:03:40

回答

3

您可能正在尋找類似shc的東西。 從手冊頁:

shc在命令行上創建使用-f指定的 腳本的剝離二進制可執行版本。

http://freecode.com/projects/shc

免責聲明:我沒有測試過SHC我也不知道如何/如果它的工作原理

2

你想要做什麼是不容易成爲可能。腳本被解釋,而不是編譯,這就是爲什麼你看到文本。

要執行一個腳本,有效用戶必須具有讀取訪問。除了允許執行權限或使用shc(如KillerX已經提出的良好建議)而不讓用戶查看腳本競賽之外,替代方案是使用sudo。您可以編輯sudoers文件中像這樣(記得用visudo編輯這個文件!):

username ALL=(ALL) /path/to/your_script.sh 

現在腳本將是「用戶名」可執行,但他將無法讀取其內容。當然,你需要刪除所有權限,從這個文件中「用戶名」 ...

+0

什麼是需要是創建腳本後我被轉換執行權限。如果我將這個腳本給這個人的其他人一定不能打開這個腳本,他們只能運行這個腳本。 – Viswa 2012-03-14 11:56:27

+1

然後,你應該嘗試shc。除了使用非解釋語言之外,我無法弄清楚其他解決方案。 – 2012-03-14 11:59:14

+0

我是下載SHC 3.8.7和安裝成功,那麼腳本test.sh轉化通過終端i被跑./test.sh.x到test.sh.x format.Then。它運行我的系統。但是同樣的test.sh.x被複制並粘貼到另一個系統並安裝了shc。然後我運行./test.sh.x它沒有運行。該怎麼辦。 – Viswa 2012-03-14 13:17:44

3

混淆(這是什麼時,他們說,他們希望有一個「二進制」 shell腳本大多數人的意思)是一個壞主意(TM) - 去過也做過。它不提供與一個確定的程序員任何安全(他們剛剛跟蹤腳本搞清楚它在做什麼),這使得它真的,真的很難調試(這可能是除非你是GreyCat,你會需要做很多。)。

2

GEdit只是另一個可用於編輯文件的工具,非常像「vi」或「nano」。唯一的區別是,我相信它是圖形的。不過,看起來原來的海報試圖在這裏做的只是讓別人無法查看某些腳本。如果那是真的,那麼有些解決方案可能值得研究。

SHC:

SHC是用於此目的的一個很好的工具。並基於此線程中的最後一篇文章,看起來OP已經嘗試過,但它在某些系統上不起作用。如果是這樣,那麼繼承人之所以會這樣。 SHC的工作方式其實非常簡單。當使用它來混淆腳本時,您必須重新編譯腳本以用於您想要運行的任何操作系統。這意味着,你不能在Ubuntu機器上運行SHC編譯器,並期望生成的腳本能夠在Red Hat/CentOS機器上運行。看來最新版本的SHC可以是accessed here

EnScryption:

如果你的主要目標是從嘗試讀取你的代碼勸阻別人,你可以只貼上你的腳本像this one網站。該站點將自動生成腳本的混淆版本,該腳本應該能夠在大多數常見Unix系統上運行而不會出現問題。

如果您不希望將代碼粘貼到上述網站或出於任何原因使用SHC,那麼還有另一種解決方案。使用openssl!

的OpenSSL:

如果你的腳本是真的那麼敏感,那麼Openssl的(或類似的工具)可能是您的最佳選擇。爲什麼?由於openssl工具特別適用於大多數Unix系統......也就是說, Ubuntu,CentOS,Red Hat,Macs,AIX。它是作爲默認安裝的一部分。如果您決定採用這種方式,請注意,您需要編寫腳本,使其在運行之前必須提供密碼。

使用OpenSSL加密腳本:

cat yourscript.sh | openssl aes-128-cbc -a -salt -k (specify-a-password-here) > yourscript.enc.sh 

(OR) 

openssl aes-128-cbc -a -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.enc.sh 

(OR) 

openssl aes-128-cbc -a -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here) 

解密你的腳本使用OpenSSL:

cat yourscript.enc.sh | openssl aes-128-cbc -a -d -salt -k (specify-a-password-here) > yourscript.dec.sh 

(OR) 

openssl aes-128-cbc -a -d -salt -in yourscript.sh -k (specify-a-password-here) > yourscript.dec.sh 

(OR) 

openssl aes-128-cbc -a -d -salt -in yourscript.sh -out yourscript.enc.sh -k (specify-a-password-here) 

快速一點需要注意有關OpenSSL的加密機制「AES-128- cbc':

那裏可能有更安全的機制。但是,您希望運行加密腳本的某些系統很可能沒有這些機制,因此無法運行腳本。因此,如果您決定改變它,請記住這一點。