强制sudo提示输入密码


26

如果我执行以下操作:

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

sudo的第二次调用不会要求输入密码,因为即使我再次注销,但仍处于一定的时间限制内,这意味着无需再次提示输入密码。

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

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

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


如果仍然不能强迫sudo来提示输入密码,您可能还需要评论的用户规则提“NOPASSWD”如果他们出现在/etc/sudoers.d/目录中。我输入了该行#includedir /etc/sudoers.d/etc/sudoers尽管该行已被注释禁用,但看起来好像#之前includedir的注释未读!
baptx

Answers:


40

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

来自man sudo

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

-k单独使用时,通过将-k(kill)选项设置为Epoch来使用户的时间戳无效,从而使sudo无效。下次运行sudo时,将需要密码。此选项不需要密码,并且已添加该选项以允许用户撤消.logout文件中的sudo权限。

您也可以永久更改。来自man sudoers

timestamp_timeout

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


2
保重sudo -k command不会删除凭据。它只是忽略当前凭据,不存储它们。
user1346466 '16

只是添加到此。如果要更改时间戳超时,则需要使用来编辑sudoers文件sudo visudo。然后,将行添加到文件Defaults timestamp_timeout = 0中其他列表Defaults的末尾。再次将线路退出,以恢复为“正常”超时。
Floris


5

Shawn的答案很好,但是在这种情况下还有一个附加的配置选项可能会有用。

来自man sudoers

tty_tickets

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

默认情况下,此标志是打开的。

来自man sudo

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.