Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux下创建可执行bin安装文件

Linux下创建可执行bin安装文件

作者头像
大江小浪
发布于 2018-07-24 08:55:46
发布于 2018-07-24 08:55:46
9.4K00
代码可运行
举报
文章被收录于专栏:小狼的世界小狼的世界
运行总次数:0
代码可运行

需求及应用场景

1、简化操作。一般的软件安装过程,如果想要精简步骤,我们一般会将需要在命令行中输入的命令写成一个脚本,同时将安装介质准备好。我们将脚本和安装介质上传到生产环境,然后通过执行脚本来完成安装。如果能够将这两个文件合并为一个可执行文件,那安装的过程就更简单明了。

2、代码保护。对于一段脚本,提供给用户使用,但是不希望用户看到脚本的内容,可以通过将脚本发布为.bin的形式。这样用户在环境中可以执行、安装,但是无法看到里面的内容,也无法修改,从而达到保护脚本内容的目的。

实现方法

1、本文以在Redhat系统中安装ftp命令为例说明,如何将安装脚本和安装介质整合成一个文件,简化操作。

首先,编写一个脚本,包含安装的命令。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/sh

echo "Hello World"
dir_installation=/root/create_bin
sed -n -e '1,/^exit 0$/!p' $0 > "${dir_installation}/ftp-0.17-54.el6.x86_64.rpm" 2>/dev/null
cd $dir_installation
rpm -ivh ftp-0.17-54.el6.x86_64.rpm
rm ftp-0.17-54.el6.x86_64.rpm

exit 0

注意,这个脚本的关键在于sed,他会把exit 0后面的内容提取出来,另存为rpm包,然后执行安装,安装完成后删掉rpm。

最后,我们用cat命令将脚本和安装包生成一个新的文件。

这时,如果用file命令查看install-rpm.bin文件,可以发现它的类型还是文本类型,用vim编辑器打开,还是可以看到脚本内容的,也可进行修改。

2、对于第二个隐藏代码内容的需求,有一款工具叫做 shc ,可以用它来将脚本编程二进制文件。

shc的用法比较简单,下载后make生成可执行文件,然后直接对脚本进行加密,会生成两个文件。一个以.x结尾,为可执行的二进制文件。另一个以.x.c结尾,为生成的中间c文件。shc还能指定可执行脚本的过期时间。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9b.tgz

tar xvfz shc-3.8.9b.tgz

cd shc-3.8.9b
make

./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

./shc -f install-rpm.bin

通过 shc 可以将脚本文件编译成二进制文件,隐藏了脚本的内容,对于一般的用户是没办法查看和修改的。当然,还是有办法可以再将二进制文件转换为纯文本的脚本的,具体的方法大家可以关注我的微信号获得。

本文为作者原创。

参考资料: 1、Linux .bin安装文件制作 2、dos2unix 3、linux下制作二进制bin 文件制做方法 4、shc 5、How to Encrypt Your Bash Shell Script on Linux Using SHC

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-10-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java面试之Linux常用命令
原作者:https://www.cnblogs.com/yjd_hycf_space/p/7730690.html
黄桂期
2018/07/25
6780
Linux下Shell加密-shc脚本加密
今天在LInux了接触到一个命令:“shc”,以前还真没遇到过,这个也不是内置的 ,不过挺有意思的 记录一下
pooky
2021/01/06
4.5K0
Shell脚本加密与解密
我们写的shell脚本里面通常会包含帐号密码等信息或者你不想让别人看到的信息,那么把写好的shell脚本进行简单的加密显得有些必要了。 常用的shell加密方法有两种,一种是通过gzexe加密,另一种是通过shc加密。 我们先给一个简单的脚本,然后用它来进行加密解密演示,脚本abc.sh内容如下 1 2 #!/bin/bash echo "hello world!" gzexe加密与解密shell脚本 (tips:绿色为输出内容) 1 2 3 4 5 6 7 8 9 bash abc.sh       
神无月
2018/07/13
14.5K0
【Python全栈100天学习笔记】Day35 Linux系统软件安装、Shell编程及配置服务工具
下面以MySQL为例,演示如何使用rpm安装软件。要安装MySQL需要先到MySQL官方网站下载对应的RPM文件,当然要选择和你使用的Linux系统对应的版本。MySQL现在是Oracle公司旗下的产品,在MySQL被收购后,MySQL的作者重新制作了一个MySQL的分支MariaDB,可以通过yum进行安装。
天道Vax的时间宝藏
2022/04/02
2800
【应急响应】Linux入侵排查思路
当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。
Bypass
2019/07/08
2.7K0
【应急响应】Linux入侵排查思路
CentOS6下rpm打包实战
最近的工作需要将以前编译安装的软件包打包成rpm包,这里将打包过程记录一下以备忘。 准备rpm打包环境 我这里用的操作系统是CentOS6.7,redhat系的其它发行版应该也类似。 安装rpm-build 1 sudo yum install -y gcc make rpm-build redhat-rpm-config vim lrzsz 创建必须的文件夹和文件 mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} echo '%_topdir %(
jeremyxu
2018/05/10
1.6K0
Linux 文件类型+目录结构+常用命令(二)
1、/- 根 每一个文件和目录从根目录开始。 只有root用户具有该目录下的写权限。请注意,/root是root用户的主目录,这与/.不一样
wuweixiang
2018/08/14
1.9K0
Linux 文件类型+目录结构+常用命令(二)
shell脚本中的一大段乱码内容是什么鬼?
曾经有段时间使用Blackduck扫描docker image,在扫描过程中发现一个奇怪的shell脚本,shell脚本中上半部份是一段shell脚本内容,下半部分是一大段的乱码,就很好奇,这段乱码是干啥用的呢?
金鹏
2023/10/15
6350
如何保护你的密码:应用侧数据库&redis密码加密实践
1. 应用密码安全定义 应用密码包含:数据库密码、redis密码、通讯密码、pin密钥等。 本文的目标是确保上述密码在应用中不以明文形式,而是以加密形式存在,并且加密机制要相对安全,不易破解。 2. 本文关注范围 由于pin密钥之类的是通过硬件加密机实现的,不在本文论述范围内,本文重点关注应用侧配置文件中的数据库密码、**redis密码、FTP/FTPS**密码等。 3. 现状描述 1、很多系统并没有对密码安全足够重视,密码依然以明文状态为主。 例如:(以下配图均为测试环境的模拟举例) 数据库密码明文写在配
FB客服
2023/04/26
2K0
如何保护你的密码:应用侧数据库&redis密码加密实践
kubernetes工作记录(1)——kubernetes1.7.4版集群的离线安装搭建过程记录
之前将近一个月的时间算是初步入门了kubernetes,现在对之前的学习工作进行整理记录,将所有的内容有机的串联起来。 对照网上已有的内容和自己过去的博客,整理shell脚本 安装包结构示意如下(
胡了了
2017/12/28
1.8K0
kubernetes工作记录(1)——kubernetes1.7.4版集群的离线安装搭建过程记录
Linux入门所必备的Linux命令和C语言基础
touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)
用户6754675
2020/04/27
1.3K0
Linux 源码包安装
SRPM 包,比 RPM 包多了一个“S”,是“Source”的首字母,所以 SRPM 可直译为“源代码形式的 RPM 包”。也就是说,SRPM 包中不再是经过编译的二进制文件,都是源代码文件。可以这样理解,SRPM 包是软件以源码形式发布后直接封装成 RPM 包的产物。
芯动大师
2023/11/14
4240
Linux 源码包安装
Linux基础 | shell脚本编译成二进制可执行文件
1、安装编译软件,编译后生成shc文件就是命令程序yum install glibc-devel gcc c++ -ycd /usr/srcwget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgztar xzf shc-3.8.9.tgzcd shc-3.8.9/make查看帮助手册[root@localhost shc-3.8.9]# ./shc -helpshc Version 3.8.9, Generic Script Compiler
凡人学运维
2022/06/10
4.5K0
如何构建自己的PHP静态可执行文件
static-php-cli 是一个用于构建静态编译的 PHP 二进制的工具,目前支持 Linux 和 macOS 系统。在本章节中,你将了解到如何使用 static-php-cli 构建独立的 php 程序。
Tinywan
2024/08/12
2620
如何构建自己的PHP静态可执行文件
shell脚本文件加密
生产上,有些场景下(例如一次性的归档数据等)可能需要在脚本里面声明账号密码之类的敏感信息。 可以使用python、valut等更强大的加密方法,但是对于一些临时性的工作,有时候有种杀鸡用牛刀的感觉。
保持热爱奔赴山海
2022/09/23
1.6K0
Centos6 安装python3 pip3 ipython3
因为是Centos6,前面安装3.7.x系列在SSL这块有些问题,考虑使用3.6.x系列看看。
Devops海洋的渔夫
2019/06/26
4K0
Centos6 安装python3 pip3 ipython3
使用LNMP搭建Zabbix并对接Elasticsearch
不然修改密码之后密码会过期,会提示让你重新设置密码 You must reset your password using ALTER USER statement before executing this statement/usr/local/mysql/bin/mysql -uroot -p #登录MySQLuse mysql #切换MySql数据库
没有故事的陈师傅
2019/07/28
7590
CentOS下对shell脚本加密的二种方法
 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_37757403/article/details/78114748
拓荒者
2019/07/01
1.5K0
Linux系统运维问题解决(一)
Q:挂载的目录进行卸载挂载繁忙,如:umount: /var: device is busy A:解决方法
全栈工程师修炼指南
2022/09/28
3K0
Linux系统运维问题解决(一)
Linux—软件管理
包名具体格式说明: bash(软件名称):软件名为bash 4(主版本号):重大改进 2(次版本号):某个子功能发生重大变化 46(修正号):修正了部分bug,调整了一点功能 28.el7(发布版本号):用于标识rpm包本身的发行号,还包含适应的操作系统 x86_64(硬件平台):表示包的适用的硬件平台
Alone-林
2022/12/09
4.2K0
Linux—软件管理
相关推荐
Java面试之Linux常用命令
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验