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

Byt*_*der 5 command-line sudo password prompt ps1

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

通过sudo 模式,我的意思是我已经在此 shell 会话中正确输入了一次密码,并且该密码尚未过期但仍被缓存。

换句话说,我能否以某种方式判断sudo我要运行的命令是否会询问我的密码或是否会使用缓存的凭据?

Den*_*son 4

很长一段时间以来,我一直在使用

sudo -S true < /dev/null 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

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

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

您可以通过多种方式在提示符中执行此操作,包括:

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

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

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