原文链接:http://www.thegeekstuff.com/2012/05/encrypt-bash-shell-script/
本文谷歌机翻
内容如下:
问:如何在Linux环境下加密我的bash shell脚本?这个shell脚本包含密码,我不希望别人有执行权限查看shell脚本,并获取密码。有没有一种方法来加密我的shell脚本?
答:首先,你不应该加密你的shell脚本。你真的应该正确记录你的shell脚本,以便任何人都能准确的理解它的作用。如果它包含密码等敏感信息,你应该找出一个不同的方法来编写shell脚本,而无需进行加密。
话虽这么说,如果你仍然坚持加密一个shell脚本,您可以使用SHC。
1. 下载并安装shc
wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz gzip -d xvfz shc-3.8.7.tgz cd shc-3.8.7 mkdir -p /usr/local/man/man1 make make install
shc的使用方法:
shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script
2. 创建一个简单的测试shell脚本
为了达到测试的目的,我们写一个产生随机数的random.sh shell脚本,运行的时候必须指定想生成多少随机数。
shell脚本内容如下:
vi random.sh #!/bin/bash echo -n "你想生成多少随机数字? " read max for (( start = 1; start <= $max; start++ )) do echo -e $RANDOM done
3. 加密random.sh脚本
shc -f random.sh
将创建这两个文件
ls -l random.sh* -rw-r--r--. 1 root root 139 Jul 9 16:16 random.sh -rwx--x--x. 1 root root 8708 Jul 9 16:18 random.sh.x -rw-r--r--. 1 root root 10022 Jul 9 16:18 random.sh.x.c
random.sh
是原来未加密的shell脚本文件
random.sh.x
是加密后的二进制文件
random.sh.x.c
是加密random.sh文件的C源代码。这个C源代码被编译之后会生成加密后random.sh.x文件
用file
命令查看文件类型
file random.sh random.sh: Bourne-Again shell script text executable file random.sh.x random.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped file random.sh.x.c random.sh.x.c: ASCII C program text
4.执行加密后的二进制文件,确保可以正常工作。
./random.sh.x
请注意加密后的random.sh.x文件仍然依赖第一行的#!/usr/bin/bash
5.为这个shell脚本指定到期时间
使用SHC你可以指定一个到期时间。当有人试图在到期时间之后执行这个shell脚本,他们会得到一个错误信息。
比如说,你不希望任何人,在2016-3-12
后执行random.sh.x
。
可以使用:shc -e
选项指定有效期并加密shell脚本,格式:dd / mm / yyyy
。
例子:
shc -e 12/3/2016 -f random.sh
在这个例子中,如果有人试图在2016-3-12之后执行random.sh.x,他们将会看见一个默认的过期信息。
./random.sh.x: has expired! Please contact your provider
如果你想指定自己的自定义到期消息,可以使用 -m选项。
shc -e 12/3/2016 -m "联系[email protected]此脚本的新版本" -f random.sh ./random.sh.x ./random.sh.x:已过期! 联系[email protected]此脚本的新版本
6.创建兼容性更好的shc加密Shell脚本
除了-e
和-m
,也可以使用下列选项:
-r
兼容性更好,可在相同操作系统下执行。(不一定)
-T
: 允许让ltrace, strace那样的程序追踪脚本运行
-v
详细信息
最后,值得再次重复:你不应该加密你的shell脚本。如果你决定使用SHC加密您的shell脚本,请记住,一个聪明的人仍然可以从shc生成的二进制文件获取到原来的shell脚本。