linux软件管理

内生安全

服务器、交换机、防火墙
30-50年
存在的必然性:内生安全问题,是系统固有的,不可避免的
突发性和偶然性:漏洞存在随机性,不确定性,他的出现
威胁的不确定性
认知的时空性:安全性随着事件、空间环境变化而变化
狭义和广义分类
狭义内生安全涉及非主观的副作用、脆弱性或自然失效等非期望功能;
广义内生安全还包括人为植入的隐匿功能(如后门、陷阱等未声明特性)
x86_64

基于不确定性增加系统攻击维度

信息收集:我要渗透一个win7 apache2
随机化配置:定期更换系统参数、通信端口、加密密钥
动态信任:根据用户行为和环境实时调整权限
移动目标防御:主动改变系统攻击面,使得漏洞利用路径难以持续生效

冗余和异构架构

微隔离技术:将系统拆分为功能独立的模块,单一模块受损时自动隔离,保障整体服务连续性。
异构冗余构造:部署不同架构的组件并行运行,通过“裁决机制”比对输出结果,屏蔽单点漏洞影响。
容灾设计:建立异地双活数据中心与多链路通信(如光纤+卫星),确保极端故障下核心功能降级运行。

内生安全能力融合

自我修复和自我学习:系统具备自动检测异常流量并且启动熔断的能力,通过红蓝对抗来进行持续学习
数据全周期防护
采集阶段最小化原则
存储阶段分布式加密
流转过程数字水印

软件管理

软件分类

源码包

​ 包含原始代码(C/C++),需要自己手动安装。

​ 常见格式:.tar.gz、.tar.bz2、.tar.xz

​ 需要最新版本、定制功能或特定编译选项时使用

封装包

特点:已编译为二进制文件,直接安装。

常见格式

​ RPM包:.rpm后缀;由(Red Hat/CentOS/Fedora manager)红帽(Red Hat)公司写好软件并打包

​ DEB包:.deb(Debian/Ubuntu)发行

rpm命令

RPM(Red Hat Package Manager)是 Linux 下用于管理 .rpm 格式软件包的基础工具,主要功能包括:

  • 安装/卸载软件包
  • 查询包信息及文件
  • 验证包完整性
  • 升级与降级
  • 构建 RPM 包

语法

rpm [选项] [子命令] [包名|文件|URL]

命令

1. 安装与卸载

命令 说明 示例
-i, --install 安装 RPM 包 rpm -ivh package.rpm
-U, --upgrade 升级(若未安装则执行安装) rpm -Uvh new-version.rpm
-F, --freshen 仅升级已安装的包 rpm -Fvh *.rpm
-e, --erase 卸载软件包 rpm -e package-name
--nodeps 忽略依赖强制操作 rpm -ivh --nodeps broken.rpm ⚠️
--force 强制覆盖文件/包 rpm -Uvh --force package.rpm ⚠️

常用组合

bash

rpm -ivh package.rpm        # 安装并显示进度(v: 详细输出, h: 显示进度条)
rpm -e --test package # 测试卸载(不实际执行)

2. 查询操作

命令 说明 示例
-q, --query 基础查询 rpm -q package
-qa 列出所有已安装包 `rpm -qa
-qi 显示包详细信息 rpm -qi nginx
-ql 列出包安装的文件 rpm -ql bash
-qc 列出配置文件 rpm -qc postgresql
-qd 列出文档文件 rpm -qd openssl
-qf <文件路径> 查询文件属于哪个包 rpm -qf /bin/ls
-q --scripts 查看包安装/卸载脚本 rpm -q --scripts httpd
-q --changelog 查看包更新日志 rpm -q --changelog kernel
-qp[ilc] 查询未安装的 RPM 文件 rpm -qpl package.rpm

3. 验证与签名检查

命令 说明 示例
-V, --verify 验证包文件是否被修改 rpm -V httpd
-K, --checksig 检查 RPM 签名 rpm -K package.rpm
--import <key> 导入 GPG 公钥 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

验证输出解读

bash

S.5....T. c /etc/nginx/nginx.conf
字符 含义 字符 含义
S 文件大小改变 M 权限改变
5 MD5 校验和改变 U 属主改变
T 修改时间改变 G 属组改变
D 设备文件改变 L 路径变为符号链接
? 不可读文件

4. 数据库维护

命令 说明 示例
--rebuilddb 重建 RPM 数据库(损坏时修复) sudo rpm --rebuilddb
--initdb 初始化新数据库(无数据库时) sudo rpm --initdb
-vv 调试模式输出详细信息 rpm -vv -q bash
rpm -ivh packet.rpm		# 安装
rpm -q packet # 查看是否安装
rpm -e packet # 卸载
yum install package # 自动解决依赖
rpm -ivh --nodeps oracle-instantclient.rpm # 安装本地 RPM 并忽略依赖
rpm -ql httpd # 列出所有文件
rpm -qc httpd # 仅显示配置文件

rpm -Vf /bin/bash /sbin/init /usr/sbin/sshd # 校验系统关键包是否被篡改

rpm -Uvh --oldpackage python3-3.6.8.rpm # 强制降级软件包

YUM

核心功能:

  1. 自动化依赖解决: 这是 yum 最大的优势。当你安装一个软件包时,如果它需要其他包(依赖包)才能运行,yum 会自动查找、下载并安装这些依赖包,无需用户手动处理。
  2. 软件仓库管理: yum 从一个或多个配置好的软件仓库中获取软件包及其元数据(信息)。仓库是包含大量 RPM 包和相关信息的服务器或目录。配置文件通常位于 /etc/yum.repos.d/ 目录下,以 .repo 结尾。
  3. 查询: 搜索仓库中的软件包,查看软件包信息(描述、版本、大小、依赖等),列出已安装或可用的包。
  4. 安装: 从仓库下载并安装指定的软件包及其依赖。
  5. 更新: 将已安装的软件包更新到仓库中可用的最新版本。也可以更新整个系统。
  6. 卸载: 移除已安装的软件包(默认会尝试移除不再需要的依赖包)。
组件 路径 作用
主配置文件 /etc/yum.conf 全局配置(缓存目录、日志等)
仓库配置文件 /etc/yum.repos.d/*.repo 定义软件仓库源(URL、GPG 校验等)
RPM 数据库 /var/lib/rpm 存储已安装软件包及依赖关系
缓存目录 /var/cache/yum 存储下载的元数据和 RPM 包

常用命令

1. 查询操作

命令 说明 示例
yum search <关键词> 搜索软件包 yum search nginx
yum list [选项] 列出包(installed/available/updates `yum list installed
yum info <包名> 显示包详细信息(版本、依赖等) yum info httpd
yum provides <文件路径> 查找哪个包提供指定文件 yum provides /etc/nginx/nginx.conf
yum deplist <包名> 列出包的依赖树 yum deplist nginx

2. 安装与更新

命令 说明 示例
yum install <包名> 安装包(自动处理依赖) sudo yum install vim
yum localinstall <rpm文件> 安装本地 RPM 文件并解决依赖 sudo yum localinstall ~/package.rpm
yum update [包名] 更新指定包(不指定则更新所有) sudo yum update kernel
yum check-update 检查可更新包(不执行更新) yum check-update

3. 卸载与清理

命令 说明 示例
yum remove <包名> 卸载包(尝试移除无用依赖) sudo yum remove telnet
yum autoremove 移除未被依赖的孤立包 sudo yum autoremove
yum clean all 清除所有缓存(元数据 + RPM 包) sudo yum clean all

4. 仓库与组管理

命令 说明 示例
yum repolist [all] 列出启用/所有仓库 yum repolist enabled
yum group list 查看软件包组列表 yum group list
yum group install "组名" 安装整个软件组 sudo yum groupinstall "Development Tools"
yum group remove "组名" 卸载软件组 sudo yum groupremove "GNOME Desktop"

5. 高级操作

命令 说明 示例
yum history 查看操作历史 yum history
yum history undo <ID> 撤销指定历史操作 sudo yum history undo 11
yum downgrade <包名> 降级到旧版本 sudo yum downgrade openssl-1.0.2k
yum --downloadonly install <包> 仅下载不安装 sudo yum install --downloadonly nginx
yum provides [命令]		# 搜索与相关的文件

yum info package_name # 显示软件包详细信息

yum install package_name # 安装软件包

yum update package_name # 更新单个软件包

yum update # 更新所有可更新的软件包

yum remove package_name # 卸载软件包

yum list installed # 列出已安装的软件包

yum list available # 列出所有可用的软件包

实验:vim的删除与安装

删除

首先查看以安装的vim包

# -q 表示查询,-a 表示所有
[root@wickt 桌面]# rpm -qa | grep vim
vim-filesystem-8.0.1763-13.el8.noarch
vim-common-8.0.1763-13.el8.x86_64
vim-minimal-8.0.1763-13.el8.x86_64
vim-enhanced-8.0.1763-13.el8.x86_64

删除vim

yum remove vim

image-20250805174025541

查看是否删除

[root@wickt 桌面]# vim
bash: vim: 未找到命令...
文件搜索失败: Cannot update read-only repo

image-20250805174113338

安装

yum install vim

image-20250805174241765

Author: wickt42
Link: http://example.com/2025/08/05/linux软件管理/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.