你写的shell在生产环境是否加密?

1、简单加密,防止别人看里面具体内容。

2、可以隐蔽脚本中的密码等信息。(比如你的备份脚本,涉及到密码等问题)

好像还有点用处,大概常用的两种方式。

第一种方法(gzexe):

这种加密方式不是非常保险的方法,但是能够满足一般的加密用途。它是使用系统自带的gzexe程序,它不但加密,同时压缩文件。

使用方法: gzexe file.sh 它会把原来没有加密的文件备份为 xx.sh~ ,同时 xx.sh 即被变成加密文件;

[root@node6 ~]# ./1.sh 
2016年 08月 31日 星期三 15:38:45 CST
[root@node6 ~]# gzexe 1.sh 
1.sh:120.0%
[root@node6 ~]# ll 1.sh*
-rwxr-xr-x 1 root root 831 8月  31 15:38 1.sh
-rwxr-xr-x 1 root root   5 8月  31 15:30 1.sh~
[root@node6 ~]# cat 1.sh~
date
[root@node6 ~]#

建议使用,一方面系统自带命令,达到目的即可,没人闲的破解你的脚本,就算要破解,先进入你系统再说。

第二种方式 shc

shc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法也很好的解决了脚本中含有IP、密码等不希望公开的问题。

包下载链接:

http://www.datsi.fi.upm.es/~frosal/sources/

wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.6.tgz

[root@node6 local]# tar xf shc-3.8.6.tgz 
[root@node6 local]# cd shc-3.8.6
[root@node6 shc-3.8.6]# mkdir -p /usr/local/man/man1

这步是必须的,不然安装过程中会报错,shc将安装命令到/usr/local/bin/目录下;将帮助文档存放在/usr/local/man/man1/目录下,如果系统中无此目录,安装时会报错,可创建此目录后再执行安装。

[root@node6 shc-3.8.6]# make install
***Installing shc and shc.1 on /usr/local
***Do you want to continue? yes
install -c -s shc /usr/local/bin/
install -c -m 644 shc.1 /usr/local/man/man1/
[root@node6 shc-3.8.6]#
yum install glibc  glibc.i686 -y

用法:

-f 指定要加密的文件

[root@node6 ~]# shc -r -f 1.sh
1.sh.x.c: In function 'chkenv':
1.sh.x.c:277: warning: cast from pointer to integer of different size

运行后会生成两个文件,xx.x 和 xx.x.c.   其中xx.x是加密后的可执行的二进制文件;用./xx.x即可运行,xx.x.c是生成xx.x的原文件(c语言).

[root@node6 ~]# ll 1.sh*
-rwxr-xr-x 1 root root   831 8月  31 15:38 1.sh
-rwxr-xr-x 1 root root     5 8月  31 15:30 1.sh~
-rwx--x--x 1 root root 12656 8月  31 16:04 1.sh.x
-rw-r--r-- 1 root root 14001 8月  31 16:04 1.sh.x.c
[root@node6 ~]#

不建议使用,需要单独安装管理,比较麻烦。如果安全性要求极高,倒是可以参数。