强制 sudo 提示输入密码

强制 sudo 提示输入密码

如果我执行以下操作:

sudo su -
//enter password
exit
exit
//login again straight away
sudo su -

第二次调用 sudo 不会请求密码,因为即使我再次注销,我仍然在某个时间限制内,这意味着我不需要再次提示我输入密码。

因为我正在尝试一些新的权限以确保它们正常工作,所以在等待超时发生时这确实减慢了我的速度。

我可以运行命令来重置超时吗?

顺便说一句,我不想​​更改超时或影响其他用户!

答案1

sudo -k将杀死超时时间戳。您甚至可以在之后输入命令,例如sudo -k test_my_privileges.sh

man sudo

-K-K(确保终止)选项与 -k 类似,不同之处在于它完全删除用户的时间戳,并且不能与命令或其他选项结合使用。此选项不需要密码。

-k当单独使用时,sudo 的 -k(kill)选项通过将时间设置为 Epoch 来使用户的时间戳无效。下次运行 sudo 时将需要密码。此选项不需要密码,添加此选项是为了允许用户从 .logout 文件撤销 sudo 权限。
当与可能需要密码的命令或选项结合使用时,此选项将导致 sudo 忽略用户缓存的凭据。因此,sudo 将提示输入密码(如果安全策略需要密码),并且不会更新用户的缓存凭据。

您也可以永久更改它。从man sudoers

时间戳超时

sudo 再次请求密码之前可以经过的分钟数。如果微小粒度不够,则超时可以包括小数部分,例如 2.5。默认值为 5。将其设置为 0 以始终提示输入密码。如果设置为小于 0 的值,则用户的时间戳永远不会过期。这可用于允许用户分别通过 sudo -v 和 sudo -k 创建或删除自己的时间戳。

答案2

肖恩的回答很好,但还有一个额外的配置选项在这种情况下可能有用。

man sudoers

tty_门票

如果设置,用户必须基于每个 tty 进行身份验证。启用此标志后,sudo 将使用用户时间戳目录中以用户登录的 tty 命名的文件。如果禁用,则使用目录的时间戳。

该标志默认打开。

man sudo

当在 sudoers 中启用 tty_tickets 选项时,时间戳具有每个 tty 的粒度,但仍然可能比用户会话的寿命更长。在使用 devpts 文件系统的 Linux 系统、具有设备文件系统的 Solaris 系统以及使用 devfs 文件系统(在创建设备时单调增加设备 inode 数量)的其他系统(例如 Mac OS X)上,sudo 能够确定基于 tty 的时间戳文件何时过时并将忽略它。 管理员不应依赖此功能,因为它并非普遍可用。

我认为它相对较新。如果您的系统支持,如果您注销然后登录,sudo 将再次请求您的密码。 (我的 shell 中也有sudo -K注销脚本。)

相关内容