图形认证工作;为什么 sudo 说我的密码错误?

Nem*_*emo 6 root sudo authentication password

我正在尝试安装一个主题,当我输入命令时sudo cp -r $HOME/Desktop/Overglossed /usr/share/themes,终端要求我输入我输入的sudo密码,但是我被告知我的密码错误。这里有什么问题?我用相同的密码登录,我没有大写锁定或类似的东西。

这是我第一次使用终端,所以如果这是由于我不熟悉它,请告诉我。

我并不总是因为输入密码而无法执行管理任务。我可以在软件中心安装软件,例如我安装了 Chrome(我曾经在这个问题上工作过)。

Eli*_*gan 17

首先......一个可能的解决方法

您很可能可以解决此问题,直到通过使用pkexec来代替sudo您想以 root 身份运行命令的时间来解决该问题。有关详细信息,请参阅下面的“也许 sudo 已损坏”。

不确定这会起作用。如果没有,此处的其他解决方案或解决方法之一可能会。如果没有,这可能仍会帮助您收集有关问题的信息,您可以将这些信息添加到您的问题中。

(除了这个问题的提问者之外,有这个问题的人可以创建一个新问题,其中包含他们尝试这里的技术时发生的事情的信息。)


这种情况的基础

大多数时候,当人报告他们不能有效地输入自己的密码,sudo在终端,但可以用它以图形验证至少在某些时候,那是因为他们没有意识到,没有占位符字符(像*)是应该到出现。在这里,似乎并非如此。如果您在按 之前正确完整地输入了密码Enter,则确实存在一些问题。

要弄清楚它是什么,需要更多信息。sudo即使您可以以图形方式输入密码来安装软件,以下是在终端中不接受密码的一些可能原因。

1. 可能密码为空

由布鲁诺·佩雷拉推荐。

如果您的密码为空,即零个字符长,即您只需Enter在要求输入密码时按,请将其更改为非空的内容。

您很可能可以在系统设置中更改密码(因为您至少可以以图形方式执行一些管理任务)。如果这不起作用,并且您可以安装软件,则可以安装gnome-admin-tools安装 gnome-admin-tools,运行users-admin(另一个图形实用程序),然后以这种方式更改密码。

如果这不起作用,请尝试运行pkexec passwd $USER. (pkexec如果 GUI 可用且工作正常,即使用于运行CLI命令,也会以图形方式提示您输入密码。)

如果这不起作用,请尝试这些方法中的任何一种;如果这不起作用,请尝试此方法

2. 密码可能包含奇怪的字符

如果您的密码包含数字 (0-9)、大写 (AZ) 和小写 (az) 字母以外的字符,没有重音符号,以及出现在美国/英语键盘上的标点符号,请更改密码。如果您使用不同的语言环境,那么为了安全起见,您也可以(暂时)更改语言环境。

密码中的空格通常很好,但是当您遇到问题时,尝试没有它们是有意义的。它们相对不常见,因此可能有一个未被发现的错误由密码中的空格和其他一些条件的组合触发。

3. 可能密码很普通,但存储错误

即使您密码的所有一个或多个字符都是常用的,更改密码以查看是否能解决问题仍然是一个好主意。此外,如果您更改了密码并且它不能解决您的问题,那也是另一个重要信息。

我曾在这种情况下与人们交谈过,更改密码可以解决问题,即使最初没有什么特别错误或奇怪的地方。我怀疑问题可能与密码的存储方式有关,但也可能是通过设置密码巧合纠正了根本原因,或者情况(尽管由不同的人反复)向我误报,或者我误解了。

4. 可能你输入的并不是你认为的那样

确保您的键盘布局与您输入密码时的想法一致。

5. 也许你的终端误解了输入

也许看到的密码不是您实际输入的密码。要查看是否是这种情况:

  • 不输入密码时在终端中输入它(不要“运行”它,也不要告诉我们它是什么)。

  • 在不同的终端应用程序中尝试。您正在使用终端;试试 xterm。(按Alt+F2并运行xterm。)

  • 虚拟控制台上试一试。按Ctrl+ Alt+F1看看是否可以登录。就像运行时一样sudo,输入密码时看不到任何事情是正常的。只需输入并在Enter完成后按即可。

    无论成功还是失败,了解它是否有效都提供了有用的信息。

    然后尝试实际运行sudo

    要返回 GUI,请按Alt+ F7

6. 也许 sudo 有效,但从命令行调用时无效

要检查这一点,请运行。系统会以图形方式提示您输入密码,但将在“幕后”使用。gksudo xclocksudo

如果可行——也就是说,如果出现了一个简单的图形时钟应用程序——那么就sudo可以运行,但是(假设当你尝试在另一个终端应用程序和虚拟控制台中运行它时它也失败了),它的方式有问题从命令行界面获取输入。

7. 可能是 CLI 密码认证失效了

如果有一个常见问题阻止sudo了在命令行上要求密码的其他不同方式正常工作,则可能会发生这种情况。

运行su $USER -c 'echo Success'。系统会提示您输入密码。输入它(同样,屏幕上没有任何显示是正常的),按Enter,然后查看是否Success出现。

如果您无法在那里通过身份验证,那么该问题会影响基于sudo终端和基于终端的su.

8.也许sudo坏了

尝试使用PolicyKit运行命令:pkexec echo Success

应该会出现一个 GUI 窗口并询问您的密码;如果认证成功,Success将出现在终端中。

如果这有效,您就有了解决问题的方法:使用pkexec代替sudo.

如果sudo损坏,您可能可以修复它,具体取决于以下问题sudo

8.1. 可能是安装出错了。

尝试重新安装sudo

pkexec apt-get update && pkexec apt-get --purge --reinstall sudo
Run Code Online (Sandbox Code Playgroud)

这可能会修复损坏或配置错误的安装。

8.2. 可能sudo/etc/sudoers.

对于与无法解释的密码身份验证失败相关的错误配置,请通过运行以下命令检查这些Defaults/etc/sudoers

pkexec grep Defaults /etc/sudoers
Run Code Online (Sandbox Code Playgroud)

在 Ubuntu 中,输出通常是:

Defaults    env_reset
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Run Code Online (Sandbox Code Playgroud)

如果您看到rootpwrunaspw、 或targetpw,这意味着sudo不一定要求您输入密码。

如果您收到提示[sudo] password for root:或而不是 ,则特别有可能出现这种情况。但无论如何都值得检查(因为它很容易检查)。[sudo] password for some-other-username[sudo] password for your-username

即使您没有看到这三个...pw术语中的任何一个,您仍然可能会看到一些错误;如果您的输出与pkexec grep Defaults /etc/sudoers上面显示的不同,您应该调查一下(例如,您可以在编辑问题时包含它,以提供有关尝试所有这些技术时发生的情况的详细信息)。

如果这没有显示任何内容,请查看所有/etc/sudoers. 您可以pkexec less /etc/sudoers在编辑器中使用或打开文件pkexec visudo。如果您没有发现任何错误,我建议您仍然在您的问题中发布文件的内容。

如果您发现问题/etc/sudoers并知道必须更改的内容,则可以使用 进行编辑pkexec visudo

8.3. 可能sudo/etc/sudo.conf.

通常在 Ubuntu 上,/etc/sudo.conf不存在。这很好——它在那种情况下正常工作。如果/etc/sudo.conf确实存在,则sudo可能被配置为以完全不同的方式工作。(或者它可能被配置为以完全相同的方式工作,并且与您的问题无关。或者介于两者之间。)

如果此文件存在,无论其中包含什么,请提供其完整内容。

如果 /etc/sudo.conf存在,默认情况下唯一未注释的行(即唯一不以 开头的行#)是:

Plugin sudoers_policy sudoers.so
Plugin sudoers_io sudoers.so
Run Code Online (Sandbox Code Playgroud)

这使用sudoers模块来控制 的安全策略和接口sudo。如果使用任何其他模块,情况可能会大不相同,因此这是非常相关的信息。

8.4. 也许这是一个 PAM 问题,呈现异常。

这有点牵强,但可能sudo配置为使用可插入的身份验证模块,并且其 PAM 配置有问题。

  • 这是一个延伸,因为通常不会要求您发生这种情况时输入密码。

要检查,请运行:

ls -ld /etc/pam.d
ls -l /etc/pam.d/sudo
cat /etc/pam.d/sudo
Run Code Online (Sandbox Code Playgroud)

终端中的文本应如下所示:

$ ls -ld /etc/pam.d
drwxr-xr-x 2 root root 4096 Jan 16 01:44 /etc/pam.d
$ ls -l /etc/pam.d/sudo
-rw-r--r-- 1 root root 239 May 31  2012 /etc/pam.d/sudo
$ cat /etc/pam.d/sudo
#%PAM-1.0

auth       required   pam_env.so readenv=1 user_readenv=0
auth       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
@include common-auth
@include common-account
@include common-session-noninteractive
Run Code Online (Sandbox Code Playgroud)

如果有任何的加粗文本的不同,在所有的,这说明一个问题。

我从上游sudo 故障排除页面得到了这个想法(但该页面并未暗示问题会以这种方式发生)。

9. 也许是别的

也许没有一种情况涵盖您的问题。或者也许问题在于它sudo被破坏了,但没有一个适用的子情况。

如果是这样,请不要放弃!(除非你要。)

只需提供尽可能多的信息,包括您尝试每种技术或诊断步骤时发生的情况。这可能会阐明这个问题。

这个答案是从这个问题(它并不真正属于它的地方,因为不清楚那里的 OP 是否真的有这个问题)稍微修改了一下感谢gertvdijk帮助我认识到那里的歧义并建议将其发布在其他地方。(但是,他不对此处的任何错误负责。)