2012-03-14 75 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':

那里可能有更安全的机制。但是,您希望运行加密脚本的某些系统很可能没有这些机制,因此无法运行脚本。因此,如果您决定改变它,请记住这一点。