图形认证工作; 为什么sudo说我的密码错了?
我正在尝试安装一个主题,当我输入命令sudo cp -r $HOME/Desktop/Overglossed /usr/share/themes
,终端要求输入我输入的sudo
密码,但我告诉我的密码是错误。 这里有什么问题? 我使用相同的密码登录,并且我没有上限或类似的东西。
这是我第一次使用终端,所以如果这是因为我不熟悉它,请告诉我。
通过输入密码,我并不总是无法执行管理任务。 我可以在软件中心安装软件,例如我安装了Chrome(我已经习惯了这个问题)。
首先……一个可能的解决方法
你可以解决这个问题,直到你想以root身份运行命令时使用pkexec
代替sudo
来解决它。 有关详细信息,请参阅下面的“ 可能sudo已损坏 ”。
这不确定这是否有效。 如果没有,这里的其他解决方案或解决方法之一可能。 如果没有,这可能仍然可以帮助您收集有关问题的信息,您可以将其添加到您的问题中。
(除了这个问题的提问者之外,有这个问题的人可以创建一个新问题,其中包含他们在这里尝试这些技术时发生的事情的信息。)
这种情况的基础
大多数情况下,当人们报告他们无法在终端中有效地输入sudo
的密码时,但至少在某些时候可以用图形方式对其进行身份validation,这是因为他们没有意识到没有占位符字符(如*
)是应该出现 。 在这里,似乎并非如此。 如果您在按Enter键之前正确输入了密码,那么确实存在一些问题。
要弄清楚它是什么,需要更多信息。 以下是sudo
不接受终端密码的一些可能原因,即使您可以以图形方式输入以安装软件。
1.密码可能是空白的
Bruno Pereira建议。
如果您的密码为空白,即零个字符长,即您只需在输入密码时按Enter键 ,请将其更改为非空白密码。
您可能可以在“系统设置”中更改密码(因为您可以以图形方式执行至少一些管理任务)。 如果这不起作用,并且您可以安装软件,则可以安装gnome-admin-tools ,运行users-admin
(另一个图形工具),并以这种方式更改密码。
如果这不起作用,请尝试运行pkexec passwd $USER
。 (如果GUI可用且工作正常, pkexec
将以图形方式提示您的密码,即使用于运行CLI命令。)
如果这不起作用,请尝试以下任何一种方法 ; 如果这不起作用,请尝试此方法 。
也许密码包含奇怪的字符
如果您的密码包含除了数字(0-9)之外的字符,没有重音符号的大写字母(AZ)和小写字母(az),以及美式/英式键盘上出现的标点符号,请更改密码。 如果您使用的是其他语言环境,那么为了安全起见,您也可以(暂时)更改您的语言环境。
密码通常很好,但是当你遇到问题时,没有密码就可以尝试。 它们相对不常见,所以可能会有一个未被发现的错误,它由一个密码与空格和其他条件的组合触发。
也许密码非常普通,但存储错误
即使您的密码的所有一个或多个字符都是常用的,更改密码以确定它是否能解决问题仍然是个好主意。 此外,如果您更改密码并且无法解决问题,那么这是另一个重要信息。
在这种情况下,我已经和人们交谈了,更改密码修复了问题,即使最初没有什么特别的错误或奇怪。 我怀疑问题可能与密码的存储方式有关,但可能是通过设置密码巧合地纠正了根本原因,或者情况是(尽管是不同的人一再重复)误报给我,或者说我误解了。
也许你没有打字你的想法
输入密码时,请确保您的键盘布局符合您的想法。
5.也许你的终端错误解释输入
也许正在看到的密码不是您实际输入的密码。 要查看是否是这种情况:
-
不输入密码时在终端输入密码(不要“运行”它,但仍然不告诉我们它是什么 )。
-
在不同的终端应用程序中尝试它。 你正在使用终端; 试试xterm。 (按Alt + F2并运行
xterm
。) -
在虚拟控制台上试用它。 按Ctrl + Alt + F1 ,看看是否可以登录。就像运行
sudo
时一样,输入密码时看不到任何事情是正常的。 只需输入,然后在完成后按Enter键 。无论成功还是失败,了解它是否有效都可以提供有用的信息。
然后尝试实际运行
sudo
。要返回GUI,请按Alt + F7 。
6.也许sudo工作,但不是从命令行调用时
要检查这一点,请运行gksudo xclock
。 系统会以图形方式提示您输入密码,但sudo
将在“引擎盖下”使用。
如果这样做 – 也就是说,如果出现一个简单的图形时钟应用程序 – 那么sudo
可以工作,但是(假设当你尝试在另一个终端应用程序和虚拟控制台中运行它时它也失败了),它的方式有问题从命令行界面获取输入。
7.可能CLI密码validation已损坏
如果存在一个常见问题,即在工作中阻止sudo
和其他在命令行上请求密码的不同方法,则可能会发生这种情况。
运行su $USER -c 'echo Success'
。 系统将提示您输入密码。 输入(再次,屏幕上没有任何内容显示正常),按Enter键 ,查看是否显示Success
。
如果您无法通过身份validation,则问题会影响基于终端的sudo
和基于终端的su
。
也许sudo是破碎的
尝试使用PolicyKit运行命令: pkexec echo Success
应该出现一个GUI窗口,询问您的密码; 如果validation成功,则Success
将出现在终端中。
如果这样pkexec
,则可以解决此问题:使用pkexec
而不是sudo
。
如果sudo
坏了,你可以修复它,具体取决于sudo
错误 :
8.1。 也许安装搞砸了。
尝试重新安装sudo
:
pkexec apt-get update && pkexec apt-get --purge --reinstall sudo
这可能会修复已损坏或配置错误的安装。
8.2。 也许sudo
在/etc/sudoers
配置错误。
对于与无法解释的密码身份validation失败相关的错误配置,请运行以下命令检查/etc/sudoers
的Defaults
行:
pkexec grep Defaults /etc/sudoers
在Ubuntu中,输出通常是:
Defaults env_reset Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
如果您看到rootpw
, runaspw
或targetpw
,这意味着sudo
不一定要求您输入密码。
如果您[sudo] password for root:
提示[sudo] password for root:
或者[sudo] password for some-other-username
提示[sudo] password for root:
而不是[sudo] password for your-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问题,呈现exception。
这是一种延伸,但也许sudo
配置为使用可插入的身份validation模块,其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确实存在这个问题。 感谢gertvdijk帮助我认识到那里的含糊不清,并建议将其发布到其他地方。 (但是,他不对此处的任何错误负责。)
作为解决方法,您可以使用gksudo
而不是sudo
直到问题的根本原因得到解决。
sudo
也没有接受我的密码。 这是因为我补充说
auth required pam_tally.so per_user magic_root onerr=fail
到/etc/pam.d/common_auth
的顶部,尝试在3次密码尝试失败后创建10分钟的延迟。 删除那一行解决了我的问题。