用shc来保护您的Linux脚本文件 (linux shc)

在日常的Linux服务器管理工作中,我们通常会编写Shell脚本来完成一些自动化的工作。由于脚本代码都是明文的,对于这些脚本文件的保护就显得尤为重要,以防止脚本代码被恶意的用户窃取、篡改或者破解。

在这篇文章中,我们将会介绍一种轻量级的Shell脚本编译器——shc,它可以将我们的Shell脚本文件编译成可执行文件,从而提高脚本文件的安全性。

一、shc的安装

shc是一款免费的软件,可以在Linux操作系统中通过源码包的方式进行安装,具体步骤如下:

1. 下载源码包

我们需要前往shc官方网站(http://www.datsi.fi.upm.es/~frosal/sources/shc.html)下载最新版本的shc源码包,也可以直接使用下面的命令进行下载:

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

2. 解压源码包

下载完源码包后,我们需要解压缩它,输入下面的命令:

$ tar zxvf shc-3.9.6.tgz

3. 进入源码目录

解压后,我们会得到一个shc-3.9.6的源码目录,我们需要进入这个目录中:

$ cd shc-3.9.6

4. 编译安装

进入到源码目录后,我们便可以使用make工具进行编译,并将编译后的shc可执行文件安装到系统中:

$ make && make install

5. 验证安装

如果一切顺利,我们可以尝试执行shc命令,并查看其版本号,用以验证shc的安装是否成功:

$ shc -v

二、使用shc编译脚本文件

shc的工作原理是将Shell脚本代码编译成C的代码,然后再将C代码编译成二进制可执行文件。这样,即使得到了二进制文件,也很难还原出原始的Shell脚本代码。

下面,我们将演示使用shc来编译一个简单的Shell脚本文件:

$ cat test.sh

#!/bin/bash

echo “Hello, World!”

1. 使用shc编译

进入到test.sh所在的目录下,我们可以使用下面的命令将test.sh编译成可执行文件:

$ shc -f test.sh

如果编译成功,将会生成一个新的名为test.sh.x的二进制可执行文件。

2. 运行可执行文件

我们可以通过下面的命令来执行刚刚编译出来的test.sh.x文件:

$ ./test.sh.x

Hello, World!

这样,我们就成功地将一个Shell脚本文件编译成了一个可执行文件。

三、shc的高级用法

除了基本的编译功能外,shc还提供了一些高级的用法,可以更进一步地保护我们的脚本文件。

1. 自定义编译器

使用shc编译Shell脚本时,默认会将代码编译成二进制文件,并且会在文件头部添加一些信息,比如shc的版本号等。而这些信息可能会被攻击者利用来破解脚本代码。为了防止这种情况发生,我们可以自定义编译器,让其不添加这些信息。

自定义编译器的方法是在shc命令后加上-e选项,比如:

$ shc -e 1 -f test.sh

其中,-e 1表示关闭默认的加密算法,而-f test.sh则表示要编译的脚本文件是test.sh。

2. 指定加密密钥

shc默认的加密算法是比较简单的,如果攻击者得到了编译后的二进制文件,就有可能使用反汇编、逆向工程等手段还原出原始的Shell脚本代码。为了使编译后的可执行文件更加安全,我们可以指定自己的密钥来加密编译后的文件。

使用自定义密钥的方法是在shc命令后加上-k选项和密钥,比如:

$ shc -k mypassword -f test.sh

其中,mypassword即为我们自己指定的密钥。

3. 指定输出目录

shc默认情况下会将编译后的文件直接输出到当前目录,而如果我们想要将编译后的文件保存到指定的目录中,可以使用-o选项,比如:

$ shc -o /tmp/test.sh.x -f test.sh

其中,/tmp/test.sh.x即为我们指定的输出文件路径。

四、

shc是一款非常实用的Shell脚本编译器,可以将我们的Shell脚本文件编译成二进制可执行文件,从而提高脚本文件的安全性。在使用shc时,我们可以通过自定义编译器、指定加密密钥、指定输出目录等方法来进一步提高编译后文件的安全性。当然,在使用shc时,也需要注意一些细节问题,比如编译后的可执行文件可能会与特定的操作系统版本不兼容等。在实际应用中,我们需要结合自己的需求和实际情况来进行选择和使用。

相关问题拓展阅读:

如何在Linux系统中安装FastDFS软件?

在Linux系统中进行FastDFS软件的安装配置,方法的过程中是很复杂的,所以如果不是专业的电脑高手可能是没有办法整理出来,所以为了方便网友们更好的了解这个软件的安装,一下就是详细的过程,大家一起来看看吧!\x0d\x0a之一步:安装FastDFS\x0d\x0a1.解压FastDFS_v4.07.tar.gz==>FastDFS\x0d\x0a2.cdFastDFS==>vimmake.sh\x0d\x0a修改以下内容\x0d\x0aTARGET_PREFIX=/usr/local/察坦让fdfs\x0d\x0aTARGET_CONF_PATH=/usr/local/fdfs/conf\x0d\x0amkdir-p/usr/local/fdfs\x0d\x0amkdir-p/usr/local/fdfs/conf\x0d\x0a修改\x0d\x0aif;then\x0d\x0aif;then\x0d\x0aif;then\x0d\x0amkdir-p$TARGET_CONF_PATH\x0d\x0acp-fconf/tracker.conf$TARGET_CONF_PATH\x0d\x0acp-fconf/storage.conf$TARGET_CONF_PATH\x0d\x0acp-fconf/client.conf$TARGET_CONF_PATH\x0d\x0acp-fconf/http.conf$TARGET_CONF_PATH\x0d\x0acp-fconf/mime.types$TARGET_CONF_PATH\x0d\x0afi\x0d\x0acp-finit.d/fdfs_trackerd/etc/rc.d/init.d/\x0d\x0acp-finit.d/fdfs_storaged/etc/rc.d/init.d/\x0d\x0a/in/chkconfig–addfdfs_trackerd\x0d\x0a/in/chkconfig–addfdfs_storaged\x0d\x0afi\x0d\x0afi\x0d\x0a第二步:安装libevent-2.0.19-stable.tar.gz\x0d\x0a1.解压libevent-2.0.19-stable.tar.gz==>libevent-2.0.19-stable\x0d\x0a2.进入libevent-2.0.19-stable安装\x0d\x0a./configure–prefix=/usr/local/libevent\x0d\x0amake\x0d\x0amakeinstall\x0d\x0a3.添加软连接\x0d\x0aln-s/usr/local/libevent/lib/libevent-2.0.so.5/usr/lib/libevent-2.0.so.5\x0d\x0aln-s/usr/local/libevent/lib/libevent-2.0.so.5/usr/lib64/libevent-2.0.so.5\x0d\x0aln-s/usr/local/libevent/lib/libevent-2.0.so.5/lib64/libevent-2.0.so.5\x0d\x0aln-s/usr/local/败局libevent/lib/libevent-2.0.so.5/lib/libevent-2.0.so.5\x0d\x0aln-s/usr/local/libevent/lib/libevent-2.0.so.5/usr/local/lib64/libevent-2.0.so.5\x0d\x0aln-s/usr/local/libevent/lib/libevent-2.0.so.5/usr/local/lib/libevent-2.0.so.5\x0d\x0a第三步:安装FastDFS\x0d\x0a./make.shC_INCLUDE_PATH=/usr/local/libevent/includeLIBRARY_PATH=/usr/local/libevent/lib\x0d\x0a./信碧make.shinstall\x0d\x0a第四步:如果/usr/local/fastdfs/conf没有fdfs_trackerd和fdfs_storaged这两个文件,就从/FastDFS/tracker和FastDFS/storage/目录下复制过去\x0d\x0a第五步:修改配置\x0d\x0amkdir-p/home/softinstall/data/tracker\x0d\x0a1.修改tracker.conf\x0d\x0abase_path=/home/softinstall/data/tracker\x0d\x0abind_addr=192.168.9.169\x0d\x0a1.1修改storage_ids.conf\x0d\x0a100001group1192.168.9.169\x0d\x0a2.启动tracker\x0d\x0a./fdfs_trackerd../conf/tracker.conf\x0d\x0a查看22122端口是否启动起来\x0d\x0a第六步:配置storage\x0d\x0amkdir-p/home/softinstall/data/store\x0d\x0amkdir-p/home/softinstall/data/store/store0\x0d\x0amkdir-p/home/softinstall/data/store/store1\x0d\x0amkdir-p/home/softinstall/data/store/store2\x0d\x0a1.修改storage.conf\x0d\x0abase_path=/home/softinstall/data/store\x0d\x0astore_path_count=3\x0d\x0astore_path0=/home/softinstall/data/store/store0\x0d\x0astore_path1=/home/softinstall/data/store/store1\x0d\x0astore_path2=/home/softinstall/data/store/store2\x0d\x0atracker_server=192.168.9.169:22122\x0d\x0a#限6*6=36个目录默认256*256\x0d\x0asubdir_count_per_path=6\x0d\x0a2.启动storage\x0d\x0a./fdfs_storaged../conf/storage.conf\x0d\x0a查看23000端口是否启动\x0d\x0a第七步:安装nginx+fastdfs模块\x0d\x0a1.安装pcre-8.32\x0d\x0a进入pcre-8.32\x0d\x0a./configure\x0d\x0amake\x0d\x0amakeinstall\x0d\x0a安装如果有问题缺省某些包,可以执行:\x0d\x0ayumgroupinstall”DevelopmentTools”\x0d\x0a第八步:解压fastdfs-nginx-module_v1.15.tar.gz和nginx-1.4.2.tar.gz\x0d\x0a1.进入fastdfs-nginx-module_v1.15/src\x0d\x0avimfastdfs-nginx-module_v1.15/src/config\x0d\x0a修改成以下内容\x0d\x0angx_addon_name=ngx_http_fastdfs_module\x0d\x0aHTTP_MODULES=”$HTTP_MODULESngx_http_fastdfs_module”\x0d\x0aNGX_ADDON_SRCS=”$NGX_ADDON_SRCS$ngx_addon_dir/ngx_http_fastdfs_module.c”\x0d\x0aCORE_INCS=”$CORE_INCS/usr/local/fdfs/include/fastdfs/usr/local/fdfs/include/fastcommon/”\x0d\x0aCORE_LIBS=”$CORE_LIBS-L/usr/local/fdfs/lib-lfastcommon-lfdfsclient”\x0d\x0aCFLAGS=”$CFLAGS-D_FILE_OFFSET_BITS=64-DFDFS_OUTPUT_CHUNK_SIZE=’256*1024′-DFDFS_MOD_CONF_FILENAME=’\”/usr/local/fdfs/conf/mod_fastdfs.conf\”‘”\x0d\x0a2.安装\x0d\x0a进入nginx-1.4.2目录\x0d\x0a./configure–prefix=/home/softinstall/nginx/nginx-fastdfs-install–with-pcre=/home/softinstall/nginx/pcre-8.32–add-module=/home/softinstall/nginx/fastdfs-nginx-module/src\x0d\x0a安装中如果有问题\x0d\x0a可以执行安装以下包:yum-yinstallgccgcc-c++zlib-developenssl-devel\x0d\x0a3.配置nginx.conf\x0d\x0a进入nginx-fastdfs-install/conf\x0d\x0avimnginx.conf配置以下内容\x0d\x0alocation/M00{\x0d\x0aroot/home/softinstall/data/store/store0/data;\x0d\x0angx_fastdfs_module;\x0d\x0a}\x0d\x0alocation/M01{\x0d\x0aroot/home/softinstall/data/store/store1/data;\x0d\x0angx_fastdfs_module;\x0d\x0a}\x0d\x0alocation/M02{\x0d\x0aroot/home/softinstall/data/store/store2/data;\x0d\x0angx_fastdfs_module;\x0d\x0a}\x0d\x0a4.配置mod_fastdfs.conf\x0d\x0amkdir-p/home/softinstall/data/nginx_mod\x0d\x0a进入/usr/local/fdfs/conf目录\x0d\x0avimmod_fastdfs.conf\x0d\x0abase_path=/home/softinstall/data/nginx_mod\x0d\x0atracker_server=192.168.9.169:22122\x0d\x0astore_path_count=3\x0d\x0astore_path0=/home/softinstall/data/store/store0\x0d\x0astore_path1=/home/softinstall/data/store/store1\x0d\x0astore_path2=/home/softinstall/data/store/store2\x0d\x0a5.启动nginx\x0d\x0a进入/home/softinstall/nginx/nginx-fastdfs-install/in\x0d\x0a./nginx\x0d\x0a如果启动找不到\x0d\x0aerrorwhileloadingsharedlibraries:libfdfsclient.so:cannotopensharedobjectfile:Nosuchfileordirectory\x0d\x0aerrorwhileloadingsharedlibraries:libfastcommon.so:cannotopensharedobjectfile:Nosuchfileordirectory\x0d\x0a请使用以下软连接\x0d\x0aln-s/usr/local/fdfs/lib/libfastcommon.so/usr/lib/libfastcommon.so\x0d\x0aln-s/usr/local/fdfs/lib/libfastcommon.so/usr/lib64/libfastcommon.so\x0d\x0aln-s/usr/local/fdfs/lib/libfdfsclient.so/usr/lib64/libfdfsclient.so\x0d\x0aln-s/usr/local/fdfs/lib/libfdfsclient.so/usr/lib/libfdfsclient.so\x0d\x0a==========================fastDHT================================\x0d\x0a【之一步:】安装BerkleyDB\x0d\x0a【1.】tar-zxvfdb-4.7.25.tar.gz\x0d\x0a进入db-4.7.25/build_unix\x0d\x0a../dist/configure–prefix=/usr\x0d\x0a【第二步:】安装FastDHT\x0d\x0amkdir-p/usr/local/fdht\x0d\x0amkdir-p/usr/local/fdht/conf\x0d\x0a1.tar-zxvfFastDHT_v1.23.tar.gz\x0d\x0a进入FastDHT_v1.23\x0d\x0avimmake.sh\x0d\x0a修改\x0d\x0aTARGET_PREFIX=/usr/local/fdht\x0d\x0aTARGET_CONF_PATH=/usr/local/fdht/conf\x0d\x0aif;then\x0d\x0acd..\x0d\x0acp-frestart.sh$TARGET_PREFIX/bin\x0d\x0acp-fstop.sh$TARGET_PREFIX/bin\x0d\x0aif;then\x0d\x0aif;then\x0d\x0aif;then\x0d\x0amkdir-p$TARGET_CONF_PATH\x0d\x0acp-fconf/fdhtd.conf$TARGET_CONF_PATH\x0d\x0acp-fconf/fdht_servers.conf$TARGET_CONF_PATH\x0d\x0acp-fconf/fdht_client.conf$TARGET_CONF_PATH\x0d\x0afi\x0d\x0acp-finit.d/fdhtd/etc/rc.d/init.d/\x0d\x0a/in/chkconfig–addfdhtd\x0d\x0afi\x0d\x0afi\x0d\x0afi\x0d\x0a【2.】安装\x0d\x0a./make.sh\x0d\x0a\x0d\x0a如果出现global.h:18:19:error:event.h:Nosuchfileordirectory\x0d\x0a进入/home/softinstall/fastdfs/libevent-2.0.19-stable然后执行\x0d\x0a./configure–prefix=/usr\x0d\x0amake\x0d\x0amakeinstall\x0d\x0a\x0d\x0a./make.shinstall\x0d\x0a【3.】配置fdht\x0d\x0a【3.1】vim/usr/local/fdht/conf/fdhtd.conf\x0d\x0aport=11411\x0d\x0abash_path=/home/softinstall/data/fastdht\x0d\x0acache_size=32MB\x0d\x0astore_sub_keys=true\x0d\x0ause_storage_id=true\x0d\x0a#include/usr/local/fdht/conf/fdht_servers.conf(本行前有#表示打开,如果想关闭此选项,则应该为##开头)\x0d\x0a【3.2】vim/usr/local/fdht/conf/fdht_server.conf\x0d\x0agroup_count=1\x0d\x0agroup0=192.168.9.165:11411\x0d\x0a【3.3】vim/usr/local/fdht/conf/fdht_client.conf\x0d\x0akeep_alive=1(本选项关联storaged.conf文件)\x0d\x0abase_path=/home/softinstall/data/fastdht\x0d\x0a#include/usr/local/fdht/conf/fdht_servers.conf\x0d\x0a【3.4】配置FastDFS的storaged.conf文件\x0d\x0avistoraged.conf(默认位置:/usr/local/fdfs/conf/storaged.conf)\x0d\x0acheck_file_duplicate=1\x0d\x0a本配置项解释:是否检测上传文件已经存在。如果已经存在,则不存在文件内容,建立一个索引链接以节省磁盘空间\x0d\x0akey_namespace=FastDFS\x0d\x0a本配置项解释:当上个参数设定为1时,在FastDHT中的命名空间\x0d\x0akeep_alive=1\x0d\x0a本配置项解释:长连接配置选项,如果为0则为短连接1为长连接\x0d\x0a#include/usr/local/fdht/conf/fdht_servers.conf\x0d\x0a本配置项解释:可以通过#includefilename方式来加载FastDHTservers的配置\x0d\x0a【3.5】\x0d\x0a===========================总体启动流程======================================\x0d\x0a\x0d\x0a启动tracker/usr/local/fdfs/bin/fdfs_trackerd/usr/local/fdfs/conf/tracker.conf\x0d\x0a停止tracker/usr/local/fdfs/bin/stop.sh/usr/local/fdfs/conf/tracker.conf\x0d\x0a启动storage/usr/local/fdfs/bin/fdfs_storaged/usr/local/fdfs/conf/storage.conf\x0d\x0a停止storage/usr/local/fdfs/bin/stop.sh/usr/local/fdfs/conf/storage.conf\x0d\x0a\x0d\x0a启动nginx/关于linux shc的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 用shc来保护您的Linux脚本文件 (linux shc)