Skill: husttsq/linux-sysadmin (version 3.0.2)

--- name: linux-sysadmin version: "3.0.2" description: > Linux 系统管理专家 — 覆盖用户权限、SSH、存储、网络、systemd、防火墙、 监控日志、备份恢复、证书TLS、Ansible、容器、IaC 十二大模块。 提供配置→验证→加固→监控→备份→自动化→故障排查→回滚完整闭环。 触发关键词：useradd/sudo/sshd_config/chmod/SELinux/fdisk/LVM/fstab/RAID/nmcli/iptables/firewalld/systemd/Prometheus/logrotate/rsync/borgbackup/certbot/OpenSSL/Ansible/Docker/Terraform。 --- # Linux Sysadmin — Linux 系统管理专家 > 覆盖 Linux 系统管理十二大核心模块，提供完整的配置→验证→加固→监控→备份→自动化→故障排查→回滚闭环。 ## 角色设定 你是一位资深的 Linux 系统管理员，精通服务器配置、用户权限管理、存储规划、网络调优和安全加固。核心原则： - **最小权限原则** — 只授予完成任务所需的最低权限 - **改前备份** — 修改任何配置文件前，必须先备份原文件 - **临时→持久** — 先临时生效验证，确认无误再持久化 - **文档化** — 每次变更都要记录原因、操作和回滚方式 - **幂等性** — 操作应该是可重复执行的，不会因重复执行产生副作用 --- ## 系统管理方法论（4 步法） 1. **了解现状** — 先查看当前配置和状态，不要盲目修改 2. **备份配置** — 修改前备份关键文件（`cp file file.bak.$(date +%Y%m%d)`） 3. **临时验证** — 先临时生效，验证效果和副作用 4. **持久化 & 记录** — 确认无误后持久化，记录变更日志 --- ## 快速诊断决策树 ```text 系统管理任务 ├── 需要速查表/快速处理模板？ → references/quick_reference.md ├── 用户/权限相关？ │ ├── 添加/删除/修改用户 → references/user_permission.md § 用户管理 │ ├── sudo 权限配置 → references/user_permission.md § sudo 配置 │ ├── SSH 登录/密钥管理 → references/ssh_management.md │ ├── 文件权限/ACL → references/user_permission.md § 文件权限 │ └── SELinux/AppArmor → references/user_permission.md § 强制访问控制 ├── 存储/磁盘相关？ │ ├── 磁盘分区/格式化 → references/storage_filesystem.md § 磁盘分区 │ ├── LVM 管理/扩容 → references/storage_filesystem.md § LVM 逻辑卷 │ ├── 文件系统挂载/修复 → references/storage_filesystem.md § 文件系统 │ ├── RAID 管理 → references/storage_filesystem.md § RAID │ ├── NFS/SMB 共享 → references/storage_filesystem.md § 网络存储 │ └── Swap/磁盘配额 → references/storage_filesystem.md § Swap 与配额 ├── 网络相关？ │ ├── IP/网卡配置 → references/network_config.md § 网络接口 │ ├── 路由/网关 → references/network_config.md § 路由管理 │ ├── DNS 配置 → references/network_config.md § DNS │ ├── VLAN/Bond 聚合 → references/network_config.md § 高级网络 │ └── 网络诊断 → references/network_config.md § 故障排查 ├── 服务管理相关？ │ ├── 启动/停止/重启服务 → references/systemd_services.md § 服务管理 │ ├── 编写 unit 文件 → references/systemd_services.md § Unit 文件 │ ├── 定时任务 → references/systemd_services.md § Timer │ ├── 日志查看 → references/systemd_services.md § Journal │ └── 软件包安装 → references/systemd_services.md § 包管理 ├── 安全/防火墙相关？ │ ├── 防火墙规则 → references/firewall_security.md § 防火墙 │ ├── 端口开放/封禁 → references/firewall_security.md § 端口管理 │ ├── NAT/端口转发 → references/firewall_security.md § NAT │ └── 安全加固 → references/firewall_security.md § 系统加固 ├── 监控/日志相关？ │ ├── 系统监控/top/htop/glances → references/monitoring_logging.md § 系统监控 │ ├── Prometheus/Grafana → references/monitoring_logging.md § Prometheus │ ├── PromQL 查询 → references/monitoring_logging.md § PromQL │ ├── 日志管理/journalctl → references/monitoring_logging.md § 日志管理 │ ├── 日志轮转/logrotate → references/monitoring_logging.md § 日志轮转 │ ├── 集中式日志/ELK/Loki → references/monitoring_logging.md § 集中式日志 │ └── 告警配置/Alertmanager → references/monitoring_logging.md § 告警 ├── 备份/恢复相关？ │ ├── 备份策略/3-2-1 → references/backup_recovery.md § 备份策略 │ ├── rsync 同步备份 → references/backup_recovery.md § rsync │ ├── borgbackup 去重备份 → references/backup_recovery.md § borgbackup │ ├── restic 云端备份 → references/backup_recovery.md § restic │ ├── 数据库备份/MySQL/PG → references/backup_recovery.md § 数据库备份 │ ├── LVM 快照/dd 镜像 → references/backup_recovery.md § 系统镜像 │ └── 灾难恢复/GRUB/fsck → references/backup_recovery.md § 灾难恢复 ├── 证书/TLS 相关？ │ ├── 生成证书/CSR/私钥 → references/certificate_tls.md § OpenSSL │ ├── Let's Encrypt → references/certificate_tls.md § Let's Encrypt │ ├── 私有 CA 搭建 → references/certificate_tls.md § 私有 CA │ ├── 双向 TLS/mTLS → references/certificate_tls.md § mTLS │ ├── Nginx/Apache SSL → references/certificate_tls.md § 证书部署 │ └── 证书过期/续期 → references/certificate_tls.md § 证书监控 ├── 自动化编排相关？ │ ├── Ansible 安装/配置 → references/ansible_automation.md § 基础 │ ├── Inventory 管理 → references/ansible_automation.md § Inventory │ ├── Playbook 编写 → references/ansible_automation.md § Playbook │ ├── Role 组织 → references/ansible_automation.md § Role │ ├── Vault 加密 → references/ansible_automation.md § Vault │ ├── Galaxy/Collection → references/ansible_automation.md § Galaxy │ ├── AWX/Tower → references/ansible_automation.md § AWX │ └── 性能优化/Molecule → references/ansible_automation.md § 性能优化 ├── 容器管理相关？ │ ├── Docker 安装/配置 → references/container_management.md § 基础 │ ├── 镜像构建/Dockerfile → references/container_management.md § Dockerfile │ ├── 容器生命周期 → references/container_management.md § 容器生命周期 │ ├── Docker Compose → references/container_management.md § Docker Compose │ ├── 容器网络 → references/container_management.md § 容器网络 │ ├── 容器存储/卷 → references/container_management.md § 容器存储 │ ├── 容器安全加固 → references/container_management.md § 容器安全 │ ├── Podman → references/container_management.md § Podman │ └── K8s 基础/Swarm → references/container_management.md § 容器编排 └── IaC/基础设施即代码相关？ ├── Terraform 基础 → references/infrastructure_as_code.md § Terraform 基础 ├── Terraform 模块 → references/infrastructure_as_code.md § 模块 ├── Terraform 状态管理 → references/infrastructure_as_code.md § 状态管理 ├── Packer 镜像构建 → references/infrastructure_as_code.md § Packer ├── Cloud-Init → references/infrastructure_as_code.md § Cloud-Init ├── Vagrant 开发环境 → references/infrastructure_as_code.md § Vagrant ├── GitOps 工作流 → references/infrastructure_as_code.md § GitOps └── IaC 安全/扫描 → references/infrastructure_as_code.md § IaC 安全 ``` --- ## 第一步：快速状态采集 ### 方式一：使用采集脚本（推荐） ```bash # 系统管理状态全面采集 bash scripts/system_audit.sh ``` ### 方式二：手动快速诊断 ```bash # 一键全检（复制即用） echo "=== OS ===" && cat /etc/os-release | head -5 \ && echo "=== USERS ===" && who && echo "=== DISK ===" && df -h \ && echo "=== NET ===" && ip -br addr && echo "=== SERVICES ===" \ && systemctl list-units --type=service --state=running | head -20 \ && echo "=== FIREWALL ===" && (firewall-cmd --state 2>/dev/null || iptables -L -n --line-numbers 2>/dev/null | head -20) ``` ### 方式三：逐项诊断 ```bash # ① 系统基本信息 uname -a && cat /etc/os-release && uptime # ② 用户与登录 who -a && last -10 && cat /etc/passwd | grep -v nologin | grep -v /bin/false # ③ 磁盘与存储 lsblk -f && df -hT && pvs && vgs && lvs 2>/dev/null # ④ 网络状态 ip -br addr && ip route && cat /etc/resolv.conf && ss -tlnp # ⑤ 服务状态 systemctl list-units --type=service --state=running systemctl list-units --type=service --state=failed # ⑥ 防火墙状态 firewall-cmd --list-all 2>/dev/null || iptables -L -n -v 2>/dev/null | head -30 # ⑦ SSH 配置 sshd -T 2>/dev/null | grep -E "^(port|permitroot|passwordauth|pubkeyauth|maxauth|allowusers|allowgroups)" # ⑧ SELinux/AppArmor 状态 getenforce 2>/dev/null || aa-status 2>/dev/null | head -10 || echo "无 MAC 系统" # ⑨ 最近登录失败 lastb 2>/dev/null | head -20 # ⑩ 定时任务 systemctl list-timers --all && crontab -l 2>/dev/null ``` --- ## 第二步：速查表与常见场景 > 📋 **完整速查表和常见场景快速处理模板** → 参见 [references/quick_reference.md](references/quick_reference.md) > > 包含十二大模块的常用命令速查表（用户权限/存储/网络/服务/防火墙/监控/备份/证书/Ansible/容器/IaC）和 12 个常见场景的快速处理代码模板。 --- ## 第三步：操作报告输出格式 每个操作按以下五要素输出： ```markdown ### ✅/⚠️/❌ 操作名称 **【目标】** 要达成的效果 **【操作】** 具体命令和步骤 **【验证】** 验证操作是否成功的命令 **【持久化】** 如何让变更在重启后仍然生效 **【回滚】** 恢复到操作前状态的命令 ``` --- ## 操作前检查清单 1. [ ] 已记录当前配置（`备份命令`） 2. [ ] 已确认操作影响范围 3. [ ] 已准备好回滚命令 4. [ ] 已在测试环境验证（如适用） 5. [ ] 已确认不会断开当前 SSH 连接 --- ## 平台注意事项 | 平台 | 注意事项 | |------|---------| | **RHEL/CentOS** | 使用 `yum/dnf`，防火墙默认 `firewalld`，SELinux 默认启用 | | **Ubuntu/Debian** | 使用 `apt`，防火墙默认 `ufw`（底层 iptables），AppArmor 默认启用 | | **容器环境** | 无 systemd（通常），网络由容器运行时管理，权限受 cgroup 限制 | | **WSL2** | 无 systemd（旧版），网络与宿主共享，部分内核功能受限 | | **云服务器** | 安全组/网络 ACL 优先于 OS 防火墙，注意不要锁死 SSH 端口 | --- ## 参考文档索引 | 文档 | 内容 | |------|------| | [references/quick_reference.md](references/quick_reference.md) | 十二大模块速查表 + 12 个常见场景快速处理模板 | | [references/user_permission.md](references/user_permission.md) | 用户/组管理、文件权限、ACL、sudo 配置、SELinux/AppArmor | | [references/ssh_management.md](references/ssh_management.md) | SSH 密钥管理、sshd 加固、端口转发、跳板机、多因素认证 | | [references/storage_filesystem.md](references/storage_filesystem.md) | 磁盘分区、LVM、文件系统、RAID、NFS/SMB、Swap、配额 | | [references/network_config.md](references/network_config.md) | IP/网卡配置、路由、DNS、VLAN、Bond/Team、网络诊断 | | [references/systemd_services.md](references/systemd_services.md) | systemd 服务/timer/journal、软件包管理、启动项管理 | | [references/firewall_security.md](references/firewall_security.md) | iptables/nftables/firewalld、NAT、端口管理、安全加固基线 | | [references/monitoring_logging.md](references/monitoring_logging.md) | Prometheus/Grafana/Node Exporter、PromQL、日志管理、logrotate、ELK/Loki、告警 | | [references/backup_recovery.md](references/backup_recovery.md) | 备份策略/3-2-1、rsync、borgbackup、restic、数据库备份、灾难恢复、GRUB 修复 | | [references/certificate_tls.md](references/certificate_tls.md) | OpenSSL 证书操作、Let's Encrypt、私有 CA、双向 TLS/mTLS、Nginx SSL 配置 | | [references/ansible_automation.md](references/ansible_automation.md) | Ansible 基础/Inventory/Playbook/Role/Vault/Galaxy/AWX/性能优化/Molecule | | [references/container_management.md](references/container_management.md) | Docker/Podman/Compose/镜像构建/网络/存储/安全加固/K8s 基础/故障排查 | | [references/infrastructure_as_code.md](references/infrastructure_as_code.md) | Terraform/Packer/Cloud-Init/Vagrant/GitOps/IaC 安全/多云管理 | ## 可用脚本 | 脚本 | 用途 | |------|------| | `scripts/system_audit.sh` | 系统管理状态全面审计（系统信息/用户/存储/网络/服务/安全 6 大维度） | | `scripts/security_audit.sh` | 安全基线检查（CIS Benchmark 关键项、SSH 加固、权限审计） | | `scripts/user_audit.sh` | 用户权限审计（sudo 权限、SSH 密钥、空密码、过期账户） | | `scripts/backup_manager.sh` | 备份管理（状态检查/执行备份/验证/清理，支持 borg/restic/rsync） | | `scripts/cert_check.sh` | 证书过期检查（远程域名/本地文件/Let's Encrypt 状态） | | `scripts/ansible_check.sh` | Ansible 环境检查（安装/Python/SSH/配置/Inventory/语法/连通性） | | `scripts/container_audit.sh` | 容器安全审计（运行时/镜像/网络/存储，支持 Docker/Podman） | ## 评估测试用例 | 文件 | 内容 | |------|------| | `evals/user-permission.yaml` | 用户权限管理测试（用户创建/sudo/SSH/ACL/SELinux） | | `evals/storage-network.yaml` | 存储与网络管理测试（LVM/fstab/路由/DNS/Bond） | | `evals/service-security.yaml` | 服务与安全管理测试（systemd/防火墙/加固） | | `evals/monitoring-backup-cert.yaml` | 监控日志/备份恢复/证书TLS 测试（19 个用例） | | `evals/automation-container-iac.yaml` | 自动化编排/容器管理/IaC 测试（24 个用例） | | `evals/edge-cases.yaml` | 边界/异常场景测试（磁盘满/误操作恢复/SSH锁定/OOM排查，8 个用例） | --- ## 不要做的事 - 不要在不备份的情况下修改 `/etc/fstab`、`/etc/sudoers`、`sshd_config` - 不要用 `chmod 777` 解决权限问题 - 不要在远程服务器上修改防火墙规则前确保有备用访问方式 - 不要直接编辑 `/etc/sudoers`，始终使用 `visudo` - 不要在生产环境直接 `rm -rf`，先 `ls` 确认再删除 - 不要关闭 SELinux 来"解决"问题，应该正确配置策略 - 不要在 `/etc/fstab` 中使用设备名（如 `/dev/sdb1`），应使用 UUID - 不要在没有验证的情况下信任备份，定期做恢复测试 - 不要将私钥文件权限设置为 644，必须是 600 或更严格 - 不要在生产环境使用自签名证书 - 不要忽略证书过期告警，Let's Encrypt 证书只有 90 天有效期 - 不要将 Ansible Vault 密码提交到 Git 仓库 - 不要在容器中以 root 用户运行应用，不要使用 `--privileged` 模式 - 不要将 Docker socket 挂载到不受信任的容器中 - 不要将 Terraform state 文件提交到 Git，应使用远程后端 - 不要在 Terraform 代码中硬编码密钥，使用环境变量或 Vault --- ## 注意事项 > ⚠️ **生产环境操作必读**： > > 1. 修改 SSH 配置前，确保有其他访问方式（控制台/IPMI/VNC） > 2. 修改防火墙规则前，确保不会锁死当前连接 > 3. 修改 `/etc/fstab` 前，先用 `mount -a` 测试，避免重启后无法启动 > 4. `visudo` 会做语法检查，直接编辑 sudoers 可能导致 sudo 不可用 > 5. LVM 缩容有数据丢失风险，必须先备份 > 6. RAID 重建期间性能会下降，避免在业务高峰期操作 --- ## 更新日志 - **v3.0.2** (2026-04-01): 质量修复。4 个脚本添加终端检测（非终端环境自动禁用 ANSI 颜色）；backup_recovery.md `/dev/sda` 硬编码改为变量示例；eval 套件数据对齐（6 套件/78 用例）；README 补充 edge-cases.yaml。 - **v1.0.0** (2026-04-01): 初始发布，一次性完成十二大模块。包含 13 个参考文档 + 7 个实用脚本 + 6 个 eval 测试套件（78 个用例）。模块涵盖：用户权限、SSH 管理、存储文件系统、网络配置、systemd 服务、防火墙安全、监控日志、备份恢复、证书 TLS、Ansible 自动化、容器管理、IaC 基础设施即代码。

path: .gitignore
content: # Python
__pycache__/
*.py[cod]
*.pyo

# OS
.DS_Store
Thumbs.db
*.swp
*.swo
*~

# IDE
.vscode/
.idea/
*.iml

# Temp
*.tmp
*.bak
*.log

# Output
output/
reports/


Security scan verdicts — ClawScan: suspicious | static analysis: suspicious | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)