一、Linux 例行计划任务(定时任务)
1.1 作用场景
日常运维经常需要定时执行操作:
- 凌晨 1 点自动备份数据
- 每晚 10 点巡检系统状态
- 定期清理日志、临时文件
Linux 分为两类定时任务:
- at:一次性任务(到时间只执行 1 次)
- crontab:周期性任务(循环重复执行,运维最常用)
1.2 At (一次性)
1.2.1 安装与启动服务
at 工具默认未预装,需手动安装
bash
# 安装 at 服务
yum install at -y
# 查看版本
at -V
# 启动并设置开机自启
systemctl enable --now atd
# 查看服务状态
systemctl status atd
1.2.2 at 权限控制(白 / 黑名单)
at 有两套权限规则,优先级:at.allow(白名单) > at.deny(黑名单)
- /etc/at.allow:白名单,仅文件内用户可使用 at
- /etc/at.deny:黑名单,文件内用户禁止使用 at
- 两个文件都不存在:仅 root可用 at
1.2.3 at 常用参数 & 时间格式
常用参数
| 参数 | 作用 |
|---|---|
-l / atq |
查看所有 at 任务 |
-d / atrm |
删除指定 at 任务 |
-c |
查看任务内部命令 |
-f |
从文件读取任务命令 |
-m |
任务执行后发送邮件提醒 |
时间格式
| 格式 | 示例 | 说明 |
|---|---|---|
| HH:MM | 14:30 | 今日指定时间,错过则次日执行 |
| HH:MM YYYY-MM-DD | 14:30 2026-06-14 | 指定年月日 + 时间 |
| now + 时间 | now + 2 minutes | 从现在延后 N 分钟 / 小时 / 天 |
1.2.4 实战实验
实验 1:交互式创建一次性任务(2 分钟后执行)
需求:2 分钟后执行 ls /root,结果写入 /root/at.txt
bash
[root@server ~]# at now + 2 minutes # 进入 at 交互界面
warning: commands will be executed using /bin/sh
at> ls /root > /root/at.txt # 输入任务命令
at> <EOT> # 按 Ctrl+D 退出交互(EOT 结束
job 3 at Sun Jun 14 21:56:00 2026
# 查看已存在任务
[root@server ~]# at -l
3 Sun Jun 14 21:56:00 2026 a root
[root@server ~]# atq
3 Sun Jun 14 21:56:00 2026 a root
# 等待2分钟后,查看文件
[root@server ~]# cat at.txt
公共
模板
视频
图片
文档
下载
音乐
桌面
anaconda-ks.cfg
at.txt
注意:
- at命令只要指定的时间正确,就可以执行对应的命令
- at命令的输出结果不会显示到屏幕上
- at命令中执行的命令最好使用绝对路径,不容易报错
- at命令只会执行一次
实验 2:非交互式(管道方式)创建任务
无需进入交互,直接通过管道传命令
bash
echo "echo 'hello again' >> /root/at.txt" | at now + 1 minute
实验 3:配置黑名单,禁止普通用户使用 at
1.创建测试用户
bash
[root@server ~]# useradd ce1
[root@server ~]# passwd ce1
更改用户 ce1 的密码 。
新的密码:#123
无效的密码: 密码少于 8 个字符
重新输入新的密码:#123
passwd:所有的身份验证令牌已经成功更新。
2.写入黑名单
bash
[root@server ~]# vim /etc/at.deny
[root@server ~]# cat /etc/at.deny #写入
ce1
3.切换用户测试
bash
[root@server ~]# su - ce1
[ce1@server ~]$ at 14:00 #at命令不可用
#提示:You do not have permission to use at 禁止使用
You do not have permission to use at.
1.2.5 任务文件 & 日志查看
- 任务存储目录:/var/spool/at/
- 执行日志:/var/log/cron
bash
# 实时监控任务文件
watch -n 1 ls -l /var/spool/at
# 查看执行日志
tail -f /var/log/cron
1.3 周期性任务 crontab(重点)
1.3.1 服务介绍
- 服务名:
crond,系统默认开机自启 - 作用:循环执行定时任务,最小单位分钟
- 分类:
用户级任务:每个独立用户配置(crontab 命令)
系统级任务:系统全局任务(/etc/crontab、/etc/cron.* 目录)
1.3.2 安装 & 权限规则
bash
# 安装(系统一般自带)
yum install crontabs -y
# 查看服务状态
systemctl status crond
权限规则和 at 一致:cron.allow 白名单 > cron.deny 黑名单
1.3.3 crontab 基础命令
| 命令 | 作用 |
|---|---|
| crontab -e | 编辑定时任务(最常用) |
| crontab -l | 查看当前用户定时任务 |
| crontab -r | 删除所有定时任务(无提示) |
| crontab -i | 删除任务(带确认提示) |
| crontab -u 用户名 | 管理指定用户的任务(仅 root 可用) |
1.3.4 核心:时间格式(6 个字段)
格式:分钟 小时 日期 月份 星期 执行命令
| 字段 | 取值范围 |
|---|---|
| 分钟 | 0~59 |
| 小时 | 0~23 |
| 日期 | 1~31 |
| 月份 | 1~12 |
| 星期 | 0~7(0 和 7 均代表周日) |
特殊符号说明
| 符号 | 含义 |
|---|---|
* |
任意时间(每单位都执行) |
- |
时间范围 |
, |
分隔多个独立时间点 |
*/N |
每隔 N 单位执行 |
常用示例(直接套用)
bash
# 1. 每天凌晨2点01分执行
1 2 * * * 命令
# 2. 每周一17点整执行
0 17 * * 1 命令
# 3. 每月1、15号凌晨5点执行
0 5 1,15 * 命令
# 4. 周一至周五 4点40分执行
40 4 * 1-5 命令
# 5. 每天凌晨4点,每10分钟执行一次
*/10 4 * * * 命令
# 6. 每2天,8~11点的第3、15分钟执行
3,15 8-11 */2 * 命令
# 7. 每分钟执行一次
* * * * * 命令
重要注意:
- 6 个字段不能为空,不指定时间用 *
- 命令尽量使用绝对路径
- 日期 + 星期不建议同时配置,容易逻辑混乱
1.3.5 crontab 实战
实验 1:每 2 分钟广播系统时间
bash
[root@server ~]# crontab -e # 写入内容 */2 * * * * wall $(date)
no crontab for root - using an empty one
crontab: installing new crontab
[root@server ~]# crontab -l # 查看任务
*/2 * * * * wall $(date)
[root@server ~]# crontab -r # 删除任务
实验 2:每周一凌晨 6 点重启服务器
bash
[root@server ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
#写入
0 6 * * 1 /sbin/shutdown -r now
[root@server ~]# crontab -l
0 6 * * 1 /sbin/shutdown -r now
1.3.6 系统级定时任务
用户任务仅针对单个用户,系统全局任务需编辑系统配置文件:
- 系统主配置文件:/etc/crontab
- 系统预设目录(系统自动执行)
/etc/cron.hourly:每小时任务
/etc/cron.daily:每日任务
/etc/cron.weekly:每周任务
/etc/cron.monthly:每月任务
系统配置文件格式(多一个用户字段)
格式:分钟 小时 日期 月份 星期 运行用户 命令
实战 1:每天 6 点备份系统日志
需求:每天 6:00 将 /var/log/messages 备份到 /backup,文件名带日期
bash
# 创建备份目录
mkdir /backup
# 编辑系统定时文件
vim /etc/crontab
# 末尾添加
0 6 * * * root /bin/cp /var/log/messages /backup/logfile$(date +\%Y-\%m-\%d)
重点:crontab 中 % 必须加反斜杠 \% 转义!
实战 2:run-parts 批量执行脚本
run-parts 可执行目录下所有脚本,适合批量任务:
bash
# 新建脚本目录
mkdir /test
# 编辑系统定时,每天8点执行 /test 下所有脚本
vim /etc/crontab
0 8 * * * root run-parts /test
1.3.7 anacron 补充(关机补执行)
crond 仅在开机时执行,若关机错过任务则不再执行;
anacron 专门弥补:开机后自动执行关机期间错过的每日 / 每周 / 每月任务
配置文件:/etc/anacrontab,系统默认配置好,无需手动修改。
二、Chrony 时间服务器
2.1 时间服务作用
1.日志、订单、运维操作依赖统一时间戳
2.集群、服务器之间必须时间同步,否则服务异常
3.Linux 存在两个时钟:
硬件时钟(RTC):主板 BIOS 时钟,断电不丢失
系统时钟:内核时钟,断电重置
2.1.1 时间相关命令
bash
# 查看硬件时间
hwclock
# 查看系统时间
date
# 统一设置系统+硬件时间
timedatectl set-time "2026-06-14 10:00:00"
# 查看完整时间信息(时区、同步状态)
timedatectl
2.2 时间配置
bash
# 查看亚洲时区
timedatectl list-timezones | grep Asia
# 设置为上海时区(北京时间)
timedatectl set-timezone Asia/Shanghai
2.3 Chrony 介绍
RHEL 9 默认时间同步服务,替代传统 NTP:
1.组成:
-
chronyd:后台守护进程,同步时间、监听 123 端口
-
chronyc:交互式客户端,查看、管理时间服务
2.优势:断网后也能维持时间精度,适配虚拟机 / 云主机
2.4 常用公共时间服务器(国内优先)
bash
ntp.aliyun.com # 阿里云
ntp.tencent.com # 腾讯
210.72.145.44 # 国家授时中心
s1a.time.edu.cn # 教育网
2.5 实战部署
2.5.1 实验 1:客户端同步公网时间(单机使用)
步骤 1:安装服务(系统默认预装)
bash
yum install chrony -y
systemctl enable --now chronyd
步骤 2:修改配置文件
bash
vim /etc/chrony.conf
# 注释原有 pool,添加阿里云时间服务器
server ntp.aliyun.com iburst
# 保留默认配置:
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
步骤 3:重启服务 & 验证
bash
systemctl restart chronyd
# 查看时间同步源(* 代表当前生效服务器)
chronyc sources -v
# 查看同步状态
timedatectl
# System clock synchronized: yes 表示同步成功
2.5.2 实验 2:搭建内部时间服务器(集群必备)
拓扑:
- 服务端 Server:192.168.168.91 → 同步阿里云
- 客户端 Node1:192.168.168.92 → 同步内网 Server
第一步:配置时间服务端
1.编辑配置
bash
vim /etc/chrony.conf
# 1. 上游公网时间源
server ntp.aliyun.com iburst
# 2. 允许内网网段同步(核心配置)
allow 192.168.0/24
# 可选:断网后仍对外提供时间
local stratum 10
2.重启服务 和 监听端口
bash
systemctl restart chronyd
# 查看 123 端口(NTP/Chrony 默认端口)
ss -lntup | grep 123
第二步:配置内网客户端
1.编辑配置,指向内网时间服务器
bash
vim /etc/chrony.conf
# 注释所有公网 server,添加内网服务器
server 192.168.168.91 iburst
2.重启验证
bash
systemctl restart chronyd
chronyc sources -v # 源为 192.168.168.91 即成功
排错思路:
双方网络互通:ping 服务器IP
检查 allow 网段配置是否正确
防火墙 / SELinux 已关闭
服务正常启动
三、SSH 远程登录服务
3.1 服务简介
- 协议:SSH(Secure Shell)加密远程连接,替代明文 Telnet
- 默认端口:22
- 功能:远程命令行、SFTP 文件传输
- 认证方式:密码认证、密钥认证(免密登录)
3.1.1 SSH 工作流程
- 版本协商:客户端与服务端协商 SSH 版本
- 密钥协商:交换公钥,生成加密会话密钥
- 身份认证:密码 / 密钥校验
- 会话交互:加密传输所有数据
3.2 基础配置文件
服务端主配置:/etc/ssh/sshd_config
bash
# 查看、编辑配置
vim /etc/ssh/sshd_config
核心配置项:
bash
Port 22 # 监听端口
PermitRootLogin yes # 是否允许 root 远程登录
PasswordAuthentication yes # 是否开启密码登录
AllowUsers 用户名 # 登录白名单(仅指定用户可登录)
3.3 实战实验
实验 1:修改 SSH 默认端口(安全加固)
需求:将默认 22 端口改为 2222
1.服务端修改配置
bash
vim /etc/ssh/sshd_config
# 取消注释,修改端口
Port 2222
2.重启服务
bash
systemctl restart sshd
# 查看监听端口
ss -lntup | grep ssh
3.客户端连接(必须指定端口)
bash
# 格式:ssh -p 端口 用户名@IP
ssh -p 2222 root@192.168.91
实验 2:禁止 root 远程登录(安全加固)
bash
vim /etc/ssh/sshd_config
PermitRootLogin no # 禁止root登录
# 可选:PermitRootLogin prohibit-password 仅允许密钥登录,禁止密码
systemctl restart sshd
# 客户端测试:ssh root@IP 提示密码错误,无法登录
实验 3:配置登录白名单
需求:仅 test 用户可远程登录,其他账号拒绝
bash
vim /etc/ssh/sshd_config
# 添加一行
AllowUsers test
systemctl restart ssh
# 测试:test 可登录,root/其他用户被拒绝
实验 4:密钥免密登录(重点,运维高频)
拓扑:
客户端:192.168.168.92
服务端:192.168.168.91
目标:客户端 root 免密登录服务端 root
步骤 1:客户端生成密钥对
bash
# 生成密钥,-P 空密码,无需交互
ssh-keygen -f /root/.ssh/id_rsa -P ""
# 查看生成的公钥、私钥
ll /root/.ssh/
# id_rsa:私钥(保密) id_rsa.pub:公钥(分发)
步骤 2:上传公钥到服务端
bash
# 一键上传公钥到服务端 /root/.ssh/authorized_keys
ssh-copy-id root@192.168.91
步骤 3:测试免密登录
bash
ssh root@192.168.91
# 直接登录,无需输入密码 = 成功
3.4 Windows 客户端密钥登录补充
- MobaXterm:终端内执行 ssh-keygen + ssh-copy-id,用法和 Linux 一致
- Xshell / MobaKeyGen:图形化生成密钥 → 复制公钥到服务器 ~/.ssh/authorized_keys,登录时选择私钥即可。
第四章 Nginx Web 服务(静态网站 + 虚拟主机 + HTTPS)
4.1 Web 服务基础
4.1.1 基础概念
- Web 服务:基于 HTTP/HTTPS 提供网页访问
- 主流软件:Nginx、Apache、Tomcat、IIS
- HTTP 端口:8 ;HTTPS 端口:443
- 网页根目录(Nginx 默认):/usr/share/nginx/html
4.1.2 HTTP 状态码
| 分类 | 含义 | 常见码 |
|---|---|---|
| 2xx 成功 | 请求正常 | 200 正常访问 |
| 3xx 重定向 | 跳转页面 | 301 永久跳转 |
| 4xx 客户端错误 | 访问异常 | 404 页面不存在、403 权限拒绝 |
| 5xx 服务端错误 | 服务故障 | 500 服务器报错、503 服务不可用 |
4.2 Nginx 基础部署
4.2.1 安装 & 启停
bash
# 安装
yum install nginx -y
# 启动、开机自启
systemctl enable --now nginx
# 查看状态
systemctl status nginx
# 查看进程(master主进程 + worker工作进程)
ps -ef | grep nginx
4.2.2 Nginx 自带命令(常用)
bash
nginx -v # 查看版本
nginx -t # 检查配置文件语法(必做!)
nginx -s reload # 平滑重载配置(不中断服务)
nginx -s stop # 强制停止
nginx -s quit # 优雅停止
4.2.3 核心目录
bash
/etc/nginx/ # 主配置目录
├── nginx.conf # 主配置文件
└── conf.d/ # 子配置目录(虚拟主机推荐放这里)
/usr/share/nginx/html # 默认网页根目录
/var/log/nginx/ # 日志(access.log 访问日志、error.log 错误日志)
4.2.4 主配置文件结构
四层结构(从上到下):
- 全局块:运行用户、进程数
- events 块:连接数、事件模型
- http 块:全局网页配置
- server 块:虚拟主机(单个网站)
- location 块:匹配访问路径
4.2.5 关键指令区分
- root:拼接路径 root路径 + 访问路径
- alias:直接指向指定路径,不拼接,末尾必须加 /
4.3 Nginx 基础实战
实验 1:修改默认首页
bash
# 写入自定义网页内容
echo "Welcome to Nginx Test Page" > /usr/share/nginx/html/index.html
# 重载配置
nginx -s reload
# 本地测试
curl 127.0.0.1
# 浏览器访问服务器IP
实验 2:修改网页根目录
需求:网页目录改为 /www/date
bash
# 创建目录
mkdir -pv /www/date
# 编写网页(可写入HTML代码)
vim /www/date/index.html
# 编辑 nginx 主配置
vim /etc/nginx/nginx.conf
# 在 server 块修改 root 路径
root /www/date;
# 检查配置 + 重载
nginx -t
nginx -s reload
# 访问测试
实验 3:网页密码认证
需求:访问网站需要账号密码登录
bash
# 安装密码工具
yum install httpd-tools -y
# 创建密码文件,新增用户 boss
htpasswd -c /etc/nginx/passwd boss
# 追加第二个用户 caiwu
htpasswd /etc/nginx/passwd
# 修改网站配置,添加认证
vim /etc/nginx/nginx.conf
server {
auth_basic "请输入登录账号";
auth_basic_user_file /etc/nginx/passwd;
# 其他配置不变
}
nginx -t && nginx -s reload
# 浏览器访问,弹出登录框
实验 4:目录浏览(文件下载站)
开启目录索引,直接浏览服务器文件
bash
vim /etc/nginx/nginx.conf
location / {
autoindex on; # 开启目录浏览
autoindex_localtime on; # 显示服务器时间
}
nginx -s reload
4.4 Nginx 虚拟主机(一台服务器跑多个网站)
三种实现方式:IP、端口、域名
实验 1:基于端口的虚拟主机
单 IP,不同端口对应不同网站:
1.创建网页目录
bash
mkdir /www/port10000 /www/port20000
echo "port10000" > /www/port10000/index.html
echo "port20000" > /www/port20000/index.html
2.新建子配置
bash
vim /etc/nginx/conf/port.conf
server {
listen 10000;
root /www/port10000;
}
server {
listen 20000;
root /www/port20000;
}
- 重载测试
bash
nginx -t && nginx -s reload
curl 192.168.91:10000
curl 192.168.91:20000
实验 2:基于域名的虚拟主机(生产最常用)
同一 IP、同一端口,不同域名区分网站
1.配置本地域名解析(hosts)
bash
# Linux / Windows 都可修改 hosts,模拟域名
vim /etc/hosts
192.168.168.91 www.rhcetest1.com test.jungle.org
2.网站目录 + 页面
bash
mkdir /www/rhce /www/jungle
echo www.rhcetest1.com > /www/rhce/index.html
echo test.jungle.org > /www/jungle/index.html
3.域名虚拟主机配置
bash
vim /etc/nginx/conf.d/name.conf
server {
listen 80;
server_name www.rhcetest1.com;
root /www/rhce;
}
server {
listen 80;
server_name test.jungle.org;
root /www/jungle;
}
4.测试
bash
curl www.rhcetest1.com
curl test.jungle.org
4.5 HTTPS 加密网站(80 转 443)
HTTP 明文不安全,HTTPS 基于 SSL/TLS 加密,端口443
步骤 1:生成自签名证书
bash
# 使用 openssl 生成证书+私钥
openssl req -x509 -newkey rsa:2048 -nodes -days 365 \
-keyout /etc/nginx/conf.d/https.key \
-out /etc/nginx/conf.d/https.crt
# 按提示填写国家、城市、域名等信息
步骤 2:配置 HTTPS + 80 强制跳转
bash
vim /etc/nginx/conf.d/https.conf
# HTTPS 站点
server {
listen 443 ssl;
server_name 192.168.168.91;
ssl_certificate /etc/nginx/conf.d/https.crt;
ssl_certificate_key /etc/nginx/conf.d/https.key;
root /www/https;
}
# 80 端口自动跳转到 HTTPS
server {
listen 80;
server_name 192.168.91;
return 301 https://$host$request_uri;
}
步骤 3:测试
bash
mkdir /www/https
echo "HTTPS 站点" > /www/https/index.html
nginx -t && nginx -s reload
# 访问 http 自动跳转 https
curl -Lk http://192.168.91
第五章 NFS 网络文件共享服务
5.1 服务简介
- NFS:网络文件系统,实现跨主机文件共享
- 依赖 RPC 服务(端口 111):NFS 随机端口,RPC 负责端口注册与分发
- 端口:RPC=111,NFS 主端口 = 2049
- 应用:集群共享存储、网站图片 / 附件统一存放
5.2 核心配置文件
主配置:/etc/exports
格式:共享目录 客户端(权限参数)
常用权限参数
| 参数 | 说明 |
|---|---|
| ro | 只读 |
| rw | 读写 |
| root_squash | 客户端 root 映射为匿名 nobody(默认,安全) |
| all_squash | 所有用户均映射为匿名 |
| anonuid/anongid | 指定映射的 UID/GID |
5.3 实战部署
环境:
服务端:192.168.168.91
客户端:192.168.168.92
实验 1:只读共享
1.服务端配置
bash
yum install nfs-utils -y
mkdir /test1
echo "read only file" > /test1/file1
vim /etc/exports
/test1 *(ro) # 所有客户端只读
systemctl enable --now nfs-server
# 查看共享
showmount -e
2.客户端挂载
bash
yum install nfs-utils -y
showmount -e 192.168.91
mkdir /client/t1
mount 192.168.91:/test1 /client/t1
# 测试:无法新建文件(只读)
touch /client/t1/test
实验 2:读写共享
bash
# 服务端
mkdir /test2
echo "read write file" > /test2/file1
chmod o=rwx /test2 # 开放其他用户权限
vim /etc/exports
/test2 *(rw)
systemctl restart nfs-server
# 客户端挂载测试,可正常新建文件
实验 3:指定 UID/GID 映射
所有客户端用户统一映射为指定账号:
bash
# 服务端
mkdir /test3
vim /etc/exports
/test3 *(rw,all_squash,anonuid=2000,anongid=3000)
chmod o=rwx /test3
systemctl restart nfs-server
# 客户端挂载后,新建文件属主为 2000:3000
实验 4:开机自动挂载(fstab)
重启不丢失挂载:
bash
vim /etc/fstab
# 格式:服务端共享 挂载点 文件类型 参数 0 0
192.168.91:/test1 /client/t1 nfs defaults,_netdev 0 0
# 生效
mount -a
df -h
实验 5:autofs 自动挂载(按需挂载)
优势:无人访问自动卸载,节省资源
bash
# 客户端安装
yum install autofs -y
# 主配置
vim /etc/auto.master
/nfs /etc/auto.nfs
# 子配置
vim /etc/auto.nfs
t4 192.168.91:/test4
systemctl enable --now autofs
# 访问 /nfs/t4 自动挂载,超时自动卸载
第六章 DNS 域名解析服务(Bind)
6.1 基础概念
- DNS:域名 ↔ IP 相互解析
- 正向解析:域名 → IP(最常用)
- 反向解析:IP → 域名
- 端口:53(TCP/UDP)
- 软件:bind
6.2 核心配置文件
- 主配置:/etc/named.conf
- 区域配置:/etc/named.rfc1912.zones
- 解析数据文件:/var/named/
6.3 实战部署
实验 1:正向解析(域名解析 IP)
目标:www.jungle.org → 192.168.168.100
- 安装启动
bash
yum install bind -y
systemctl enable --now named
- 主配置修改(允许所有主机查询)
bash
vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };
3.新增区域
bash
vim /etc/named.rfc1912.zones
zone "jungle.org" IN {
type master;
file "jungle.org";
};
- 新建解析数据文件
bash
cp /var/named/named.localhost /var/named/jungle.org
vim /var/named/jungle.org
# 编写解析记录(A记录)
$TTL 1D
@ IN SOA ns.jungle.org. admin.jungle.org. (
0 1D 1H 1W 3H
)
IN NS ns.jungle.org.
ns IN A 192.168.91
www IN A 192.168.100
5.重启 + 测试
bash
systemctl restart named
# 客户端指定DNS为服务器IP
nslookup www.jungle.org 192.168.91
实验 2:反向解析(IP 解析域名)
IP 192.168.168.100 → www.jungle.org
1.新增反向区域
bash
vim /etc/named.rfc1912.zones
zone "168.192.in-addr.arpa" IN {
type master;
file "168.192";
};
2.反向数据文件
bash
cp /var/named/named.loopback /var/named/168.192
vim /var/named/168.192
$TTL 1D
@ IN SOA ns.jungle.org. admin.jungle.org. (
0 1D 1H 1W 3H
)
IN NS ns.jungle.org.
91 IN PTR ns.jungle.org.
100 IN PTR www.jungle.org.
- 测试
bash
nslookup 192.168.100
实验 3:主从 DNS(备份解析)
- 主 DNS:192.168.91
- 从 DNS:192.168.93
-
主配置:添加允许区域传输
bashzone "jungle.org" IN { type master; file "jungle.org"; allow-transfer { 192.168.93; }; }; -
从服务器配置(type slave)
bashzone "jungle.org" IN { type slave; masters { 192.168.91; }; file "slaves/jungle.org"; }; -
重启从服务,自动同步解析文件,两台服务器均可解析
第七章 MySQL 数据库服务
7.1 安装与基础使用(RHEL9)
bash
# 安装
yum install mysql-server -y
# 启动开机自启
systemctl enable --now mysqld
# 初始空密码登录
mysql -uroot
# 修改root密码
mysqladmin -uroot password '123456'
# 带密码登录
mysql -uroot -p123456
7.2 基础操作
bash
-- 创建数据库
create database testdb;
-- 创建表
create table testdb.t1(id int,name varchar(20));
-- 插入数据
insert into testdb.t1 values(1,'zhangsan');
-- 查询数据
select * from testdb.t1;
7.3 远程授权
允许外网用户登录:
bash
create user test@'%' identified by '123';
grant all privileges on *.* to test@'%';
flush privileges;
第八章 补充:SELinux & 防火墙(服务排错重点)
8.1 SELinux(安全上下文)
常用命令
bash
getenforce # 查看状态
setenforce 0/1 # 临时开关
chcon # 临时修改安全上下文
semanage fcontext # 永久修改上下文
restorecon # 恢复默认上下文
getsebool/setsebool # 布尔值开关
常见排错场景
- Nginx 无法读取自定义网页目录 → 修改 httpd 上下文
- SSH/Nginx 改端口无法启动 → 添加端口安全规则
8.2 Firewalld 防火墙(RHEL 默认)
bash
# 放行http服务
firewall-cmd --permanent --add-service=http
# 放行端口
firewall-cmd --permanent --add-port=2222/tcp
# 重载生效
firewall-cmd --reload
# 查看规则
firewall-cmd --list-all