linux中sudo超时由timestamp_timeout控制,默认15分钟;设为0每次需输密,-1永不过期(不安全),支持按用户/组在/etc/sudoers.d/中精细化配置,并可用sudo -k/-k临时干预缓存。

Linux 中 sudo 的超时与密码重输行为,由 timestamp_timeout 参数控制,不是“每次都要输”或“永远不输”的二选一,而是可精细调节的安全策略。默认值通常是 15 分钟(部分发行版为 5 分钟),但实际行为取决于配置位置、作用范围和取值含义。
正确设置 timestamp_timeout 参数
必须使用完整参数名 timestamp_timeout,写成 timeout= 或 passwd_timeout 均无效,会被 sudo 忽略。单位始终是分钟,支持整数和负数:
-
timestamp_timeout=0:每次执行 sudo 都强制输入密码 -
timestamp_timeout=-1:认证一次后,直到 shell 退出或系统重启才失效(高风险,不建议生产环境使用) -
timestamp_timeout=7:缓存 7 分钟,超时后需重输密码
推荐配置方式:用 /etc/sudoers.d/ 独立管理
直接编辑 /etc/sudoers 容易引发语法错误导致 sudo 失效。更安全的做法是:
- 为特定用户创建配置文件:
sudo visudo -f /etc/sudoers.d/myuser,写入Defaults:username timestamp_timeout=10 - 为用户组配置:
sudo visudo -f /etc/sudoers.d/admins,写入Defaults:%admin timestamp_timeout=5 - 所有配置文件需以 . 以外的字符结尾(如
myuser,不能叫myuser.),且权限应为0440
临时控制缓存状态的实用命令
无需修改配置,也能即时干预当前会话的密码缓存:
-
sudo -k:立即使当前用户的 timestamp 失效,下次 sudo 必须输密码 -
sudo -K:彻底清除时间戳文件(比-k更彻底,影响所有终端会话) -
sudo -v:刷新认证时间,延长缓存有效期(适合长时间操作前保活) -
sudo -l -k:先失效再列出权限,可快速验证是否已触发重输
验证配置是否生效
改完配置后,不要只靠等待测试。可结合以下方式确认:
- 运行
sudo -V | grep "timestamp timeout"查看 sudo 编译默认值(仅作参考) - 执行
sudo -l,若输出中包含类似(root) NOPASSWD: ALL则说明配置被读取成功 - 最可靠方法:执行一次 sudo 命令 → 等待设定时间 → 再执行 sudo,观察是否提示输密











