![要求特定命令的 sudo 密码](https://linux22.com/image/705028/%E8%A6%81%E6%B1%82%E7%89%B9%E5%AE%9A%E5%91%BD%E4%BB%A4%E7%9A%84%20sudo%20%E5%AF%86%E7%A0%81.png)
我尝试在每次执行特定命令时都强制输入密码,无论前一秒是否输入过密码。有办法吗?
谷歌上的每个搜索结果都只是解释了如何使用 NOPASSWD 删除密码提示,这是可以的,但我仍然希望特定命令在每次执行时都得到密码提示,即使密码是在一秒钟前输入的。
我的方法是这样的:
Defaults !authenticate
Cmnd_Alias WITHPW = rm -R, shutdown,
Defaults:WITHPW authenticate
有人可以解释一下这是否是正确的方法或者我该怎么做吗?
谢谢,
A/
答案1
两个选项之间存在差异:
authenticate
如果设置,用户必须通过密码(或其他身份验证方式)验证自己的身份,然后才能运行命令。此默认设置可以通过
PASSWD
和NOPASSWD
标签覆盖。此标志是在默认情况下。
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_List
或Cmnd_Alias
需要!
前缀时,结果为:
Cmnd_Alias WITHPW = /usr/bin/rm -R, /usr/sbin/shutdown
Defaults:!WITHPW passwd_timeout=0