将 timestamp_timeout 设为 0 可实现每次 sudo 均需输入密码;通过 sudo visudo 修改配置,支持全局或指定用户(如 Defaults:ops timestamp_timeout=0);临时生效可用 sudo -k;需确保无 NOPASSWD 规则覆盖。

把 sudo 的密码超时设为 0,就能实现每次执行都强制输密码。
修改 timestamp_timeout 为 0
这是最直接、最标准的做法。sudo 默认会缓存一次认证结果(时间戳),在有效期内免密。只要把这个有效期设为 0,就表示“不缓存”,每次调用 sudo 都必须重新验证。
- 运行
sudo visudo安全编辑配置文件 - 在文件中添加或修改这一行:
Defaults timestamp_timeout=0 - 保存退出(通常是 Ctrl+X → Y → Enter)
也可以针对特定用户设置
如果只想让某个用户(比如运维账号 ops)每次输密,而其他用户保持默认行为,可以加用户名限定:
- 在
/etc/sudoers中添加:Defaults:ops timestamp_timeout=0 - 这样只影响
ops用户,不影响其他人或全局策略
临时生效:不用改配置也能立刻要求重输
如果你只是当前会话想强制验证,不需要永久修改配置:
- 运行
sudo -k:立即作废当前的时间戳,下次 sudo 就必须输密码 - 再配合
sudo -v可以手动刷新并重置倒计时,但设为 0 后它就无效了
注意别误配 NOPASSWD
确保没有类似下面的免密规则存在,否则会覆盖超时设置:
username ALL=(ALL) NOPASSWD: ALL%sudo ALL=(ALL) NOPASSWD: ALL
这类规则优先级更高,即使 timestamp_timeout=0,只要匹配 NOPASSWD,依然不弹密码。


















