🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 1、vi/vim加密文件内容 vim gt-1.sh 输入:X 注意是大写的X ![](https://img.kancloud.cn/a6/56/a6566c7f73a2434ac439025b5bcc7752_417x383.png) ![](https://img.kancloud.cn/07/11/071148d54859a8a670f0ec87b18f0ae1_337x359.png) ` `用cat或more查看文件内容,显示为乱码;用vi重新编辑这个文件,会提示输入密码,如果输入的密码不正确,同样会显示为乱码! 注意:文件加密后,千万别忘了密码! ` `解密用vim加密的文件(前提是你知道加密的密码): * 用vim打开文件如text.txt,要输入正确的密码,然后在编辑时,将密码设置为空,方法是输入下面的命令: :set key= 然后直接回车,保存文件后,文件已经解密了。 * 或者这样也行: 在正确打开文件后用 “:X” 指令,然后给一个空密码也可以。 两种方法实际上效果是一样的。 ## 2.使用shc加密shell脚本 ` `采用shc工具加密Shell脚本,以提高shell脚本文件的安全性。 ` `介绍:当我们写的shell脚本,存在有敏感信息如账号密码,于是想加强脚本的安全性;还有不想让别人查看/修改您的shell核心代码等等情况。都可使用以下工具进行加密。 ` `shc是一个脚本编译工具, 使用RC4加密算法, 它能够把shell程序转换成二进制可执行文件(支持静态链接和动态链接)。 ` `shc官网:http://www.datsi.fi.upm.es/%7Efrosal/ 安装shc ``` wget [http://www.datsi.fi.upm.es/%7Efrosal/sources/shc-3.8.7.tgz](http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz) tar vxf shc-3.8.7.tgz cd shc-3.8.7 make test make strings make install 若报错: ***     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/ install: target `/usr/local/man/man1/' is not a directory: No such file or directory make: ** \[install\] Error 1 请创建 mkdir -p /usr/local/man/man1/  ,然后运行make install ``` ` `deepin可以使用`sudo apt-get install shc`进行安装。 常用参数: * -e date (指定过期日期) * -m message (指定过期提示的信息) * -f script\_name(指定要编译的shell的路径及文件名) * -r   Relax security. (可以相同操作系统的不同系统中执行) * -v   Verbose compilation(编译的详细情况) 使用方法: ``` shc -v -f abc.sh ``` > -v 是现实加密过程 -f 后面跟需要加密的文件  运行后会生成两个文件: abc.sh.x 和 abc.sh.x.c abc.sh.x为二进制文件,赋予执行权限后,可直接执行。更改名字mv abc.sh.x a.sh abc.sh.x.c 是c源文件。基本没用,可以删除. ` `**另shc还提供了一种设定有效执行期限的方法,过期时间,如:** ``` shc -e 28/01/2012 -m "过期了" -f abc.sh ``` ` `选项“-e”指定过期时间,格式为“日/月/年”;选项“-m”指定过期后执行此shell程序的提示信息。 如果在过期后执行,则会有如下提示: ``` # ./abc.sh.x  ./abc.sh.x: has expired! ``` 过期了 ### 加密脚本 ``` # shc -v -r -f mysql_backup.sh ``` ` `-v: 是verbose模式,输出更详细编译日志. -f: 指定脚本的名称. ``` 上面命令在屏幕上的输出: shc shll=sh shc [-i]=-c shc [-x]=exec ‘%s’ “$@” shc [-l]= shc opts= shc: cc mysql_backup.sh.x.c -o mysq_backup.sh.x shc: strip mysql_backup.sh.x shc: chmod go-r mysql_backup.sh.x ``` ` `我们可以看到生成了动态链接可执行二进制文件mysql\_back.sh.x和C源文件mysql\_backup.sh.x.c, 注意生成的二进制文件因为是动态链接形式, 所以在其它平台上不能运行: ``` mysql_backup.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped ``` ### 生成静态链接的二进制可执行文件 ` `我们可以通过下面的方法生成一个静态链接的二进制可执行文件: ``` # CFLAGS=-static shc -r -f mysql_backup.sh # file mysql_backup.sh.x mysql_backup.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, stripped ``` ` `提示: 通过sch加密后的脚本文件很安全吗? ` `一般来说是安全的, 不过可以使用gdb和其它的调试工具获得最初的源代码. 如果你需要更加安全的方法, 可以考虑使用wzshSDK. ` `另外, sch还可以设置脚本的运行期限和自定义返回信息: ``` shc -e 03/31/2007 -m “the mysql backup script is now out of date.” -f mysql_back.sh ``` ` `-e表示脚本将在2007年3月31日前失效, 并根据-m定义的信息返回给终端用户. ### 无法执行问题 ` `使用该工具有时会遇到生成的脚本无法执行的情况,提示“Operation not permitted”。这时需要对生成的*.c文件进行修改,再重新编译。比如有test.sh脚本需要加密: ``` 1、./shc -v -r -f test.sh,生成test.x、test.x.c文件 2、修改test.x.c文件,删除图中所示部分。 ``` ![](https://img.kancloud.cn/60/e0/60e05946af34ed5baa52004266c333c8_365x260.png) ``` 3、gcc -o test.x test.x.c 重新编译生成test.x文件。 ``` ## 设置打开文件需要root输入密码 ` ` inux 如何设置打开文件或目录需要root权限?一旦双击,就提示需要 root权限打开。 ``` sudo chown root:root /home/public sudo chmod -R 700 /home/public ``` ## 其他加密 [更多加密方法](https://www.cnblogs.com/kevingrace/p/8194784.html)