餐饮业网站源码 织梦汽车网址大全123
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/)扩展,避免直接修改主文件。
如涉及版权问题请联系作者处理!!!!!!!
