sudo 凭据缓存为什么要收紧
sudo 默认在一次成功认证后缓存约 5 分钟,期间再执行 sudo 不需要重新输入口令。单人独占的笔记本上这很方便,共享的跳板机与运维机上等于给后来者留下免密提权窗口。收紧缓存时间并开启提权审计,才符合共享环境的安全预期。
基本信息
| 适用平台 | Linux/macOS(sudo 1.8+) |
|---|---|
| 配置文件 | /etc/sudoers 或 /etc/sudoers.d/ 下的独立文件 |
| 关键参数 | timestamp_timeout、use_pty、logfile、log_input/log_output |
| 强制要求 | 所有修改必须用 visudo 或 visudo -c 校验 |
典型使用场景
- 共享跳板机:缩短缓存时间,避免后来的登录者直接拿到提权能力
- 合规审计:把提权命令与输入输出落盘,满足运维操作留痕要求
- 批量运维环境:确认自动化的 sudo 调用方式,避免缓存设为 0 导致脚本卡住
- 故障排查:用 sudo -l 与日志确认某个用户实际拥有哪些提权权限
sudoers 配置
sudoers 配置
# 用 visudo 打开独立文件,避免直接编辑主文件
# visudo -f /etc/sudoers.d/99-hardening
Defaults timestamp_timeout=5
Defaults use_pty
Defaults logfile=/var/log/sudo.log
Defaults log_input, log_output
# 校验语法后再生效(visudo 保存时已校验,这里做二次确认)
visudo -c核验
核验
# 查看当前用户可用的提权权限
sudo -l
# 确认版本与编译参数,判断是否支持日志相关选项
sudo -V | head -5
# 查看提权日志
ls -l /var/log/sudo.log 2>/dev/null && tail -5 /var/log/sudo.log参数读法
| 参数 | 含义 | 取值建议 |
|---|---|---|
| timestamp_timeout | 认证缓存分钟数 | 共享环境取 5 或更短;0 表示每次都问 |
| use_pty | 在伪终端中运行命令 | 开启,可防止部分绕过与输出丢失 |
| logfile | 记录执行的命令 | 单独指定文件便于集中采集 |
| log_input / log_output | 记录完整输入输出 | 审计价值高,但日志本身属敏感数据 |
log_input 与 log_output 会记录完整会话内容:审计价值高,泄露风险同样高,日志目录权限应为 750 以上并限定读取者。
改 sudoers 必须用 visudo:语法错误的 sudoers 文件会让所有提权操作失效,届时只能靠单用户模式或救援控制台修复。
改动前保留一个已获得 root 权限的会话:若新配置有误,仍可用该会话回滚,这是所有提权相关变更的通用纪律。