CentOS 7,作为基于 Red Hat Enterprise Linux (RHEL) 源代码编译而成的社区企业级操作系统,以其无与伦比的稳定性、安全性和长期支持,在全球范围内被广泛部署于服务器环境,它不仅是学习 Linux 系统管理的绝佳平台,更是构建生产环境服务的可靠基石,本教材旨在为初学者和系统管理员提供一份清晰、结构化的 CentOS 7 核心知识指南,涵盖从基础命令到关键服务配置的方方面面,帮助您快速上手并掌握这一强大的操作系统。
系统基础与常用命令
任何与 CentOS 7 的交互都始于命令行界面(CLI),熟练掌握基础命令是高效管理系统的第一步,Linux 的文件系统是一个树状结构,一切皆文件,从根目录 开始,理解并导航这个结构至关重要。
以下是一些最核心的日常操作命令:
| 命令 | 功能描述 | 示例 |
|---|---|---|
pwd |
Print Working Directory,显示当前所在目录的完整路径。 | pwd |
ls |
List,列出目录内容,常用 -l(长格式)、-a(显示隐藏文件)。 |
ls -la |
cd |
Change Directory,切换目录。 | cd /etc |
mkdir |
Make Directory,创建新目录。 | mkdir project_alpha |
touch |
创建空文件或更新文件时间戳。 | touch report.txt |
cp |
Copy,复制文件或目录。-r 选项用于递归复制目录。 |
cp source.txt destination.txt |
mv |
Move,移动或重命名文件/目录。 | mv old_name.txt new_name.txt |
rm |
Remove,删除文件或目录。-r 用于删除目录,-f 强制删除。 |
rm -rf unwanted_folder |
cat |
Concatenate,查看文件全部内容,适合小文件。 | cat /etc/centos-release |
less |
分页查看文件内容,可上下滚动,适合大文件。 | less /var/log/messages |
理解关键目录的作用也同样重要:/etc 存放系统配置文件,/var 存放经常变化的文件如日志,/home 是普通用户的家目录,而 /usr 则存放用户安装的软件和共享资源。
用户与权限管理
多用户环境是 Linux 的核心特性之一,因此精细的用户和权限管理是保障系统安全的基础,每个文件和目录都有三组权限:所有者、所属组和其他人,每组权限又分为读、写、执行,分别用 r、w、x 表示,也可以用数字 4、2、1 来表示。
| 命令 | 功能描述 | 示例 |
|---|---|---|
useradd |
创建新用户账户。 | useradd testuser |
passwd |
为用户设置或修改密码。 | passwd testuser |
userdel |
删除用户账户。-r 选项会同时删除其家目录。 |
userdel -r testuser |
chmod |
Change Mode,修改文件或目录的权限。 | chmod 755 script.sh |
chown |
Change Owner,修改文件或目录的所有者和所属组。 | chown testuser:users file.txt |
chmod 755 script.sh 的含义是:所有者拥有读、写、执行权限(4+2+1=7),所属组和其他人拥有读和执行权限(4+1=5),而 chown testuser:users file.txt 则将 file.txt 的所有者改为 testuser,所属组改为 users。
软件包管理:YUM 的力量
CentOS 7 使用 YUM(Yellowdog Updater Modified)作为其核心的软件包管理工具,YUM 能够自动处理软件包之间的依赖关系,从配置好的软件仓库中下载、安装、更新和删除软件,极大地简化了系统维护工作。
- 安装软件:
yum install <package_name>yum install httpd会安装 Apache Web 服务器及其所有依赖。
- 更新所有软件包:
yum update定期执行此命令以保持系统安全和最新。
- 删除软件:
yum remove <package_name>yum remove httpd会卸载 Apache,但通常会保留配置文件。
- 搜索软件:
yum search <keyword>当不确定软件包的确切名称时,此命令非常有用。
为了获取更丰富的软件源,通常会启用 EPEL(Extra Packages for Enterprise Linux)仓库,可以通过 yum install epel-release 命令轻松安装。
网络与服务配置
服务器离不开网络,CentOS 7 提供了多种工具来管理网络连接和服务。
网络配置:传统的 ifconfig 命令已被 ip 命令取代,使用 ip addr show 或简写 ip a 可以查看网络接口信息,对于初学者,nmtui(NetworkManager Text User Interface)提供了一个直观的图形化文本界面来配置 IP 地址、网关和 DNS,高级用户则可以直接编辑 /etc/sysconfig/network-scripts/ 目录下的 ifcfg-<interface_name> 文件进行静态配置。
服务管理:CentOS 7 采用 systemd 作为初始化系统和服务管理器,取代了以往的 SysVinit。systemctl 是与 systemd 交互的主要命令。
| 命令 | 功能描述 |
|---|---|
systemctl start <service> |
立即启动一个服务。 |
systemctl stop <service> |
立即停止一个服务。 |
systemctl restart <service> |
重启一个服务。 |
systemctl status <service> |
查看一个服务的运行状态。 |
systemctl enable <service> |
设置服务为开机自启。 |
systemctl disable <service> |
禁止服务开机自启。 |
要启动并设置 Apache (httpd) 开机自启,应执行:systemctl start httpd 和 systemctl enable httpd。
防火墙基础:Firewalld
CentOS 7 默认使用 firewalld 作为防火墙管理工具,它替代了 iptables,并引入了“区域”和“服务”的概念,使得防火墙规则的配置更加动态和灵活。firewall-cmd 是其命令行管理工具。
- 查看当前区域和规则:
firewall-cmd --list-all - 临时开放一个端口(重启后失效):
firewall-cmd --add-port=8080/tcp - 永久开放一个服务(如 HTTP):
firewall-cmd --add-service=http --permanent - 重新加载防火墙配置(使永久规则生效):
firewall-cmd --reload
firewalld 的区域(如 public, trusted, dmz)定义了不同级别的信任策略,每个网络接口可以被分配到一个区域,从而应用该区域的所有规则。
相关问答FAQs
问题1:如何将一个普通用户添加到 wheel 组,使其能够使用 sudo 命令?
解答:
在 CentOS 7 中,wheel 组是默认拥有 sudo 权限的用户组,要将一个名为 john 的普通用户添加到该组,请按照以下步骤操作:
-
使用
root用户或已有sudo权限的用户执行以下命令:usermod -aG wheel john
usermod是修改用户账户的命令。-a选项表示“追加”(append),即将用户添加到 supplementary 组,而不是从其他组中移除。-G wheel指定了要追加到的目标组是wheel。john是目标用户名。
-
执行完毕后,用户
john需要注销当前会话并重新登录,组权限的变更才能生效,之后,john就可以通过在命令前加上sudo来执行管理员权限的操作了。
问题2:CentOS 7 和 CentOS Stream 有什么核心区别?我应该如何选择?
解答: CentOS 7 和 CentOS Stream 的核心区别在于它们与 RHEL(Red Hat Enterprise Linux)的关系和发布模式。
- CentOS 7:属于 RHEL 7 的“下游重建版”,Red Hat 发布 RHEL 7 的更新后,CentOS 社区会跟进源代码,去除 Red Hat 商标,然后编译发布 CentOS 7 的更新,它的主要优势是稳定和可预测,与 RHEL 7 的行为完全一致,非常适合追求极致稳定性的生产环境。
- CentOS Stream:属于 RHEL 的“上游开发版”,它处于 Fedora 和 RHEL 之间,新功能和补丁会先进入 CentOS Stream,经过测试和稳定后再发布到下一个 RHEL 的次要版本,这意味着它的更新比 RHEL 更频繁,可以更早体验到新特性,但稳定性相对 RHEL 略低。
如何选择:
- 如果您的目标是部署一个要求高度稳定、长期无需重大变动的生产服务器,或者您正在学习与 RHEL 完全一致的系统管理知识,请选择 CentOS 7(或后续的 CentOS Linux 8)。
- 如果您是开发者,希望提前测试和适配 RHEL 的未来功能,或者您所在的生态环境需要紧跟 RHEL 的开发步伐,请选择 CentOS Stream,它更接近一个“滚动发布”的体验。