CentOS 搬 Ubuntu 24.04:yum 变 apt、防火墙、SELinux、root 全差异避坑

文章目录

CentOS 迁移 Ubuntu 24.04 使用教程

面向:习惯 CentOS 运维人员切换到 Ubuntu24.04

总体总结

CentOS 属于 RHEL 系,使用 yum/dnf + rpm 包管理,默认开启 firewalld 防火墙与 SELinux,root 默认可直接登录;软件版本保守,多用于传统企业业务。Ubuntu 属于 Debian 系,使用 apt + deb 包管理,默认使用 ufw 防火墙,SELinux 默认关闭,root 默认无密码,管理操作依靠普通用户sudo 提权;软件版本更新更快,更适合开发、容器、云主机环境。两套系统都使用 systemd 管理服务,systemctl 命令语法通用;迁移最大工作量:包管理命令、防火墙命令、软件 / 服务名称、配置文件路径。

CentOS7 / CentOS Stream9 VS Ubuntu24.04 总对比表

表格

对比项 CentOS7 CentOS Stream9 Ubuntu 24.04 LTS
发行体系 RHEL 系 RHEL 系 Debian 系
包管理器 yum dnf apt
软件包格式 .rpm .rpm .deb
软件源存放 /etc/yum.repos.d/*.repo /etc/yum.repos.d/*.repo /etc/apt/sources.list 、/etc/apt/sources.list.d/*.list
防火墙 firewalld firewalld ufw(默认未启用)
SELinux 默认开启 默认开启 默认关闭
root 账号策略 安装可直接设置 root 密码,可直接登录 root 安装可直接设置 root 密码,可直接登录 root root 默认无密码,禁止直接登录;管理使用sudo 提权
服务管理工具 systemd systemd systemd
MySQL 服务名 mysqld mysqld mysql
MySQL 主配置文件 /etc/my.cnf /etc/my.cnf /etc/mysql/mysql.conf.d/mysqld.cnf
软件版本特点 稳定保守,版本偏低 滚动更新,介于稳定与新特性之间 版本较新,LTS 长期支持 5 年
典型适用场景 传统企业生产业务 预发布、测试环境 开发、云服务器、Docker/K8s

逐项详细讲解:区别说明 + Ubuntu 实操案例命令

包管理器不同

区别说明 CentOS 使用 yum/dnf 管理 rpm 包;Ubuntu 使用 apt 管理 deb 包。

重点:apt update 仅刷新软件源索引,不会升级软件 ;apt upgrade 执行升级。CentOS 的 yum update 同时刷新源并升级软件。

Ubuntu 案例命令:

bash 复制代码
# 更新软件源缓存
sudo apt update

# 升级所有已安装软件;-y 安装时自动确认
sudo apt upgrade -y

# 安装nginx、mysql-server;-y 安装时自动确认
sudo apt install nginx mysql-server -y

# 卸载软件(保留配置文件);-y 安装时自动确认
sudo apt remove nginx -y

# 彻底卸载,删除配置文件;-y 安装时自动确认
sudo apt purge nginx -y

# 搜索软件包
apt search redis

# 查看已安装deb包;-l 以列表形式展示
dpkg -l

# 本地安装deb包;-i 安装指定的 deb 文件
sudo dpkg -i xxx.deb

防火墙工具不同

区别说明 CentOS 使用 firewalld;Ubuntu 使用轻量简单的 ufw,默认不开启。

Ubuntu 案例命令:

bash 复制代码
# 安装ufw;-y 安装时自动确认
sudo apt install ufw -y

# 查看ufw状态
sudo ufw status

# 开启防火墙
sudo ufw enable

# 放行3306端口tcp;/tcp 指定 TCP 协议
sudo ufw allow 3306/tcp

# 放行80端口;/tcp 指定 TCP 协议
sudo ufw allow 80/tcp

# 删除端口放行规则
sudo ufw delete allow 3306/tcp

# 关闭防火墙
sudo ufw disable

SELinux 安全模块

区别说明 CentOS 默认开启 SELinux,经常拦截网站、数据库访问;Ubuntu24.04 默认关闭,绝大多数场景无需考虑 SELinux。

Ubuntu 案例命令:

bash 复制代码
# 如需手动安装selinux工具(极少场景才需要);-y 安装时自动确认
sudo apt install selinux-utils -y

# 查看selinux状态,Ubuntu默认输出disabled
getenforce

root 账号权限策略

区别说明 CentOS 安装系统可直接设置 root 密码,可直接登录 root;Ubuntu root 默认无密码,禁止直接登录,管理员操作全部用sudo 。

Ubuntu 案例命令:

bash 复制代码
# sudo执行root权限命令
sudo ls /root

# 设置root密码,启用root账号
sudo passwd root

# 切换root用户
su - root

# 查看当前登录用户
whoami

服务名称、配置文件路径差异

区别说明 systemctl start/stop/restart/enable 语法三个系统完全一样,但服务名称、配置文件路径经常不一样,例如 mysql:CentOS 叫 mysqld,Ubuntu 叫 mysql。

Ubuntu 案例命令:

bash 复制代码
# 查看mysql服务状态
sudo systemctl status mysql

# 重启mysql服务
sudo systemctl restart mysql

# 设置mysql开机自启
sudo systemctl enable mysql

# 停止nginx服务
sudo systemctl stop nginx

# 列出所有开机自启服务;--type=service 仅筛选服务类型
systemctl list-unit-files --type=service

软件源配置文件

区别说明 CentOS 源是 /etc/yum.repos.d/ 下多个 repo 文件;Ubuntu 主源文件 /etc/apt/sources.list ,第三方源放在 sources.list.d 目录。

Ubuntu 案例命令:

bash 复制代码
# 查看系统软件源
cat /etc/apt/sources.list

# 编辑源文件
sudo vim /etc/apt/sources.list

# 添加第三方源文件
sudo tee /etc/apt/sources.list.d/mysql.list

# 添加源后刷新索引
sudo apt update

系统信息查看

区别说明 cat /etc/os-release 三个系统通用;Ubuntu 额外自带lsb_release 工具快速查看系统版本。

Ubuntu 案例命令:

bash 复制代码
# 通用命令,CentOS/Ubuntu都支持
cat /etc/os-release

# Ubuntu专属查看系统版本;-a 显示全部信息
lsb_release -a

# 查看内核版本(通用);-r 显示内核发行号
uname -r

日志查看

区别说明 日志都存放在 /var/log 目录,journalctl 命令通用;部分服务日志路径名称有差异。

Ubuntu 案例命令:

bash 复制代码
# 实时查看mysql错误日志;-f 持续跟踪最新输出
tail -f /var/log/mysql/error.log

# 实时跟踪mysql服务日志(journalctl跨系统通用);-u 指定服务单元,-f 跟踪
journalctl -u mysql -f

# 实时查看系统全部日志;-f 持续跟踪
journalctl -f

IP 地址管理区别

区别总述

  • CentOS7:默认使用 NetworkManager (nmcli ),也可使用传统 /etc/sysconfig/network-scripts/ifcfg-eth0 网卡配置文件。
  • CentOS Stream9:废弃 network-scripts,仅推荐 NetworkManager + nmcli。
  • Ubuntu24.04:默认使用 Netplan,底层后端可以是 networkd 或 NetworkManager;不再使用 /etc/sysconfig/network-scripts 。配置文件是 yaml 格式。

共同点:ip addr 、ip route 命令三个系统完全通用。核心差异:CentOS 习惯 ifcfg 文件/nmcli;Ubuntu 用 Netplan yaml。

对比表格

表格

对比项 CentOS7 CentOS Stream9 Ubuntu24.04 LTS
网络管理工具 NetworkManager + network-scripts NetworkManager Netplan(默认后端 networkd)
网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-xxx 无 ifcfg 文件,nmcli 管理 /etc/netplan/*.yaml
配置语法 shell 键值对 nmcli 命令 YAML(严格缩进!缩进错直接报错)
查看网卡通用命令 ip addr ip addr ip addr
重启网络服务 systemctl restart network / nmcli nmcli netplan apply

CentOS:网卡配置写在独立 ifcfg 文件,或者 nmcli 命令持久化;Ubuntu:Netplan yaml 文件统一管理网卡,修改 yaml 后执行 netplan apply 生效,无需重启整个网络服务,yaml 缩进极其严格,不能用 tab,只能空格。

Ubuntu 案例命令:

bash 复制代码
# 1. 查看网卡信息(跨系统通用)
ip addr

# 2. 查看netplan配置文件名称
ls /etc/netplan/

# 3. 编辑netplan配置文件,文件名一般是 00-installer-config.yaml
sudo vim /etc/netplan/00-installer-config.yaml

静态 IP yaml 示例(复制参考,注意缩进,必须空格,禁止 tab)

bash 复制代码
network:
  ethernets:
    ens33:
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8,114.114.114.114]
  version: 2

# 4. 修改配置后,应用网络配置(推荐,不中断连接)
sudo netplan apply

# 5. 查看路由(通用)
ip route

# 6. 临时添加路由(临时,重启失效,跨系统通用);via 指定下一跳网关
sudo ip route add 10.0.0.0/24 via 192.168.1.1

# 7. 临时关闭网卡
sudo ip link set ens33 down

# 8. 临时启用网卡
sudo ip link set ens33 up

迁移坑点

  1. Netplan yaml 缩进必须空格,不能 Tab,缩进错误直接配置失败,新手高频踩坑。
  2. CentOS 习惯 systemctl restart network ,Ubuntu没有 network 服务 ,修改网卡用 netplan apply 。
  3. Ubuntu24.04 默认不自带 ifconfig ,需要手动安装 net-tools

总结

通用网络命令 ip addr 、ip route CentOS 和 Ubuntu 通用;CentOS 静态 IP:ifcfg 文件/nmcli;Ubuntu 静态 IP:Netplan YAML 配置文件 + netplan apply 生效。

可选实操作业

  1. 使用 ip addr 查看本机网卡名称
  2. 编辑 netplan yaml 配置静态 IP,执行 netplan apply 生效
  3. 安装 net-tools,使用 ifconfig 查看网卡信息

迁移避坑小结

  1. systemctl 命令语法不变,迁移重点修改服务名
  2. 防火墙:firewall-cmd → ufw
  3. Ubuntu 无需处理 SELinux,少一大类权限故障
  4. 包管理:yum/dnf → apt;rpm → dpkg
  5. 养成 sudo 习惯,不要直接使用 root 登录
相关推荐
逐流人2 小时前
Redis内存数据库:从数据类型到集群部署
linux·运维·数据库·redis·缓存·云计算
。2 小时前
【无标题】
linux·服务器·负载均衡·lvs
weixin_416667962 小时前
linux ping命令详解
linux·运维·php
硅基手札2 小时前
【Linux 内核专栏 17】进程间通信 IPC(上)— 管道·信号·System V IPC·mmap·文件锁
linux·运维·服务器·stm32·单片机·mcu
小能喵2 小时前
kismet -h 帮助信息 中文版
linux·服务器·网络
AR-26710-2 小时前
Linux Day21——systemctl操作
linux·运维
额额额对了3 小时前
Linux 驱动开发:基于 platform 总线 + misc 设备的 DS18B20 单总线温度驱动
linux·c语言·开发语言·驱动开发·嵌入式硬件
Android系统攻城狮3 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_activate调用流程与实战(七十九)
linux·运维·服务器·gstreamer音视频·gstreamer音视频进阶
Escalating_xu4 小时前
【Linux 网络编程】网络命令加餐:用 ping、netstat、watch 和 pidof 排查服务问题
linux·运维·网络