补充日志之-配置文件解析指南(Centos7)
1.CentOS 7 配置文件解析指南
基本介绍
CentOS 7 作为 Red Hat Enterprise Linux (RHEL) 7 的社区版本,其配置文件体系既继承了 Red Hat 系列的严谨架构,又因引入 systemd
初始化系统、NetworkManager
网络管理工具等新组件,在配置文件结构上与 CentOS 6 等早期版本存在显著差异。本文将从系统核心、服务管理、网络配置、软件包管理、用户权限、安全策略及日志系统七个维度,系统介绍 CentOS 7 的关键配置文件。
配置文件基础规律
在 Linux/Unix 系统中,配置文件的存储位置和命名格式(尤其是后缀)通常遵循一定规律,主要由功能定位和历史习惯决定。以下按系统层级和应用类型分类说明:
一、系统级核心配置文件(无固定后缀)
系统级核心配置文件多为无后缀纯文本文件,存放于 /etc/
及其子目录,用于控制操作系统核心功能(如用户管理、权限控制、网络基础等)。
典型位置:/etc/
及子目录(如 /etc/sysconfig/
、/etc/network/
等)
示例:
/etc/passwd
:用户账户信息/etc/group
:用户组信息/etc/sudoers
:sudo 权限配置(特殊文件)/etc/fstab
:文件系统挂载配置/etc/hosts
:本地域名解析表
二、服务 / 程序配置文件(多以 .conf
结尾)
大多数应用程序和服务的配置文件以 .conf
为后缀(“conf” 即 “configuration” 的缩写),便于识别和管理。
典型位置:
- 系统级服务:
/etc/
或/etc/[服务名]/
(如/etc/nginx/
、/etc/mysql/
) - 用户级配置:
~/.config/[程序名]/
(当前用户专属配置,如~/.config/git/
)
示例:
/etc/nginx/nginx.conf
:Nginx 服务主配置/etc/mysql/mysql.conf.d/mysqld.cnf
:MySQL 配置(.cnf
为.conf
变体)/etc/ssh/sshd_config
:SSH 服务配置~/.gitconfig
:当前用户的 Git 配置
三、特定功能配置文件(专用后缀)
部分工具或服务采用专用后缀,通常与其功能特性相关:
.ini
:初始化配置文件,采用[section]+key=value
结构(常见于跨平台程序)
示例:/etc/php/7.4/cli/php.ini
(PHP 配置)、~/.config/transmission/settings.ini
.yaml
/.yml
:基于缩进的结构化配置,多用于现代工具(如容器、编排工具)
示例:docker-compose.yml
(Docker 编排)、/etc/prometheus/prometheus.yml
.json
:JSON 格式配置,常用于 Web 服务、API 相关工具
示例:/etc/docker/daemon.json
(Docker 守护进程配置).rc
:“run commands” 缩写,为程序启动时自动执行的脚本 / 配置
示例:~/.bashrc
(bash shell 配置)、~/.vimrc
(Vim 编辑器配置).list
:列表类配置,多为路径或名称集合(如软件源)
示例:/etc/apt/sources.list
(Debian/Ubuntu 软件源)
四、用户级配置文件(隐藏文件为主)
用户专属配置文件通常存放在家目录(~
),且多为隐藏文件(以 .
开头),避免与普通文件混淆:
- 无后缀但以
.
开头:~/.bash_profile
(bash 登录配置)、~/.ssh/config
(SSH 客户端配置) - 带专用后缀:
~/.vimrc
(Vim 配置)、~/.ssh/authorized_keys
(SSH 免密登录公钥列表)
配置规律汇总表
配置类型 | 典型位置 | 常见后缀 / 命名规则 | 示例 |
---|---|---|---|
系统核心配置 | /etc/ | 无后缀 | /etc/passwd 、/etc/fstab |
服务 / 程序配置 | /etc/[服务名]/ 、~/.config/ | .conf 、.cnf | /etc/nginx/nginx.conf |
初始化配置 | 系统级或用户级目录 | .ini | php.ini |
结构化配置 | 现代工具目录 | .yaml 、.yml 、.json | docker-compose.yml |
启动脚本配置 | 家目录、/etc/profile.d/ | .rc 、带 . 前缀无后缀 | ~/.bashrc 、~/.zshrc |
列表 / 源配置 | /etc/apt/ 、/etc/yum.repos.d/ | .list 、.repo | sources.list 、CentOS-Base.repo |
通过位置和后缀可快速判断配置文件用途(例如 .conf
多为程序配置,.yml
多为编排工具配置)。对不熟悉的文件,可通过 man [程序名]
查看其配置文件说明。
核心配置文件详解
一、系统核心配置文件(/etc/
目录下)
这些文件控制操作系统基础属性(如主机名、系统标识、文件系统挂载等),是系统启动和运行的核心。
1. 系统版本与标识
-
/etc/os-release
作用:存储系统版本、ID、名称等标准化信息(兼容 LSB 规范),供脚本和程序调用。
内容示例:NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7"
特点:替代 CentOS 6 中的
/etc/redhat-release
(CentOS 7 保留其作为兼容软链接)。 -
/etc/machine-id
作用:系统唯一标识符(UUID),由systemd
生成,用于集群、容器等场景下区分主机。
注意:手动修改可能导致journald
、NetworkManager
等依赖服务异常。
2. 主机名与网络标识
/etc/hostname
作用:存储静态主机名,系统启动时由systemd-hostnamed
服务读取。
修改方法:- 临时生效:
hostname 新主机名
- 永久生效:编辑文件或执行
hostnamectl set-hostname 新主机名
(推荐,自动更新文件)。
- 临时生效:
/etc/hosts
作用:本地域名解析表(优先级高于 DNS),用于映射 IP 与主机名。
格式:IP地址 主机名 别名
示例:192.168.1.100 controller node1
(将 IP 映射到 controller 和 node1)。
3. 文件系统与挂载
/etc/fstab
作用:定义系统启动时自动挂载的文件系统(磁盘、分区、网络存储等)。
格式(每行 6 个字段):
设备路径 挂载点 文件系统类型 挂载选项 备份标识 自检顺序
示例(挂载/dev/sdb1
到/data
):
/dev/sdb1 /data ext4 defaults 0 0
注意:修改后需执行mount -a
验证,避免语法错误导致系统无法启动。/etc/mtab
作用:动态记录当前已挂载的文件系统信息(由mount
命令自动更新),是/proc/mounts
的软链接。
用途:查看当前挂载状态(替代mount
命令直接读取)。
二、systemd
相关配置文件(核心)
CentOS 7 采用 systemd
替代传统 SysVinit 作为初始化系统,所有服务、进程、开机启动项均由 systemd
管理,配置文件集中在 /etc/systemd/
和 /usr/lib/systemd/
。
1. systemd
主配置
/etc/systemd/system.conf
作用:systemd
系统级全局配置(如默认超时时间、日志级别)。
常用参数:DefaultTimeoutStartSec=90s
:服务启动超时时间LogLevel=info
:日志级别(debug/info/warn/err)
/etc/systemd/user.conf
作用:用户级systemd
配置(针对用户会话管理,较少使用)。
2. 服务单元文件(.service
)
systemd
用 “单元文件” 定义服务、设备、挂载等资源,其中最常用的是 .service
服务单元。
存放路径:
- 系统默认服务:
/usr/lib/systemd/system/
(如sshd.service
、firewalld.service
) - 用户自定义服务:
/etc/systemd/system/
(优先级更高,覆盖系统默认)
结构示例(以 sshd.service
为例):
[Unit] # 单元描述、依赖关系
Description=OpenSSH server daemon
After=network.target sshd-keygen.service[Service] # 服务启动参数
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID[Install] # 开机启动配置
WantedBy=multi-user.target
管理命令:修改单元文件后需执行 systemctl daemon-reload
生效,再用 systemctl enable/restart 服务名
操作。
3. 目标单元文件(.target
)
类似传统 “运行级别”,用于定义系统状态(如多用户模式、图形界面)。
关键目标:
multi-user.target
:多用户命令行模式(对应传统 runlevel 3)graphical.target
:图形界面模式(对应传统 runlevel 5)
配置文件:/usr/lib/systemd/system/multi-user.target
等。
管理命令:systemctl get-default
查看当前默认目标,systemctl set-default 目标名
修改。
三、网络配置文件
CentOS 7 主要依赖 NetworkManager
管理网络,同时保留传统的 /etc/sysconfig/network-scripts/
配置文件兼容。
1. 网卡配置(核心)
-
/etc/sysconfig/network-scripts/ifcfg-<网卡名>
作用:定义网卡(如eth0
、ens33
)的 IP、子网掩码、网关等参数。
常用配置项:TYPE=Ethernet # 网络类型(以太网) BOOTPROTO=static # 启动协议(static/dhcp/none) NAME=ens33 # 网卡名称(与文件名一致) DEVICE=ens33 # 设备名 ONBOOT=yes # 开机启动 IPADDR=192.168.1.100 # IP地址 PREFIX=24 # 子网掩码(等价于NETMASK=255.255.255.0) GATEWAY=192.168.1.1 # 网关 DNS1=114.114.114.114 # DNS服务器
生效方法:修改后重启网络服务
systemctl restart network
或nmcli connection reload
。 -
/etc/NetworkManager/NetworkManager.conf
作用:NetworkManager
服务的主配置(如是否管理所有网卡、日志级别)。
示例:禁用对eth0
的管理(在[keyfile]
下添加unmanaged-devices=interface-name:eth0
)。
2. DNS 配置
/etc/resolv.conf
作用:存储 DNS 服务器地址,供系统解析域名。
注意:CentOS 7 中默认由NetworkManager
自动生成和管理此文件,手动修改可能被覆盖。若需固定 DNS,建议在网卡配置文件(ifcfg-*
)中通过DNS1
、DNS2
定义。
四、软件包管理配置(yum
)
CentOS 7 用 yum
(基于 RPM)管理软件包,配置文件控制仓库地址、缓存、安装策略等。
1. 主配置文件
-
/etc/yum.conf
作用:
yum
全局配置(如缓存目录、安装跳过依赖检查等)。关键参数:
[main] cachedir=/var/cache/yum/$basearch/$releasever # 缓存目录 keepcache=0 # 安装后是否保留缓存(0=不保留) debuglevel=2 # 调试级别 logfile=/var/log/yum.log # 日志文件 exclude=kernel* # 排除安装的包(如内核)
2. 仓库配置文件(.repo
)
存放路径:/etc/yum.repos.d/
(所有 .repo
文件均会被 yum
加载)。
格式示例(以 CentOS-Base.repo
为例):
[base] # 仓库ID(唯一)
name=CentOS-$releasever - Base # 仓库名称
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ # 仓库地址
gpgcheck=1 # 是否校验GPG签名(1=开启)
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 # GPG公钥路径
enabled=1 # 是否启用仓库(1=启用)
常用操作:添加第三方仓库(如 EPEL)时,只需在 /etc/yum.repos.d/
中放置对应的 .repo
文件。
五、用户与权限配置
控制用户账户、密码、组及 sudo
权限的核心文件。
1. 用户与组配置
/etc/passwd
:存储所有用户基本信息(用户名、UID、GID、家目录、默认 shell 等),格式:
用户名:x:UID:GID:描述:家目录:shell
示例:root:x:0:0:root:/root:/bin/bash
/etc/shadow
:存储用户密码哈希(仅 root 可读取),格式: (在centos-7下没有这个文件)
用户名:加密密码:最后修改时间:最小密码期限:最大密码期限:警告期限:过期宽限:过期时间:保留
/etc/sudoers
:定义哪些用户或用户组可以执行sudo
命令(即临时获取 root 权限)。**/etc/sudoers.d**
:存放自定义的sudo
权限规则文件,用于扩展sudo
配置。/etc/group
:存储用户组信息(组名、GID、成员),格式:
组名:x:GID:成员列表
示例:wheel:x:10:root,bq
2. sudo
权限配置
/etc/sudoers
作用:定义哪些用户 / 组可以执行sudo
命令(即临时获取 root 权限)。
编辑方法:必须用visudo
命令(自动校验语法,避免错误导致无法使用sudo
)。
示例:允许bq
用户免密执行所有命令:
bq ALL=(ALL) NOPASSWD:ALL
注意:推荐通过/etc/sudoers.d/
目录添加自定义规则(如创建sudoers.d/bq
文件),而非直接修改主文件。
六、安全相关配置
1. 防火墙(firewalld
)
CentOS 7 默认用 firewalld
替代 iptables
作为防火墙,配置文件如下:
/etc/firewalld/firewalld.conf
:主配置(如默认区域、日志级别)。/etc/firewalld/zones/
:区域配置(如public.xml
),定义区域内允许的服务 / 端口。/etc/firewalld/services/
:服务定义(如ssh.xml
),映射服务到端口(如 SSH=22)。
管理方法:通过 firewall-cmd
命令修改(临时生效),加 --permanent
选项保存到配置文件(永久生效)。
2. 资源限制
-
/etc/security/limits.conf
作用:限制用户 / 进程的系统资源(如最大文件数、进程数、内存使用)。
格式:
用户名/组名 限制类型 限制项 限制值
示例:允许
bq
用户打开最多 65535 个文件:bq soft nofile 65535 bq hard nofile 65535
七、日志配置
CentOS 7 用 systemd-journald
实时收集日志,同时保留 rsyslog
进行日志持久化和转发。
1. journald
配置
-
/etc/systemd/journald.conf
作用:控制journald 的日志存储(内存 / 磁盘)、轮转、权限等。
关键参数:
Storage=persistent
:日志持久化到/var/log/journal/
(默认临时存储在内存)MaxRetentionSec=7day
:日志最大保留时间
2. rsyslog
配置
/etc/rsyslog.conf
及/etc/rsyslog.d/
:定义日志收集规则(如将特定服务日志写入指定文件)。
示例:将sshd
服务日志写入/var/log/sshd.log
:
authpriv.* /var/log/sshd.log
总结
CentOS 7 配置文件的核心特点:
systemd
主导:服务、启动项、日志等均围绕systemd
配置,需重点掌握.service
单元文件。- 网络双重管理:
NetworkManager
与传统ifcfg-*
文件并存,推荐用nmcli
或图形工具修改网络配置。 - 分层配置:重要配置(如
sudoers
、yum
仓库)支持通过子目录(/etc/sudoers.d/
、/etc/yum.repos.d/
)扩展,避免直接修改主文件。
如涉及版权问题请联系作者处理!!!!!!!