日常编写shell脚本时会写一些账号和密码写入脚本内,但是不希望泄露账号密码,所以对shell脚本进行加密变成可执行文件。
主要使用 shc 对 Linux shell 脚本加密,shc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,可以避免我们shell脚本中保密信息被公开。
一、官网下载shc
shc下载地址:
http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
二、安装shc
1、解压 [root@iZ2ze2pbbffhmn53ao4tuaZ ~]# tar -zxvf shc-3.8.9.tgz shc-3.8.9/ shc-3.8.9/match shc-3.8.9/shc-3.8.9.c shc-3.8.9/CHANGES shc-3.8.9/test.csh shc-3.8.9/test.bash shc-3.8.9/shc.c shc-3.8.9/shc.1 shc-3.8.9/shc.html shc-3.8.9/pru.sh shc-3.8.9/test.ksh shc-3.8.9/makefile shc-3.8.9/shc.README shc-3.8.9/Copying 2、创建安装目录 [root@iZ2ze2pbbffhmn53ao4tuaZ shc-3.8.9]# mkdir -p /usr/local/man/man1
#shc将安装命令到/usr/local/bin/目录下;将帮助文档存放在/usr/local/man/man1/目录下,如果系统中无此目录,安装时会报错 3、安装shc [root@iZ2ze2pbbffhmn53ao4tuaZ shc-3.8.9]# make install cc -Wall shc.c -o shc *** Installing shc and shc.1 on /usr/local *** ¿Do you want to continue? y install -c -s shc /usr/local/bin/ install -c -m 644 shc.1 /usr/local/man/man1/
#安装过程中会提示是否继续,如果直接回车会报错,所以输入y或者yes
三、生成加密文件
1、shc 常用参数
-e date #指定执行文件过期日期 -m message #指定过期时的提示的信息 -f script #指定要编译的shell的路径及文件名(必须选参数)
-r Relax security. #允许相同操作系统的下执行
-v Verbose compilation #打印编译的详细信息
2、生成加密文件
[root@iZ2ze2pbbffhmn53ao4tuaZ ~]# shc -v -r -f pandadata-baby-d.sh #显示编译信息,允许多系统执行 shc shll=bash shc [-i]=-c shc [-x]=exec '%s' "$@" shc [-l]= shc opts= shc: cc pandadata-baby-d.sh.x.c -o pandadata-baby-d.sh.x shc: strip pandadata-baby-d.sh.x shc: chmod go-r pandadata-baby-d.sh.x
生成加密文件以后,会生成两个文件后缀为pandadata-baby-d.sh.x和后缀pandadata-baby-d.sh.x.c的两个文件, 其中pandadata-baby-d.sh.x是加密后的可执行的二进制文件,用./pandadata-baby-d.sh.x即可运行,pandadata-baby-d.sh.x.c是生成pandadata-baby-d.sh.x的C语言版本的原文件,如果要提供给其他人执行,这样他只能看见脚本执行的结果就就无法查看到了执行文件的内容了,这样大大的加强了信息的保护。
如果需要给文件设置一个有效日期,这个时候我们增加时间参数-e即可,如果过期了我们需要给个提示信息增加-m参数即可。
shc -e 15/11/2017 -m "脚本已经过期" pandadata-baby-d.sh