linux中sudo密码缓存时间由timestamp_timeout控制,默认ubuntu/debian为15分钟、centos/rhel为5分钟;可通过sudo visudo修改为30分钟(defaults timestamp_timeout=30)、禁用(=0)或永久有效(=-1),亦可按用户或通过/etc/sudoers.d/单独配置。

Linux 系统中 sudo 默认会缓存密码,但这个缓存时间较短(Ubuntu/Debian 默认 15 分钟,CentOS/RHEL 默认 5 分钟),频繁执行 sudo 命令时仍需反复输入密码。要延长或调整缓存时间,核心是修改 timestamp_timeout 参数,它控制时间戳文件的有效期。
查看当前缓存剩余时间
运行以下命令可刷新时间戳并显示当前有效期状态:
-
sudo -v:验证身份并重置倒计时(例如从剩 2 分钟恢复为满额) -
sudo -l:列出权限的同时也会触发时间戳更新 -
sudo -k:立即作废时间戳,下次 sudo 必须重新输密码(可用于测试配置是否生效)
修改全局密码缓存时间
必须使用 sudo visudo 安全编辑 /etc/sudoers,避免语法错误导致 sudo 失效:
- 设为 30 分钟:
Defaults timestamp_timeout=30 - 每次执行都需输密码:
Defaults timestamp_timeout=0 - 永久有效(登出或手动清除前不超时):
Defaults timestamp_timeout=-1(不推荐用于共享或生产环境)
该设置对所有用户生效。如仅针对某用户,写成:Defaults:username timestamp_timeout=20。
按用户或场景单独配置更安全
推荐将自定义规则放在 /etc/sudoers.d/ 目录下,便于维护和隔离:
- 新建配置文件:
sudo visudo -f /etc/sudoers.d/timeout-30 - 添加内容:
Defaults:alice timestamp_timeout=30 - 设置权限:
sudo chmod 0440 /etc/sudoers.d/timeout-30
文件名建议用小写字母加连字符,结尾为 .conf(部分系统要求),且不能含点或下划线。
注意缓存机制的边界条件
sudo 密码缓存不是跨终端、跨会话的:
- 新开一个终端窗口或 SSH 连接,需重新认证
- 关闭 shell 后重新登录,时间戳清空
- 执行
sudo -k或系统重启后立即失效 - 即使配置了缓存,若 sudoers 中设置了
NOPASSWD规则,则完全跳过密码验证——这是另一套机制,与时间戳无关











