如果我执行以下操作:
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
注销脚本。)