当我在终端中使用 sudo 时,即使我知道密码是正确的,它也不被接受,而是得到某种“巨魔”回复,有什么原因吗?
当我使用“su root”时,它工作得很好。所以看起来 sudo 这里有问题。
我确实知道一个事实(因为读过相关内容),几个月前发现了 sudo 中的一个启用恶意攻击的故障,该故障实际上应该已经存在很多年了,并且影响了 16 到 20 之间的所有 sudo 版本。安装的版本这里(Porteus 3.2.2 86-64 基于 Slackware 并使用其存储库)是 20p2,当我寻找更新时,没有 sudo 的更新。
这个问题可能与那个故障有关吗?
答案1
我会尽力澄清一些我认为让您感到困惑的事情。
sudo
。此命令“super user do”允许列出的用户
/etc/sudoers
以 root 身份(作为“超级用户”)运行命令使用自己的密码。这通常是通过添加一个组来配置的/etc/sudoers
,该组的所有成员都将有权使用sudo
。如果您查看/etc/sudoers
文件,您应该会看到类似以下内容:%wheel ALL=(ALL) ALL
这意味着“允许组wheel的所有成员使用sudo运行命令”。许多系统使用组
sudo
来代替,但它的想法是相同的:%sudo ALL=(ALL:ALL) ALL
如果您的用户是相关组的成员,您将能够通过将自己验证为普通用户来使用 sudo 运行命令。因此 sudo 使用普通用户的密码。
su
该命令允许您以不同的用户身份登录(“切换用户”,但也称为“超级用户”,因为它通常用于切换到 root)。为此,系统会要求您输入要登录的用户的密码。因此,当您运行时
su root
,系统将提示您输入root密码而不是您自己的用户密码。“侮辱”
这是一个愚蠢的小选项,
sudo
告诉您侮辱提供错误密码的用户。从man sudoers
:insults If set, sudo will insult users when they enter an incorrect password. This flag is off by default.
这只是为了好玩。如果您的系统在您输入错误密码时对您进行严厉批评,那么您会看到如下所示的一行
/etc/sudoers
:Defaults insults
要删除此“功能”,请运行
sudo visudo
并删除该行。
总而言之,您在系统上配置了两个密码,两个用户各一个。您的普通用户(我们称他为“ben”)有一个密码(假设为“obiwan”),root 用户有另一个密码(假设为“kenobi”)。当您运行时sudo command
,您需要以“ben”身份进行身份验证,因此您需要输入obiwan
密码。当您运行su
或su root
(相同的事情)时,您需要以 root 身份进行身份验证,因此您需要输入kenobi
密码。
很重要:如果您想进行任何更改/etc/sudoers
,请使用visudo
.绝不直接编辑该文件。visudo
将为您检查语法并阻止您进行破坏语法的更改。如果直接编辑并犯了错误,则很难修复。请注意,默认情况下visudo
运行vi
,因此如果您不熟悉那个相当特殊的编辑器,请改用以下命令:
sudo EDITOR=/sbin/nano visudo