人人都会AI编程

6.4 命令执行权限与安全确认

更新时间:2026-06-28

在生产环境中执行命令前,养成"三看一确认"的习惯,能有效避免80%的误操作事故。

1. 身份与权限确认
执行敏感操作前,先确认当前身份:

whoami          # 确认当前用户
pwd             # 确认当前路径(防止在根目录或错误目录操作)
echo $HOSTNAME  # 确认当前机器(避免在master节点执行slave操作)

如需提权,避免直接使用su切换后长时间操作,建议采用:

sudo -u [目标用户] [具体命令]   # 最小权限原则,执行完立即降权

2. 高危命令风险识别
以下命令执行前必须二次确认,建议设置别名增加缓冲:

| 危险命令 | 风险点 | 安全替代方案 |
|---------|--------|-------------|
| rm -rf / | 删除根目录 | 使用rm -itrash工具,禁止在脚本中使用-f |
| > /var/log/xx | 清空日志 | 先cp备份,使用echo "" >而非直接重定向 |
| dd if=/dev/zero of=/dev/sda | 覆盖磁盘 | 必须双人对of参数进行肉眼校验 |
| chmod -R 777 / | 权限失控 | 使用find /path -type f -exec chmod 644 {} \;替代递归 |

3. 二次确认机制
对于批量操作或数据变更,强制添加确认步骤:

# 示例:删除30天前日志前,先查看影响范围
find /logs -name "*.log" -mtime +30 | wc -l
read -p "确认删除上述 [$(find /logs -name "*.log" -mtime +30 | wc -l)] 个文件? (yes/no): " confirm
[[ $confirm == "yes" ]] && find /logs -name "*.log" -mtime +30 -delete

4. 审计留痕
关键系统开启命令审计,便于事后追溯:

# 在.bash_profile中添加
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

5. 紧急回滚准备
执行不可逆操作前,确保有退路:

  • 数据库操作:先mysqldump或创建快照
  • 配置文件修改:先cp xxx.conf xxx.conf.$(date +%Y%m%d)
  • 使用script命令记录终端会话:script -q operation.log

实操 checklist:

  • [ ] 如果是rm/drop/delete类操作,是否已备份?
  • [ ] 如果是批量循环(for/while),是否先用echo干跑测试?
  • [ ] 如果是跨服务器操作,是否确认目标IP(避免把10.0.1.2打成10.0.2.1)?
  • [ ] 命令执行后,是否立即验证结果(如检查进程状态、数据条数)?

切记: 没有-f(force)解决不了的问题,如果有,那就是灾难的开始。生产环境禁用-f参数,宁可多敲几次确认键。