如果我运行需要 root 权限的命令sudo
,系统会要求我输入当前用户的密码。之后一段时间,如果我使用 执行相同类型的命令sudo
,就不会再次要求我输入密码。所以我的猜测是密码被缓存在某个地方直到过期。这个过期时间是多长?可以配置吗?
答案1
man 5 sudoers
通知我们有一个选项timestamp_timeout
:
timestamp_timeout
sudo 再次请求密码之前可以经过的分钟数。如果微小粒度不够,则超时可以包括小数部分,例如 2.5。默认值为 5。将其设置为 0 以始终提示输入密码。如果设置为小于 0 的值,则用户的时间戳永远不会过期。这可用于允许用户分别通过“sudo -v”和“sudo -k”创建或删除自己的时间戳。
所以是的,它可以通过配置/etc/sudoers
,默认情况下它会在 5 分钟后过期。
另外,请记住使用visudo
对 进行任何编辑/etc/sudoers
。保存编辑时,visudo
将在实际覆盖 sudoers 文件之前运行有效性检查。如果您将自己锁定在sudo
访问之外,这可以保护您免受痛苦的恢复过程。
答案2
这取决于您的配置。大多数发行版(以及源代码中)的默认值为 5 分钟,但您可以使用timestamp_timeout
中的选项更改它/etc/sudoers
。从man sudoers
:
sudo 再次请求密码之前可以经过的分钟数。如果微小粒度不够,则超时可以包括小数部分,例如 2.5。默认值为 5。将其设置为 0 以始终提示输入密码。如果设置为小于 0 的值,则用户的时间戳永远不会过期。这可用于允许用户分别通过“sudo -v”和“sudo -k”创建或删除自己的时间戳。
例如,要将用户的超时设置chris
为 20 分钟,请将以下内容添加到/etc/sudoers
、 或 中的文件中/etc/sudoers.d
(注意:这些文件中规则的顺序和这些文件的顺序很重要,请确保它不会无意中被稍后执行的规则覆盖):
Defaults:chris timestamp_timeout=20