目 录
[为什么「敢让 AI 跑命令」是最核心的难题](#为什么「敢让 AI 跑命令」是最核心的难题)
[Linux 侧:普通直行 + 高危确认](#Linux 侧:普通直行 + 高危确认)
为什么「敢让 AI 跑命令」是最核心的难题
第 1 篇讲清楚了 AI 能自动执行命令。但能力越大,越要问一句:把执行权限交给一个模型,凭什么放心?它会不会一句话把生产库删了?会不会把交换机配置清空,让整台设备失联?
这正是 AI 运维工具和「写死脚本」最本质的分水岭------脚本的安全靠人预先写好规则,AI 的安全则要靠一道能拦在「模型意图」和「真实系统」之间的闸门。这套程序把安全做成了分级管控,而不是简单的「允许 / 禁止」二选一。这也是我反复强调的「看、改、拦」三个字背后的实现逻辑。
分级而非一刀切:安全设计的总体思路
直接拒绝一切危险命令是最省事的,但那样 AI 就什么都干不了,失去了价值。真正可用的设计,是把命令按危险程度分成不同级别,分别采取「自由执行 / 人工确认 / 直接拒绝」三种策略。整体分级如下:
|--------------|------------|--------------|------------------------------|
| 安全级别 | 策略 | 适用对象 | 举例 |
| 只读 / 普通 | 直接执行 | 巡检、查状态、普通操作 | display、top、free、ps |
| 高危 | 人工确认后才执行 | 影响可用性/完整性的操作 | reboot、shutdown、save、接口 down |
| 毁灭性 | 直接拒绝,不可绕过 | 不可逆、误操作即灾难 | format、清空配置、恢复出厂 |
值得强调的是,这套规则不是只对 AI 生效,而是对所有进入执行层的命令一视同仁------无论命令来自模型,还是来自用户手动输入,都会先过同一道安全检查。
Linux 侧:普通直行 + 高危确认
针对 Linux 服务器,安全层内置了一批高危命令的识别规则(safety.py)。它用正则去匹配整条命令(含管道、重定向部分),命中高危规则就会触发人工确认。内置规则覆盖了这些高风险动作:
|-----------------------|----------------------------------------|
| 类别 | 示例 |
| 格式化/擦除磁盘 | mkfs、wipefs、fdisk、parted、blkdiscard |
| 写裸磁盘设备 | >/dev/sdX 这类重定向 |
| 关机/重启 | shutdown、reboot、halt、poweroff、init 0/6 |
| 下载内容直接执行 | curl ... | sh |
| 递归放开权限 | chmod -R 777 |
| 递归改属主到系统目录 | chown -R /etc、/usr 等 |
| 覆盖系统目录文件 | > /etc/...、> /usr/... |
| 清空 crontab / iptables | crontab -r、iptables -F |
| 杀死 1 号进程 | kill -9 1 |
其中 rm 命令做了更精细的智能解析(_rm_risk):不只匹配命令名,还会拆解旗标和删除目标,只有 rm -rf 且指向关键路径(如 /、~、系统目录)时才判定高危,普通的 rm 某个临时文件不会误拦。
命中高危后,会弹出人工确认,并提供几个选项:
y ------ 执行 n ------ 跳过 a ------ 本次会话全部放行 e ------ 编辑命令后执行
用户还可以在 config/dangerous.yml 里追加自定义高危规则,让安全边界跟随自己的生产环境。
网络设备更严:为什么多了一级「硬拒绝」
到了网络设备(华为 VRP),安全等级又加码了。原因很现实:Linux 服务器误操作,你还能通过另一条通道远程补救;但交换机一旦被误操作导致断网、配置丢失,Telnet 通道本身可能就断了,设备直接失联------没有第二次远程补救的机会。
所以 VRP 侧把规则分成更严格的两段:
|------------|----------------|-----------------------------------------------------|
| 级别 | 行为 | 示例 |
| 高危确认 | 人工确认后可执行 | reboot、save、接口 shutdown/restart、undo 敏感特性、设备升级、账号变更 |
| 硬拒绝 | 直接拒绝,连确认的机会都不给 | format、reset saved-configuration、恢复出厂、undo startup |
同时,巡检工具(net_exec)只开放 display / ping / tracert 等只读命令,想改配置必须走专门的配置下发工具(net_config),并自动进入系统视图、逐条检查、事后回读对比。这套「先读后写、改完必验」的流程,在第 4 篇讲 Telnet 网络设备接入时会完整展开。
边界与兜底:不止防「命令」这一件事
安全不只盯在命令上。这套程序还在另外两个入口做了防护:
- SFTP 上传:上传到 /etc、/usr、/boot 等系统敏感目录需要确认,防止通过传文件的方式搞坏系统。
- 本地知识库读取:读取 .env、密钥等敏感文件会被直接拒绝,防止 AI 在读取知识库时把凭据泄露出去。
这些都遵循同一个原则:凡是可能影响系统完整性、可能泄露凭据的操作,都必须留一道人审的闸门。
小结
这一篇讲了「凭什么敢让 AI 跑命令」的答案:不是靠模型的自觉,而是靠一道独立的安全层,用「只读直行 / 高危确认 / 毁灭性拒绝」的分级策略,把 AI 的每一次操作都放进规则里。Linux 和网络设备分别适配了不同的严格度------越是不可远程补救的系统,闸门收得越紧。安全不是 AI 的功能,而是程序的底线。