如何使sudo要求输入root密码?


25

当我sudo以普通的非特权用户身份运行时,它将要求输入密码,而不是root密码。这通常很方便,但是它减少了以root用户身份运行命令所必需的信息量。那么,如何sudo要求输入root密码而不是调用用户的密码?

我知道可以用in来完成/etc/sudoers,但是我似乎永远无法正确解析手册页中的BNF语法以弄清楚要写什么。


我建议您限制非root用户允许的命令,以便您不必担心公开任意命令。
Slartibartfast

@slartibartfast:但是,当我需要以不在预批准列表中的根用户身份运行命令时会发生什么?
David

Answers:


25

好的,再次出现,您可以设置选中标记。

在中/etc/sudoers,添加以下行:

Defaults rootpw

打开rootpw标志,使sudo询问root密码。


7
您应该始终使用visudo命令而不是手动编辑/etc/sudoers文件。 visudo在保存之前验证文件以确保其正确无误,因此,如果您遇到语法错误,就不会被sudo锁定... askubuntu.com/a/81054/166411
Colin D Bennett


3

我知道这个问题很旧,但这是我在此用例中发现的最简洁的问题(虽然这是一个很小的百分比,是正确的,但在正确的情况下是有帮助的)。

将各种来源的所有步骤放在一起-包括对该问题的多个答案后,这些步骤适用于Ubuntu-Gnome 16.04 LTS:

  1. 为root设置密码
    • 这是关键要做第一!(由于标准的安全配置,Ubuntu自动为ROOT用户没有密码。
    • 如果您不首先执行此操作,则将无法访问root特权。可以通过使用Live Disk引导,安装硬盘驱动器并编辑sudoers文件来解决此问题,但是最好避免这种情况。
    • 打开一个终端并输入: sudo passwd
    • 为ROOT用户设置新密码。
  2. 更改SUDO配置以要求root密码
    • SUDO要求用户请求root特权
    • 相反,设置“ rootpw”标志会告诉SUDO需要root用户的密码。
    • 打开一个终端并输入: sudo visudo
    • 这将打开“ / etc / sudoers”文件
    • 在其他“默认值”行之后,添加: Defaults rootpw
    • 保存(假设您位于nano中,这是默认设置,这是CTRL + O)
    • 关闭文件(CTRL + X)并退出终端
  3. 你完成了!

简要说明一下-我还想确保不能使用root用户从图形登录中登录,因此正在研究排除的方法。显然,默认情况下,root用户已被排除,并且不能用于通过Gnome图形登录进行登录-这是非常好的事情!


您能建议改进以扭转投票否决吗?
SRDC 2016年

似乎没有错。
Ruslan

1
可能是由于以下简单(有效的)配置:root ALL=(ALL) ALL Defaults targetpw ALL ALL=(ALL) ALL 允许每个知道root密码的用户使用root sudo。天真的更改解决方案的最后两行Defaults rootpw会导致锁定sudo。您还需要添加用户,sudoers例如:myusername ALL=(ALL) ALL或为组授予类似的特权,然后添加myusername到该组。
Paul Parker

1

需要目标密码(不是我们想要的密码)的常见配置:

Defaults targetpw
ALL ALL=(ALL) ALL

第二行将大声读出,例如:“所有主机上的所有用户都可以在执行ALL命令时模拟(ALL)用户”。以及Defaults targetpw他们需要知道他们要假冒的用户密码的方式。

天真地将此简单配置更改为:

Defaults rootpw

不会让任何用户或组具有以其他用户身份运行命令的特权。

一种可行的可能性是:

Defaults rootpw
myuser ALL=(ALL) ALL

用通俗易懂的英语讲,myuser只要知道root密码,现在就可以在所有主机上以任何用户身份运行ALL命令。

另一个可行的方法是:

Defaults rootpw
%sudousers ALL=(ALL) ALL

sudousers只要知道root密码,该组的任何成员都可以像ALL主机上的任何用户一样运行ALL命令。为了允许myuser运行sudo命令,sudousers需要将其添加到辅助组中。

su
usermod -a -G sudousers myuser
exit

很好的解释。比我发布的分步指南(基于Ubuntu默认设置)更详细。
SRDC

0

您可以关闭sudo并使用su -c


不方便,因为每次运行密码时都必须输入密码。这里的用例是必须快速连续以root用户身份运行多个命令。
David Z'7

-1

使用

苏多苏

将允许您连续运行任意数量的命令。


2
好主意,但是除非我更改sudo为提示输入root密码,否则这仍然允许某人仅提供一个密码(而不是root的密码)来获得root访问权限。因此,它并没有真正解决引发我问题的安全问题。
David Z

您没有使用sudo的功能来限制用户的访问权限,而是向许多用户公开了root密码。您还将通过从root用户删除密码来删除保护服务器安全的功能。
BillThor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.