要求特定命令的 sudo 密码

要求特定命令的 sudo 密码

我尝试在每次执行特定命令时都强制输入密码,无论前一秒是否输入过密码。有办法吗?

谷歌上的每个搜索结果都只是解释了如何使用 NOPASSWD 删除密码提示,这是可以的,但我仍然希望特定命令在每次执行时都得到密码提示,即使密码是在一秒钟前输入的。

我的方法是这样的:

Defaults               !authenticate
Cmnd_Alias             WITHPW = rm -R, shutdown,
Defaults:WITHPW        authenticate

有人可以解释一下这是否是正确的方法或者我该怎么做吗?

谢谢,

A/

答案1

两个选项之间存在差异:

authenticate

如果设置,用户必须通过密码(或其他身份验证方式)验证自己的身份,然后才能运行命令。此默认设置可以通过PASSWDNOPASSWD标签覆盖。此标志是默认情况下。

passwd_timeout

sudo 密码提示超时或0不超时之前的分钟数。如果分钟精度不够,超时可能包含小数部分,例如2.5。默认值为5

虽然您可以同时设置两者Cmnd_Alias,但这passwd_timeout对于您想要实现的目标来说是正确的选择。

然后,让我们看一下的语法Defaults

Default_Type ::= 'Defaults' |
                 'Defaults' '@' Host_List |
                 'Defaults' ':' User_List |
                 'Defaults' '!' Cmnd_List |
                 'Defaults' '>' Runas_List

Default_Entry ::= Default_Type Parameter_List

Parameter_List ::= Parameter |
                   Parameter ',' Parameter_List

Parameter ::= Parameter '=' Value |
              Parameter '+=' Value |
              Parameter '-=' Value |
              '!'* Parameter

当指定Cmnd_ListCmnd_Alias需要!前缀时,结果为:

Cmnd_Alias          WITHPW = /usr/bin/rm -R, /usr/sbin/shutdown
Defaults:!WITHPW    passwd_timeout=0

相关内容