在命令行提示符中查看 sudo 模式是否开启(密码已缓存)

在命令行提示符中查看 sudo 模式是否开启(密码已缓存)

我想知道是否可以在命令行上(最好是在提示符中)指示sudo 模式已打开。

经过sudo 模式我的意思是我已经在这个 shell 会话中正确输入了一次密码,并且它还没有过期,但仍然被缓存了。

换句话说,我能否以某种方式知道sudo我要运行的命令是否会要求我输入密码或是否会使用缓存的凭据?

答案1

长期以来,我一直在使用

sudo -S true < /dev/null 2> /dev/null

您可以尝试一下,但是最近的更新似乎破坏了这一点,因为我现在遇到了分段错误。

您可以尝试sudo -n true 2> /dev/null(否-v)。这似乎对我有用,无需更新超时。

您可以在提示符下以各种方式执行此操作,包括:

PS1='\u:\w$(sudo -n true 2> /dev/null && echo " : sudo :") \$ '

这取决于promptvars默认启用的选项。

请注意,一旦发出提示,指示器就不会再更新。因此,如果提示一直停留在那里直到超时到期,则sudo即使已过期,也可能表示该提示处于活动状态。

答案2

没有命令可以直接显示缓存凭据的剩余时间,您必须编写脚本。

https://unix.stackexchange.com/questions/115506/sudo-testing-for-credentials

sudo -nv 2> /dev/null

如果密码被缓存,将给出退出值 0,您可以修改该链接中的脚本或编写自己的脚本。

或者,时间戳存储在其中,/var/lib/sudo因此您可以编写脚本来显示或检查时间戳。

相关内容