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

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

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

这是我第一次使用该终端,因此如果这是由于我不熟悉它而导致的,请告诉我。

输入密码并不总是会阻止我执行管理任务。我可以在软件中心安装软件,例如我安装了 Chrome(我曾用它来解决这个问题)。

答案1

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

当您想以 root 身份运行命令时,您可能可以通过使用 来解决这个问题,直到问题解决。请pkexec参阅“sudo也许 sudo 坏了” 请参阅下文以了解详情。

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

(除提问者之外遇到此问题的人都可以创建一个新问题,其中包含有关他们尝试此处的技术时发生的情况的信息。)


这种情况的基本情况

大多数情况下,当人们报告无法有效地输入密码时sudo在终端中,但至少在某些时候可以通过图形方式进行身份验证,这是因为他们没有意识到没有占位符(如*应该出现而在这里,似乎并非如此。如果您在按下之前正确且完整地输入了密码Enter,那么确实存在一些问题。

要弄清楚它是什么,需要更多信息。以下是一些可能导致sudo终端不接受密码(尽管您可以通过图形方式输入密码来安装软件)的可能原因。

1. 密码可能为空

由 Bruno Pereira 建议。

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

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

如果这不起作用,请尝试运行pkexec passwd $USER。(pkexec如果有可用的 GUI 并正常工作,它将以图形方式提示您输入密码,即使用于运行命令行界面命令。

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

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

如果您的密码包含除数字 (0-9)、大写字母 (AZ) 和小写字母 (az) 之外的字符,且不带重音符号,以及标点符号(这些符号出现在美式/英式键盘上),请将其更改为符合要求的字符。如果您使用的是其他语言环境,那么为了安全起见,您也可以(暂时)更改语言环境。

密码中通常可以包含空格,但既然您遇到了问题,不妨尝试不包含空格。它们相对不常见,因此密码中包含空格和其他一些情况可能会引发未被发现的错误。

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

即使密码中的所有一个或多个字符都是常用字符,更改密码仍然是一个好主意,看看是否能解决问题。此外,如果您更改密码但问题仍未解决,那么这也是一条重要信息。

我曾与遇到这种情况的人交谈过,他们说更改密码可以解决问题,尽管最初并没有什么特别错误或奇怪的地方。我怀疑问题可能与密码的存储方式有关,但也可能是通过设置密码恰好纠正了根本原因,或者是这种情况(尽管被不同的人反复报告)误报给我,或者是我误解了。

4. 也许你输入的内容与你想象的不一样

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

5. 你的终端可能误解了输入

也许显示的密码不是您实际输入的密码。要查看是否是这种情况,请执行以下操作:

  • 在不输入密码的情况下在终端中输入它(不要“运行”它,仍然不要告诉我们它是什么)。

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

  • 尝试一下虚拟控制台。按Ctrl++并查看是否可以登录。就像运行时一样,输入密码时看不到任何反应,这很正常。只需输入密码并在完成后按Alt即可。F1sudoEnter

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

    然后尝试实际运行sudo

    要返回 GUI,请按Alt+ F7

6. sudo 可能有效,但从命令行调用时无效

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

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

7. CLI 密码验证可能已损坏

如果存在常见问题sudo,导致命令行中询问密码的其他不同方式无法正常工作,则可能会发生这种情况。

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

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

8. sudo 可能坏了

尝试运行命令PolicyKitpkexec echo Success

将会出现一个 GUI 窗口并要求您输入密码;如果身份验证成功,Success则会出现在终端中。

如果此方法有效,则您可以解决该问题:使用pkexec而不是sudo

如果sudo它坏了,你也许可以修复它,这取决于出什么问题了sudo

8.1. 可能是安装混乱了。

尝试重新安装sudo

pkexec apt-get update && pkexec apt-get --purge --reinstall sudo

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

8.2. 可能sudo在 中配置有错误/etc/sudoers

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

pkexec grep Defaults /etc/sudoers

在 Ubuntu 中输出通常是:

Defaults    env_reset
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

如果您看到rootpwrunaspwtargetpw,则表示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

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

8.4. 这可能是PAM问题,表现异常。

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

  • 这有点牵强,因为通常你不需要输入密码根本当这个情况发生时。

要检查,请运行:

ls -ld /etc/pam.d
ls -l /etc/pam.d/sudo
cat /etc/pam.d/sudo

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

$ 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

如果任何大胆的文字不同根本,这表明存在问题。

我从上游得到了这个想法sudo 故障排除页面(但该页面确实不是表明问题将会以这种方式发生)。

9. 也许是别的什么

也许上述所有情况都不能解决您的问题。或者问题在于sudo坏了,但上述所有子情况都不适用。

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

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

此答案经过轻微修改后,从这个问题(它实际上不属于此处,因为不清楚 OP 是否真的存在此问题)。谢谢格特夫戴克帮助我认识到其中的歧义并建议将其发布到其他地方。(不过,他对此处的任何错误概不负责。)

答案2

sudo也不接受我的密码。因为我添加了

auth required pam_tally.so per_user magic_root onerr=fail

到顶部,/etc/pam.d/common_auth尝试在 3 次密码尝试失败后创建 10 分钟的延迟。删除这一行解决了我的问题。

答案3

不要忘记检查/var/log/auth.log看看你的sudo-ing 发生了什么。

就我而言,我看到了消息sudo: PAM (sudo) illegal module type: i

通过这条消息进行谷歌搜索,我找到了答案:由于某种原因,当我Unity在 Ubuntu 18.04 上安装并重新配置时lightdm,一些代码修改了文件/etc/pam.d/common-session-noninteractive。我在该文件中实际看到的只是:

i#
# /etc/pam.d/common-session-noninteractive - session-related modules
# common to all non-interactive services
...

i是的,文件中的第一个符号只是小写字母。这很令人震惊,但不知何故发生了!

我已经以恢复模式(以 root 身份)重新启动了系统,并i从文件中删除了此文件,现在sudo一切正常!

答案4

作为一种解决方法,您可以使用gksudo而不是sudo直到问题的根本原因得到解决。

相关内容