使用 sudo 执行命令的密码会缓存多长时间?

使用 sudo 执行命令的密码会缓存多长时间?

如果我运行需要 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

相关内容