华为云计算 云知识 Shc是什么
Shc是什么

简介

Shc用来对shell脚本进行加密,它将shell脚本转换为一个可执行的二进制文件,从而避免shell脚本中的用户名、密码等重要信息暴露。

编译和测试方式

1.选择操作环境

本文选用华为鲲鹏 云服务 ECS KC1实例做测试

2.配置编译环境

1)下载和解压Shc软件包。

cd /usr/local/src

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

tar -zxvf shc-3.8.9.tgz

2)编译和安装Shc。

mkdir /usr/local/man/man1/ -p

cd /usr/local/src/shc-3.8.9

make install

回显内容如下:

[root@ecs-001 shc-3.8.9]# make install

***Installing shc and shc.1 on /usr/local

***Do you want to continue?

输入“y”,继续执行。

回显内容如下:

***Do you want to continue? y

install -c -s shc /usr/local/bin/

install -c -m 644 shc.1 /usr/local/man/man1/

3.测试已完成编译的软件

1)创建测试脚本“hello.sh”。

cd /usr/local/src

touch hello.sh

chmod +x hello.sh

vi hello.sh

输入以下内容后,退出保存

#!/bin/bash

echo "test shc"

2)执行“hello.sh”。

./hello.sh

回显内容如下:

[root@ecs-001 src]# ./hello.sh 

test shc

3)采用Shc对“hello.sh”加密。

cd /usr/local/src/

shc -v -f hello.sh

参数说明:

“-v”表示显示加密过程。

“-f”指定需要加密的脚本。

回显内容如下:

[root@ecs-001 src]# shc -v -f hello.sh 

shc shll=bash

shc [-i]=-c

shc [-x]=exec '%s' "$@"

shc [-l]=

shc opts=

shc: cc  hello.sh.x.c -o hello.sh.x

shc: strip hello.sh.x

shc: chmod go-r hello.sh.x

加密完成后,会产生两个新的文件,一个为“hello.sh.x”,一个为“hello.sh.x.c”。

其中“hello.sh.x”是新产生的二进制可执行文件,“hello.sh.x.c”是新产生的c源文件。

4)查看产生的新文件。

ll | grep hello

回显内容如下:

[root@ecs-001 src]# ll | grep hello

-rwxr-xr-x  1 root root       28 Jul 10 16:50 hello.sh

-rwx--x--x  1 root root    68496 Jul 10 17:05 hello.sh.x

-rw-r--r--  1 root root     9605 Jul 10 17:05 hello.sh.x.c

5)执行“hello.sh.x”测试。

./hello.sh.x

回显内容类似如下,表示加密成功。

[root@ecs-001 src]# ./hello.sh.x 

test shc

已知问题汇总

问题描述:

将在x86平台上经过Shc加密的“XXX.sh.x”文件复制到基于鲲鹏的服务器中,无法执行,例如,将“test.sh.x”从x86平台复制鲲鹏平台 云服务器 执行:

./test.sh.x

回显内容如下:

[root@ecs-001 test]# ./test.sh.x

-bash: ./test.sh.x: cannot execute binary file

问题原因:“test.sh.x”是c程序基于x86平台的gcc编译器生成的二进制可执行文件,x86与鲲鹏的指令集不兼容,导致“test.sh.x”在鲲鹏服务器上不能执行。

解决方法:

方式一:将源shell脚本重新在鲲鹏平台云服务器上重新用Shc加密。

方式二:将“test.sh”脚本在x86平台上经Shc加密生成“test.sh.x.c”源文件,再复制到鲲鹏平台的云服务器,重新由鲲鹏平台的云服务器的gcc编译生成二进制可执行文件。

gcc -o test ./test.sh.x.c
上一篇:智慧校园应用管理平台主要功能-图书管理与水电控管理子系统 下一篇:数字化转型,中大型企业如何选择云邮箱服务?