对shell脚本进行加密
用shell脚本对系统进行自动化维护,简单,便捷而且可移植性好.
但shell脚本是可读写的,很有可能会泄露敏感信息,如用户名,密码,路径,IP等.
同样,在shell脚本运行时会也泄露敏感信息.
请问如何不影响脚本运行的前提下,对脚本进行加密?
一、shc方法
shc是一个加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这就很好的解决了上述问题.
yum安装:
yum -y install shc
编译安装:
wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz
tar xvfz shc-3.8.7.tgz
cd shc-3.8.7
make
[root@martin shc-3.8.7]# ./shc -v
shc parse(-f): No source file specified shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script
创建一个示例Shell脚本
[root@martin shc-3.8.7]# vi random.sh
#!/bin/bash
read -p "How many random numbers do you want to generate?" max
for (( start = 1; start <= $max; start++ ))
do
echo -e $RANDOM
done
给脚本增加可执行权限
[root@martin shc-3.8.7]# chmod u+x random.sh
执行示例脚本
[root@martin shc-3.8.7]# ./random.sh
How many random numbers do you want to generate?3
14235
9555
7671
使用shc加密Shell脚本
[root@martin shc-3.8.7]# ./shc -v -r -T -f random.sh
shc shll=bash
shc [-i]=-c
shc [-x]=exec '%s' "$@"
shc [-l]=
shc opts=
shc: cc random.sh.x.c -o random.sh.x
shc: strip random.sh.x
shc: chmod go-r random.sh.x
运行后会生成两个文件,script-name.x 和 script-name.x.c
script-name.x是加密后的可执行的二进制文件
script-name.x.c是生成script-name.x的原文件(c语言)
[root@martin shc-3.8.7]# ll random.sh*
-rwxr-xr-x 1 root root 146 Aug 2 10:26 random.sh
-rwx--x--x 1 root root 9424 Aug 2 10:30 random.sh.x
-rw-r--r-- 1 root root 10080 Aug 2 10:30 random.sh.x.c
执行加密后的脚本
[root@martin shc-3.8.7]# ./random.sh.x
How many random numbers do you want to generate?3
28955
21487
29513
还不完善,只能全路径执行shc命令或者进入目录内,加入全局环境变量/etc/profile未生效
二、gzexe
它是使用系统自带的gzexe程序,它不但加密,同时压缩文件
这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息。
使用方法:
[root@martin home]# gzexe random.sh
random.sh: 20.5%
[root@martin home]# ll random.sh*
-rwxr-xr-x 1 root root 953 Aug 2 10:45 random.sh
-rwxr-xr-x 1 root root 146 Aug 2 10:45 random.sh~
它会把原来没有加密的文件备份为 file.sh~ ,同时 file.sh 即被变成加密文件
参考地址:
http://lidao.blog.51cto.com/3388056/1914205
https://yq.aliyun.com/ziliao/65848
对shell脚本进行加密的更多相关文章
- shell 脚本加密
日常编写shell脚本时会写一些账号和密码写入脚本内,但是不希望泄露账号密码,所以对shell脚本进行加密变成可执行文件. 主要使用 shc 对 Linux shell 脚本加密,shc是一个专业的加 ...
- shell脚本加密方式
--作者:飞翔的小胖猪 --创建时间:2021年5月17日 --修改时间:2021年5月17日 说明 shell作为Linux操作系统中原生的语言环境,由于其简单.便捷.可以移植等特性常被运维人员作为 ...
- shell脚本中添加用户并设置密码
有时候在初始化shell脚本中希望能顺便创建用户并指定密码,使用useradd命令可以达到该效果: useradd -m -p encryptedPassword username 参数说明: -m ...
- shell脚本加密
如何保护自己编写的shell程序要保护自己编写的shell脚本程序,方法有很多,最简单的方法有两种:1.加密 2.设定过期时间,下面以shc工具为例说明: 一.下载安装shc工具shc是一个加密s ...
- 转载:Shell 脚本加密 - 略有修改
shc是一个加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件. shc 安装 yum -y install shc 如果yum不能安装,请移步官方下载rpm包 http ...
- Linux之Shell 脚本加密工具-shc
Much effort, much prosperity. 为什么要加密Shell脚本呢?当然是为了安全! 可能脚本里面涉及到密码之类的就需要进行加密了 一.下载安装shc工具 要保护自己编写的she ...
- linxu下的shell脚本加密,shell生成二机制可执行文件
再安全的加密也抵不过逆向,斗智斗勇吧,持续加密持续破解 1.简单的加密:gzexe file.sh 2.使用shc加密:下载地址:http://www.datsi.fi.upm.es/~frosal/ ...
- 优化对称加密的 shell 脚本
前言 之前一篇文章<shell 脚本实现文件对称加密>中,讲述了如何用 shell 脚本实现对称加密. 之后写管理密码脚本时,发觉该脚本的处理速度非常慢,而其原因就在 shell 的处理命 ...
- CentOS 下运维自动化 Shell 脚本之 expect
CentOS 下运维自动化 Shell脚本之expect 一.预备知识: 1.在 Terminal 中反斜杠,即 "" 代表转义符,或称逃脱符.("echo -e与pri ...
随机推荐
- 西门子与三菱PLC报文比较
1.西门子和三菱的几个区别(上位只关心的通讯层面):1. 西门子PLC通讯端口固定102,但是可以连接多个PC端(客户端),三菱PLC通讯端口可以自定义,最多好像8个,但是每个端口只能连接一个客户端: ...
- override 与overload 的差别
方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现. 重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个 ...
- Qt保存界面配置到注册表
//需要使用QSetting #include<QSettings> 声明函数 protected: void closeEvent(QCloseEvent *event); privat ...
- Java中文件的上传与下载
文件的上传与下载主要用到两种方法: 1.方法一:commons-fileupload.jar commons-io.jar apache的commons-fileupload实现文件上传,下载 [u ...
- Linux性能测试 ulimit命令
功能说明:控制shell程序的资源. 语 法:ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大 小>][-m &l ...
- WPF动画旋转(3轴同时旋转问题)
原文:WPF动画旋转(3轴同时旋转问题) WPF的资料比较少,做起来不是很方便,之前一直有个XYZ3个轴同时旋转的问题,开始的时候以为通过 this.theRotateX.Axis = new Ve ...
- OpenStack Summit Paris 会议记录 - 11-05-2014
Ops/Design Summit - 2014-11-05 Record 1. Keystone Operators, Deployers, and DevOps 1. Icehouse中,SAML ...
- Html 空格与换行
空格 换行 <br/> 调行距 <div style="line-height:10px"></div>
- C# 写CSV文件字符串前面0不显示的解决办法
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- 数组/LINQ/List/ObservableCollection
private static void AddIndustryTypes(sectorCode[] result) { var industryTypes = (from t in result se ...