从CentOS到Rocky Linux:系统迁移、LVM扩容与安全加固实战指南
2026/9/15 16:58:29 网站建设 项目流程

1. 为什么是Rocky Linux:CentOS时代的落幕与继承者登场

如果你在2020年底之前问任何一个运维老手“生产环境用什么发行版”,十有八九会得到同一个答案:CentOS。那时候的CentOS 7和CentOS 8几乎就是“免费版RHEL”的代名词,稳定性、兼容性、社区生态都无可挑剔。但2020年12月,红帽官方宣布CentOS项目将停止维护,CentOS 8的维护周期从原定的2029年直接缩短到2021年底,CentOS 7也在2024年6月30日正式走向生命周期终点。这一刀切下去,等于把全球无数企业的生产服务器推进了一个必须尽快做选择的岔路口。

当时市面上冒出了好几个“接棒”选手,比如AlmaLinux、Rocky Linux和Oracle Linux。但如果说谁最能还原CentOS时期的使用体验,Rocky Linux几乎是不二之选。原因很简单:Rocky Linux的创始人Gregory Kurtzer就是CentOS的联合创始人之一,他做Rocky Linux的初衷就是“让CentOS的灵魂继续活下去”——完全基于RHEL源代码构建,二进制兼容性有保障,迁移成本低到惊人。对于手上有一批CentOS的老机器、又不想因为发行版切换而重写脚本和服务的团队来说,Rocky Linux是迁移路径最平滑、心理负担最小的选择。

再补充一点,Rocky Linux遵循RHEL的发布节奏,每个大版本支持10年,这对企业来说意味着“部署一次、维护十年”的确定性。相比那种滚动更新或者三五年就不得不再来一次大迁移的发行版,Rocky Linux在精神上与CentOS时代的“稳字当头”是一脉相承的。

这篇文章面向的读者很明确:正在用CentOS、被维护终止逼着做迁移的运维人员,以及想直接从Rocky Linux入门Linux、不想学一个“即将过时”的系统的零基础新手。我会从安装镜像下载一直讲到网络配置、软件部署、磁盘扩容、常见坑排查,把从CentOS到Rocky Linux这一步的完整路径走一遍,也把Linux使用的通用基本功揉碎在里面。

2. 从零部署:镜像获取、虚拟机安装与初始配置

2.1 如何正确下载Rocky Linux镜像

Rocky Linux的官方镜像下载地址是rockylinux.org,但国内访问官方源的速度可能不够理想。实操中我更推荐直接用清华镜像站或阿里云镜像站,速度快而且稳定。以清华镜像站为例,进入 mirrors.tuna.tsinghua.edu.cn/rocky/ 之后,找到对应版本的目录结构。

这里有一个新手特别容易看花眼的地方:目录里的isos文件夹下面有x86_64、aarch64等多个架构目录,而x86_64目录里又会有Boot.iso、Minimal.iso、DVD.iso、Everything.iso等好几个文件。如果只是想在虚拟机里体验或者做服务器基础环境,选Minimal.iso就够用,体积小、安装快、装完就是一个纯净的命令行系统;如果是要在物理机上做完整桌面环境,或者不想在安装后折腾网络源,直接下载DVD.iso,它自带大量常用软件包,离线也能装很多组件;Everything.iso则是包含几乎所有RHEL软件包的完整版本,一般不用碰。

Rocky Linux 9系列的Minimal.iso大概在2GB左右,DVD.iso在9GB以上,下载前注意磁盘空间。另外,下载完成后建议做一下校验,官网会提供CHECKSUM文件,用sha256sum命令核对一下镜像文件的哈希值。

2.2 VMware虚拟机安装Rocky Linux全过程

新建虚拟机时,操作系统类型选择“Red Hat Enterprise Linux 8.x/9.x”或对应的64位版本,Rocky Linux和RHEL的内核与硬件兼容性高度一致,VMware能自动识别并应用比较合适的配置。内存建议至少给2GB,硬盘建议给20GB以上——如果打算后续做桌面环境、装开发工具,30~40GB会更从容。

安装过程的几个关键节点我单独拿出来说:

第一,安装源。如果用的是Minimal.iso,安装程序会要求配置软件源,默认会走网络源,只要虚拟机网络能通,保持默认即可。如果网络环境受限,建议用DVD.iso做本地源,会省去很多麻烦。

第二,软件选择。Minimal安装模式下默认是一个最精简的核心环境,没有图形界面、没有额外工具链。如果想少走弯路,在Software Selection界面勾选“Server”(带基本管理工具),或者按需勾选Development Tools,后者会帮你把gcc、make等编译工具链一并装好,后面用源码编译安装软件时不用补装一堆依赖。

第三,磁盘分区。新手机器建议直接用默认的自动分区方案——LVM逻辑卷管理。这是目前Red Hat系发行版的标准做法,好处是以后想扩容、加分区都可以在线操作,不用拆机器。稍后我会专门用一节讲怎么利用LVM给根分区扩容,这是生产环境中非常高频的操作。

第四,Root密码与用户创建。安装界面会强制要求设置root密码,还会询问是否创建一个普通用户。建议直接创建一个有sudo权限的普通用户,这是Linux系统安全的第一道闸门。日常操作用普通用户登录,需要提权时再sudo或su切到root,能有效避免误操作把系统搞崩。

2.3 安装完成后的第一轮配置

安装完成重启进入系统之后,有几件事我建议立刻做,否则后面会踩不少坑。

第一件事,更新系统。刚装好的系统软件包版本可能不是最新的,用dnf update -y把系统内核、核心库和工具全部拉一遍。Rocky Linux的包管理器是dnf,和CentOS 8一样,CentOS 7用的yum命令在RHEL 8之后已经由dnf接管了,不过为了兼容习惯,dnf命令也可以直接用yum作为软链接调用。

第二件事,检查SELinux状态。SELinux是Red Hat系发行版内置的强制访问控制安全模块,它在CentOS时代就存在,很多新手怕它烦人,爱用sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config直接关掉。我的建议是安装和测试阶段可以临时用setenforce 0关掉,但生产环境还是尽量开启,遇到权限问题优先排查SELinux的布尔值和上下文,而不是无脑禁用。安全底线不能丢。

第三件事,配置好yum/dnf仓库。Rocky Linux安装后默认会启用BaseOS、AppStream和Extras三个仓库,这些源指向的是官方镜像。在国内环境下,建议直接换成阿里云或清华的镜像源,速度差距非常明显。具体做法是修改/etc/yum.repos.d/目录下的rocky.repo和rocky-extras.repo文件,把mirrorlist=baseurl=两行里的官方地址替换为https://mirrors.aliyun.com/rocky/或清华镜像对应的路径。

3. 网络配置实操:从静态IP到远程连接

3.1 为什么服务器必须用静态IP

虚拟机安装好之后,系统默认使用DHCP自动获取IP地址,这在家庭网络或测试环境里没问题,但如果是要做服务器、要做SSH远程管理、要跑数据库或Web服务,DHCP分配的IP地址是动态变化的,一旦重启路由或租约到期,IP可能就变了,到时候所有依赖这个IP的连接全断。生产环境中,给服务器配置固定IP是基本功。

Rocky Linux 9的网络配置方式和CentOS 7有本质区别——它默认使用NetworkManager管理网络连接,网络配置文件以NetworkManager的keyfile格式存放在/etc/NetworkManager/system-connections/目录下。网卡命名规则也变了,不再是eth0这种简洁名称,而是像ens160、enp0s3、eno1这类基于硬件位置信息生成的名称。

配置静态IP有两种主流方式:一种是传统做法,直接修改网卡配置文件;另一种是走NetworkManager命令行工具nmcli。我更推荐第二种,因为nmcli的语法清晰、不容易出错,而且改动即时生效,非常适合新手对照学习。

3.2 使用nmcli配置静态IP的完整步骤

先查看当前系统的网络接口名称和连接状态:

nmcli device status

假设网卡名是ens160,接下来用以下命令为它配置静态IP:

nmcli con mod ens160 ipv4.addresses 192.168.1.100/24 nmcli con mod ens160 ipv4.gateway 192.168.1.1 nmcli con mod ens160 ipv4.dns "223.5.5.5 114.114.114.114" nmcli con mod ens160 ipv4.method manual

第一行是把IP地址设置为192.168.1.100,子网掩码用CIDR格式的/24表示,也就是255.255.255.0。第二行设置网关地址为路由器的局域网IP。第三行配置DNS服务器,这里用的是阿里DNS和114DNS的组合,生产环境建议根据运营商或公司内部DNS来定。第四行把IP获取方式从自动改为手动。

配置完成后,执行nmcli con up ens160让配置生效,然后执行ip addr查看IP地址是否变更为预设值,再用ping -c 3 www.baidu.com验证网络是否通畅。如果ping不通域名但能ping通网关,多半是DNS没有配置正确;如果网关都ping不通,优先检查IP和掩码是否写错。

3.3 修改主机名与SSH远程管理

装完系统后,默认主机名是localhost.localdomain,需要在网络中识别服务器身份时很不方便。用以下命令修改为有意义的名称:

hostnamectl set-hostname rocky-server

然后编辑/etc/hosts,在127.0.0.1行的末尾加上新主机名,这样本机解析自己的名称时才不会报错。

SSH服务在Rocky Linux安装完成后默认是开启的,检查一下状态:

systemctl status sshd

如果有防火墙,需要放行22端口:

firewall-cmd --permanent --add-service=ssh firewall-cmd --reload

远程连接时,用MobaXterm或Xshell这类SSH工具,输入服务器的IP、用户名和密码即可登录。如果连接不上,先在本机执行ss -tlnp | grep sshd确认SSH服务在监听,用systemctl status firewalld查看防火墙状态,再用ping确认网络连通性——绝大多数连接失败的场景,都逃不过这“三步走”排查法。

4. Linux必备基础:常用命令、用户权限与文件系统

4.1 新手必会的Linux常用命令素养

从Winndows转过来的人最不适应的就是“没有图形界面怎么干活”这件事。其实Linux命令行的逻辑是:你告诉系统你要干什么,系统就去执行,一条命令就是一次精确的指令。我把最常用的命令分成几类,每一类都值得反复练:

文件操作类:ls(列出目录文件)、cd(切换目录)、pwd(显示当前路径)、cp(复制)、mv(移动/重命名)、rm(删除)、mkdir(创建目录)、touch(创建空文件)、find(查找文件)。其中的关键技巧是掌握通配符,比如cp *.log /backup/可以一次性复制所有后缀为.log的文件。

文本查看与处理类:cat(查看文件内容)、less(分页查看大文件)、grep(按关键词过滤内容)、head(看文件开头)、tail(看文件结尾,配合-f参数可以实时跟踪日志,这是排查线上问题最常用的命令)、awksed(文本处理工具,进阶必备)。

系统管理与状态查询类:ps(查看进程)、top(动态监控资源占用)、free -h(查看内存)、df -h(查看磁盘使用率)、du -sh(查看目录大小)、systemctl(管理服务)、ss -tlnp(查看端口监听情况)。

软件安装类:dnf install 包名dnf remove 包名dnf search 关键词rpm -qa(列出所有已安装的RPM包)。

压缩与解压类:.tar.gz文件用tar -zxvf 文件名解压、tar -zcvf 文件名.tar.gz 目录名压缩;.zip文件用unzip解压;.xz文件用tar -xJf解压。新手最容易犯的错误是解压.tar.gz文件时把参数拼错,这里有一个稳的口诀:tar -zxvf表示用gzip解压,tar -jxvf表示用bzip2解压,tar -Jxvf表示用xz解压,x代表解压,v代表显示过程,f必须放在参数最后指代文件名。

4.2 用户管理与文件权限体系

Linux是一个真正的多用户操作系统,权限设计是它的安全基石。首先要理解三个身份概念:文件所有者(Owner)、文件所属组(Group)和其他用户(Others)。用ls -l查看文件的详细属性时,第一列就是像-rw-r--r--这样的10个字符,第一个字符代表文件类型(-是普通文件,d是目录,l是符号链接),后面每三个字符一组,分别对应所有者、所属组、其他人的读(r)、写(w)、执行(x)权限。

用户管理的高频命令:

useradd alice # 创建用户 passwd alice # 设置用户密码 usermod -aG wheel alice # 把用户加入wheel组,获得sudo权限 sudo -i # 切换到root身份 su - alice # 切换到alice用户 userdel alice # 删除用户,加-r参数会同时删除家目录

在Red Hat系的发行版中,wheel组拥有sudo权限,CentOS 7时代很多新手忘记了这一步,导致创建的新用户无法提权,又切不回root,最后只能重启进单用户模式或者用live CD救场。这个坑我踩过,所以特别提醒:普通用户必须加入wheel组才能正常用sudo。

修改权限用chmod命令,有两种表达方式。数字法:r=4,w=2,x=1,合起来就是0~7的数字,比如754代表所有者可读写执行、所属组可读执行、其他人只读。符号法:chmod u+x 文件(给所有者加执行权限)、chmod o-w 文件(删掉其他人的写权限)。目录权限要特别注意:目录的x权限代表“能否进入该目录”,r权限代表“能否列出目录中的内容”,如果只有r没有x,你会发现ls能看到文件名但打不开文件,这个细节很容易让新手一脸懵。

4.3 理解systemd:从SysV到新时代的服务管理

Rocky Linux的服务管理完全由systemd接管,CentOS 7之后的Red Hat系版本都是如此。systemd把服务抽象成单元(Unit),用一条命令就能完成启动、停止、开机自启等操作:

systemctl start sshd # 启动服务 systemctl stop sshd # 停止服务 systemctl restart sshd # 重启服务 systemctl enable sshd # 设置开机自启 systemctl disable sshd # 取消开机自启 systemctl status sshd # 查看服务状态

每次修改了服务的配置文件,执行systemctl daemon-reload让服务加载新配置,这也是一个容易被忽略的步骤。

启动一个服务就像请了一位员工上班,systemd还会给这个员工记考勤:它有restart机制,服务异常退出时自动拉起;用journalctl可以查看日志:

journalctl -u sshd # 查看某个服务的日志 journalctl -f # 实时跟踪所有日志 journalctl --since today # 查看今天的日志

排查服务起不来的通用套路是:先systemctl status 服务名看有没有报错信息,再journalctl -u 服务名看日志的详细输出,90%的问题都能通过这两步定位。

5. 从入门到实干:软件安装、办公套件与开发环境搭建

5.1 三种软件安装方式与各自适用场景

Linux下安装软件的路径比Windows多样,理解这几种方式的区别,是Linux水平分水岭的一块重要试金石。

第一种,dnf包管理器。它是Red Hat系的“应用商店”,从官方仓库下载并安装软件,自动处理依赖关系。绝大多数软件都能通过这种方式安装,比如dnf install nginxdnf install python3。优点是无脑、省心、卸载干净;缺点是软件版本可能不是最新,受到的官方仓库更新节奏的限制。

第二种,RPM包直接安装。这种方式适合安装那种已经打包好但没有收录进官方仓库的软件,比如Oracle数据库、某些商业软件。使用方式为rpm -ivh 软件包.rpm,卸载用rpm -e 包名。注意:直接安装RPM包不会自动解决依赖,如果缺少依赖库,命令会报错告诉你具体缺什么,需要手动去装齐依赖,非常麻烦。

第三种,源码编译安装。下载源代码,依次执行./configuremakemake install。这种方式最灵活,可以自定义编译参数,但前提是系统里必须装好编译工具链dnf groupinstall "Development Tools"。这个组包会一次性把gcc、g++、make、autoconf等一整套工具装好,我建议新装系统后无论用不用得到,先给它装上是明智的。

另外还有一种很常见的场景:软件只发布二进制tar包,比如某些JDK版本和企业软件,解压即用,不需要安装。这种包通常会把这个目录的路径写入/etc/profile或用户目录下的.bashrc环境变量里,就能全局调用。

5.2 使用dnf安装LibreOffice办公套件

先回答一个实际问题:Rocky Linux能装WPS或LibreOffice办公套件吗?答案是能,但方式不太一样。WPS官方提供Linux版rpm包,下载安装即可;LibreOffice则可以直接通过dnf装。虽然从热词里看到有用户专门去找LibreOffice的Linux版安装包来解决办公需求,但实际上,在连好网络源的情况下,一句命令就够了:

dnf install libreoffice

这个命令会安装全套LibreOffice组件,包括Writer(文档)、Calc(表格)、Impress(演示文稿)等。如果只想安装其中的几个组件,可以精确指定,比如只装Writer和Calc:

dnf install libreoffice-writer libreoffice-calc

我实测在Rocky Linux 9上,dnf源里的LibreOffice版本是7.x系列,功能完整,打开大部分Office文档没有问题。对于一台从CentOS迁移过来的办公用Linux机器来说,这基本可以覆盖日常的文档、表格、PPT需求。装完直接输入libreofficesoffice启动,首次打开时可能需要导入一些字体,建议顺便执行dnf groupinstall fonts把中文字体也补上,否则打开含中文的文档容易显示成乱码或方块。

另外,如果实在习惯了WPS的交互体验,WPS官网有专门的Linux版本rpm下载,安装方式是:

rpm -ivh wps-office-*.rpm

需要注意的是,WPS依赖了一些第三方库,若安装报错缺少依赖,可以使用dnf install *依赖名*补齐,再把对应的字体文件放到/usr/share/fonts/下,执行fc-cache刷新字体缓存,中文显示就正常了。

5.3 在Rocky Linux上安装Python及多版本管理

Linux系统通常自带Python,但版本可能偏旧。在Rocky 9上,默认的Python是3.9系列,很多新项目需要Python 3.11甚至3.12的特性,这时不能直接去官网下载源码怼上去,因为系统自带的Python被yum/dnf工具链依赖,随便替换可能导致包管理器损坏。

正确的做法有多条路,这里分享我最常用的两种:

第一种,用dnf安装系统仓库内的Python版本:

dnf install python3-pip python3-devel

python3-pip是pip包管理器,python3-devel包含编译Python扩展模块所需的头文件,安装第三方包时经常会用到。

第二种,使用pyenv管理多版本Python。pyenv是Linux下管理Python多版本的经典工具,安装方式:

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

装完之后把pyenv的路径写入shell配置,然后就可以自由安装和管理多个Python版本:

pyenv install 3.11.9 pyenv global 3.11.9

这里提醒一点:在CentOS/Rocky系系统上编译安装新Python,必须提前装好编译依赖,否则会卡在缺少头文件这一环:

dnf groupinstall "Development Tools" dnf install zlib-devel bzip2-devel readline-devel sqlite-devel libffi-devel openssl-devel tk-devel

很多人在用pyenv安装Python时遇到ModuleNotFoundError: No module named '_ctypes',就是因为缺了libffi-devel。这类依赖问题,装好上面的包基本能一次过。

5.4 离线安装pnpm:无网络环境的软件部署方案

生产环境很多时候是内网隔离的,无法访问外部网络,这时装软件就得走离线流程。我以离线安装pnpm为例,把这个套路完整走一遍,以后遇到其他离线安装场景可以举一反三。

在能联网的开发机上,用corepack把pnpm做好离线准备,或者直接从npm源下载tgz包。实际操作中,最简单的方式是直接下载pnpm的二进制压缩包——pnpm官方提供了standalone格式的Linux二进制包。

假设已经把压缩包上传到了内网服务器的/opt目录,接下来按这个步骤操作:

mkdir -p /opt/pnpm tar -zxf pnpm-linux-x64.tar.gz -C /opt/pnpm ln -s /opt/pnpm/pnpm /usr/local/bin/pnpm

第二步解压静态二进制文件,第三步创建软链接,把pnpm命令挂到系统命令路径下。之后验证:

pnpm -v

输出版本号即代表安装成功。这个思路适用于所有提供静态二进制包或单文件发布的软件,比如许多Go语言编写的工具、部分国产软件,都是解压即用的模式。离线安装另一个重要技巧是提前准备好依赖,比如要用pnpm装某个项目的依赖,可以在联网环境执行pnpm install,然后把整个node_modules目录和pnpm-lock.yaml一并拷贝到内网机器,然后执行pnpm install --offline,就能完全离线完成依赖安装。

5.5 容器与虚拟化:在Rocky 9上部署KVM虚拟化平台

生产环境里经常需要一台宿主机跑多个隔离的虚拟机,KVM是Linux内核自带的虚拟化方案,性能和稳定性都很优秀,是替代商业虚拟化软件的可靠选项。在Rocky Linux 9上部署KVM,核心步骤如下。

安装虚拟化组件:

dnf module install virt

或安装完整的虚拟化宿主机组:

dnf groupinstall "Virtualization Host"

安装完成后,启动并设置自启:

systemctl start libvirtd systemctl enable libvirtd

检查CPU是否支持虚拟化:

grep -Eo '(vmx|svm)' /proc/cpuinfo

如果有输出就说明硬件虚拟化已开启。接下来创建虚拟机有两种常用方式:一是virt-manager图形化管理工具,适合不熟悉命令行的人;二是用virsh命令结合XML配置文件或virt-install命令行工具,适合批量部署。

用virt-install创建一台CentOS虚拟机(作为对比,在Rocky上再开一台CentOS是完全可行的,镜像可从CentOS官方Vault里拿):

virt-install \ --name centos-test \ --memory 2048 \ --vcpus 2 \ --disk size=20 \ --os-variant centos7 \ --network default \ --cdrom /opt/iso/CentOS-7-x86_64-Minimal-2009.iso

KVM部署最容易踩的三个坑:一是BIOS里没开虚拟机化功能,导致KVM模块加载失败;二是防火墙拦截了VNC端口,virt-manager图形界面连不上;三是SELinux的sVirt策略与目录权限冲突,虚拟机找不到磁盘镜像。排查思路分别是:确认/dev/kvm设备存在、在firewalld放行vnc服务或者tcp/5900-5910端口范围、把磁盘镜像目录的SELinux上下文设置为virt_image_t

6. 系统维护进阶:磁盘管理、扩容实战与安全加固

6.1 用LVM给根分区扩容的完整操作

热词里出现了“CentOS扩容”和“wsl linux删除文件后空间没释放”这类问题,说明磁盘空间管理是Linux用户的一个真实痛点。LVM(逻辑卷管理)是Red Hat系Linux默认的磁盘管理方案,它的核心价值在于“分区不再是物理上的死板划分,而是可以在逻辑层动态调整”。

CentOS/Rocky安装系统的自动分区默认就是LVM布局,物理卷(PV)→ 卷组(VG)→ 逻辑卷(LV)三层结构。虚拟机200GB磁盘快满了,扩容思路分两步。

第一步,在虚拟化层把磁盘调大。比如VMware里把磁盘从200GB扩到300GB,调完之后系统里还看不到新空间,因为这只是虚拟磁盘层面的扩大,物理卷还没感知。

第二步,在系统内部完成物理卷、卷组、逻辑卷和文件系统的扩展:

# 让系统识别新的磁盘空间 echo 1 > /sys/class/scsi_disk/0:0:0:0/device/rescan partprobe /dev/sda # 扩展物理卷到整个磁盘 pvresize /dev/sda2 # 查看卷组还有多少可用空间 vgdisplay # 把新增空间全部分配给根逻辑卷 lvextend -l +100%FREE /dev/mapper/rl-root # 扩展文件系统大小(XFS文件系统用xfs_growfs,ext4用resize2fs) xfs_growfs / # 验证扩容效果 df -h

一条条拆开解释一下:pvresize的作用是让物理卷识别到磁盘新增的空间,就像把仓库的墙往外移,仓库的“可使用面积”变大了;lvextend把卷组里可用的空间分配给根逻辑卷;xfs_growfs则让文件系统感知到逻辑卷的变化。这三步缺一不可,很多人只执行了lvextend却忘了最后一步xfs_growfs,结果df -h看到的还是老容量。

这种在线扩容量操作不用停服务、不用重启,在数据库磁盘吃紧的时候是救命级的操作。但反向操作(缩容)就麻烦很多,XFS文件系统不支持在线缩容,真需要缩容只能备份后重新分区。所以生产环境建议“宁大勿小”,反正LVM扩容方便,初期磁盘规划尽量留足余量,实在不够再加。

6.2 防火墙配置与安全加固要点

Rocky Linux默认启用了firewalld,它比CentOS 6时代的iptables更加易用,而且也能对流量进行精细控制。高频命令整理如下:

systemctl status firewalld # 查看防火墙状态 firewall-cmd --list-all # 查看当前规则 firewall-cmd --permanent --add-port=8080/tcp # 放行8080端口 firewall-cmd --permanent --remove-port=8080/tcp # 删除端口放行 firewall-cmd --permanent --add-service=http # 放行HTTP服务 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept' # 指定网段访问数据库端口 firewall-cmd --reload # 重新加载规则

注意一个规律:--permanent表示写入永久配置,但不会立即生效,必须执行firewall-cmd --reload才能让新规则生效。如果只执行不带--permanent的命令,规则会立即生效但重启后丢失。

安全加固层面,我从实际经验里挑几个性价比最高的动作:

  • 修改SSH默认端口。22端口每天会被全网扫描机器人光顾无数次,把SSH端口改成高位端口(如22222),能挡掉90%的自动扫描攻击。改法是编辑/etc/ssh/sshd_config,找到#Port 22,修改为Port 22222,然后systemctl restart sshd。注意:防火墙要同步放行新端口,并且确认当前SSH连接不会因为配置错误被断掉后再重启服务。
  • 禁止root直接SSH登录。编辑/etc/ssh/sshd_config,设置PermitRootLogin no,用普通用户登录后通过su或sudo提权。这一步等于把暴力破解的“最终奖励”去掉了,攻击者就算猜到密码也无法直接拿到root。
  • 配置密钥登录替代密码登录。用ssh-keygen -t rsa -b 4096生成密钥对,把公钥内容追加到服务器的~/.ssh/authorized_keys文件中,并在sshd_config里设置PasswordAuthentication no,这样即使密码泄露,没有私钥也登不进来。

6.3 忘记root密码的应急自救办法

关于系统管理,很多人迟早会碰上一个“完网都塌了”的时刻:root密码忘了。在物理机或虚拟机上,Red Hat系的系统提供了一种标准的破密码方式。

重启系统,在GRUB引导菜单出现时,按e进入编辑模式。找到以linux开头的那一行,定位到行尾,在ro附近追加rd.break参数,然后按Ctrl+X引导进入紧急shell。这一步让系统在接管根文件系统之前停下来,给你一个root身份的救援shell。

接下去的经典操作顺序:

mount -o remount,rw /sysroot chroot /sysroot passwd root touch /.autorelabel exit reboot

依次解释:mount -o remount,rw /sysroot是把原先只读挂载的根目录重新以读写方式挂载;chroot /sysroot是把当前shell切换到真正的根文件系统环境里;passwd root设置新密码;touch /.autorelabel是告诉SELinux在下次启动时重新给文件打标签,因为直接在救援环境修改系统文件,文件的SELinux上下文可能乱了;最后退出并重启,用新密码登录,完事。

提这个操作不是为了教大家怎样绕过密码权限,而是在发生密码管理事故时给自己留一条保底的逃生通道。安全底线在于:这台服务器必须是物理上你说了算的那台机器,只有在你自己能控制硬件的机器上,这个办法才成立。

6.4 解决WSL磁盘空间不释放:虚拟磁盘压缩经验

热词里有“wsl linux删除文件后空间没释放”,这是Windows Subsystem for Linux用户的通病。WSL2使用ext4文件系统存放在一个名为ext4.vhdx的虚拟磁盘文件里,删除文件时ext4会释放块,但虚拟磁盘文件不会自动缩小,导致在Windows里看这个文件越来越大。

标准的修复流程是这样的:在Windows里用 wsl --shutdown 关闭所有WSL实例,再以管理员身份打开PowerShell,执行:

diskpart select vdisk file="C:\Users\你的用户名\AppData\Local\Packages\...\LocalState\ext4.vhdx" attach vdisk readonly compact vdisk detach vdisk exit

这一步相当于手工对虚拟磁盘文件做了一次“压缩整理”,回收被删除文件占用的虚存空间。实测下来能把动辄200GB的ext4.vhdx压缩回四五十GB,效果非常显著。

虽然这个操作本身不复杂,但有两个注意事项:一是在执行压缩前务必备份ext4.vhdx文件,因为一旦磁盘操作出错,WSL里所有数据都会遭殃;二是如果你在WSL内部运行了数据库等持续写入的服务,压缩前要先停止这些服务并用sudo fstrim /手动触发一次文件系统的TRIM操作,否则回收效果会大打折扣。

7. 常见问题速查:Rocky/CentOS迁移与使用避坑

这两年在CentOS和Rocky之间来回迁移,以及日常用Rocky踩过的坑,整理成一张速查表,基本覆盖了高频疑难场景:

问题现象排查思路解决方案
Rocky/虚拟机SSH连不上先本地systemctl status sshd看服务;再看防火墙;最后ping网关确保ssh服务存活,firewalld放行ssh端口,IP和网关配置正确
配置静态IP后网络不通检查IP/网关是否处于同一网段,DNS是否错误nmcli con mod逐项检查,ip route show查看路由,配置完nmcli con up重新激活连接
dnf安装软件报“无法找到镜像”或网络超时确定是源的问题而非网络问题换国内镜像源,编辑/etc/yum.repos.d/rocky.repo中的baseurl
LibreOffice/WPS打开中文乱码系统没有中文字体dnf groupinstall fonts或把Windows的simsun等字体放到/usr/share/fonts/后执行fc-cache
安装Python源码包时报缺少_ctype或ssl模块系统没装对应的devel包dnf install libffi-devel openssl-devel zlib-devel
磁盘空间不足但删了文件空间没变WSL的vhdx不会自动收缩,需要compact按6.4节流程用diskpart压缩虚拟磁盘
编译软件时报Cannot find C compiler没有开发工具链dnf groupinstall "Development Tools"
扩容后df -h没有变化逻辑卷和文件系统没有同步扩展XFS执行xfs_growfs /,ext4执行resize2fs对应设备路径
sudo命令提示用户不在sudoers中用户不在wheel组usermod -aG wheel 用户名,切换新会话生效

这套速查表写的是最常见、最基础的问题,把它们逐个搞明白之后,大部分日常工作都能顺手完成。其实Linux的学习路径就是这样:一开始是背命令、查文档,用多了之后会发现遇到的坑就那些,解决一个少一个,积累到一定程度自然就“熟手”了。Rocky Linux作为CentOS的延续,能够让你把这套经验平滑过渡过来,同时它本身也在持续演进——比如内置了更新的内核、更强的SELinux策略、更精细的firewalld管理,这些都需要在实际操作中一点点体会。

我特别想分享的一点是,不要害怕在安装和配置过程中反复把系统搞坏。虚拟机的快照功能就是为此准备的,装系统之前打一个快照,折腾坏了就一键还原,哪怕重装也就十几分钟的事。真正的学习发生在“坏了→排查→修复”的循环里,多折腾几次,前面表格里的那些“解决方案”就不再是文字,而成了你自己的肌肉记忆。

最后留一个练习思路:在一台Rocky Linux虚拟机上,从配置静态IP开始,装上Python环境,用dnf部署一个LibreOffice,再用LVM把根分区扩大10GB,最后改掉SSH默认端口并开启密钥登录。把这串操作完整跑完,你的Linux系统管理基本功就已经入门了,而且是可以直接用到生产环境的那种。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询