当我sudo
以普通非特权用户身份运行时,它会要求输入我的密码,而不是 root 密码。这通常很方便,但它减少了以 root 身份运行命令所需的信息量。那么我怎样才能要求sudo
输入 root 密码而不是调用用户的密码呢?
我知道可以用一行来完成/etc/sudoers
,但我似乎无法正确地解析手册页中的 BNF 语法来弄清楚到底要写什么。
答案1
好的,它再次显示出来,以便您可以设置复选标记。
在 中/etc/sudoers
添加以下行:
Defaults rootpw
打开 rootpw 标志,让 sudo 询问 root 密码。
答案2
您需要打开rootpw
标志。
答案3
一种常见的配置,需要目标的密码(这不是我们想要的):
Defaults targetpw
ALL ALL=(ALL) ALL
第二行会大声读出:“所有主机上的所有用户在执行所有命令时都可以模拟(所有)用户。”并且意味着Defaults targetpw
他们需要知道他们模仿的用户的密码才能这样做。
天真地将这个简单的配置更改为:
Defaults rootpw
不会让任何用户或组拥有以其他用户身份运行命令的权限。
一个可行的方案是:
Defaults rootpw
myuser ALL=(ALL) ALL
用简单的英语来说,myuser
现在只要知道 root 密码,就可以以任何用户的身份在所有主机上运行所有命令。
另一个可行的方案是:
Defaults rootpw
%sudousers ALL=(ALL) ALL
sudousers
只要知道 root 密码,该组的任何成员都可以以任何用户身份在所有主机上运行所有命令。要允许myuser
运行 sudo 命令,sudousers
需要将其添加到其次要组中。
su
usermod -a -G sudousers myuser
exit
编辑:关于例外和范围的澄清示例:
Defaults rootpw
myuser ALL=(ALL) ALL
%sudousers ALL=(ALL) ALL
Defaults:%sudousers !rootpw
这需要myuser
知道 root 密码,但要求sudousers
组中的任何成员使用自己的密码。请注意,如果myuser
是成员,sudousers
则此行为也会覆盖rootpw
他们(最后一个匹配的条目覆盖先前的条目)。
答案4
您可以关闭 sudo 并使用su -c
。