我可以将我的用户账户设置为无密码吗?

如果我尝试通过打开“用户帐户”将密码更改为空,那么“更改”按钮仍然是灰色的。

如何将我的密码更改为空?我知道你可以设置Ubuntu自动登录,但我希望我的密码为空,我永远不想输入密码来验证自己作为该用户。
我知道这样做可能有一些原因不太好,但我想知道是否有可能。我正在使用Ubuntu 12.10。

1你到底为什么接受了一个错误的答案,导致你无法登录你的账户? - Kaz
@Kaz 如果你按照答案中提到的所有步骤,包括最后链接到的那个步骤,就不会出错。 - Flimm
6个回答

你不能使用图形用户界面工具来做那个,但是你可以使用终端来做。
首先,如果您的用户具有sudo特权,则必须启用其NOPASSWD选项。否则,即使您没有密码,sudo也会要求输入密码,并且不会接受空密码。
要执行此操作,请使用sudo visudo命令打开sudoers配置文件,并将以下行添加到文件中,将david替换为您的用户名:
david ALL=(ALL) NOPASSWD:ALL
关闭编辑器以应用更改,并在新终端中测试sudo的效果。
通过运行以下命令删除您的用户密码:
sudo passwd -d `whoami`
按照this answer中的步骤进行操作,以便使pkexec接受没有密码的用户。某些应用程序在需要root特权时使用pkexec。
如果你被提示输入密码,只需键入"enter"即可正常工作。我已经在LightDM、锁屏、sudo和gksu上测试过这个答案,它是有效的。

1有关 pkexec 的信息,请参见 http://askubuntu.com/a/614537/158442 - muru
2任何新的visudo编辑,例如nopasswd,都应该添加到末尾,以免其他设置覆盖该条目。 - Dean Meehan
9这对我来说没有起作用(Ubuntu 16.04)通过ssh登录。它仍然要求输入密码,但是无论是空白密码、旧密码还是ssh密钥的密码都不被接受。 - CoderGuy123
@Deleet 对于SSH,我始终建议使用SSH密钥,并完全禁用用户名+密码身份验证。 - Flimm
3在Debian上,当我尝试使用空密码登录命令passwd david -d后,我收到了一条消息:“抱歉,这次没有成功,请再试一次”。现在,我也无法使用旧密码登录。 - fabriciorissetto
@fabriciorissetto:如果发生这种情况,你可以运行passwd david来为自己设置一个新密码。 - D Schlachter
我试过这样做,结果把我的visudo搞坏了。现在出于某种原因,我被要求输入ubuntu用户的密码,以执行sudo命令,而以前我既不需要也没有这个密码。#难过 - Leo Ribeiro
3现在我无法安装软件,因为需要输入密码才能进行安装。 - Matthew
1根据这个答案,删除密码通常是一个不好的主意,因为它允许无需密码登录(尽管SSH可能已禁用密码登录,但可能还有其他服务可以接受密码)。相反,您应该创建一个禁用密码的用户。 - David Ferenczy Rogožan
似乎在Ubuntu Server 20.04上无法正常工作。 - Yan Yang
这个答案是不正确的。问题问的是如何设置一个空密码(即密码是空字符串的哈希)。passwd -d 命令将 /etc/shadow 文件中的密码字段设置为空,这意味着该账户没有密码。 - Kaz
@Kaz 问题的标题是:“我可以将我的用户账户设置为没有密码吗?” 我没有看到空密码的哈希和/etc/shadow中的空条目之间有区别。如果有意义上的区别,请回答一下。 - Flimm
@Flimm 我相信我在下面的评论中没有说出任何有争议的话,那就是答案应该针对问题的内容,而不是对标题做出反应。问题中说:“我从不想输入密码来验证自己作为该用户”。在执行 sudo passwd -d 后,无论尝试什么密码,都无法进行身份验证。 - Kaz
@Kaz 这很奇怪。只需按下回车键就应该可以通过。我已经有一段时间没有尝试过了。 - Flimm
太好了。现在当我尝试在“软件”应用程序中安装或卸载软件时,它会提示我输入密码,而什么都不输入是行不通的,旧密码显然也不再有效。 - user3700562
@user3700562 你有按照额外的步骤来使用pkexec吗? - Flimm

警告:使用此方法删除密码后,请小心,您将无法通过图形界面或终端进行身份验证(例如使用Synaptic安装应用程序或通过命令行使用sudo)。这是由于bug #1168749

只有在用户不是唯一的管理员用户时才执行此操作。

此方法已在Ubuntu 12.04和12.10上进行了测试。

确保您点击“解锁”以完成以下任务: Unlock screenshot 进入用户帐户,然后点击密码字段: 一旦窗口打开,请点击右侧的“操作”下拉箭头... 将其更改为“无需密码登录”,然后点击“更改”: 此外,您还可以选择启用自动登录,如下所示: Screenshot 运行此过程后,如果要再次为用户提供密码,您不能使用图形用户界面(bug #882255),而必须使用命令行。
  1. 以具有管理员权限的另一个用户身份登录(请记住,原始用户无法通过此方法在没有密码的情况下以管理员权限运行)。

  2. 在终端中运行以下命令:

    sudo passwd <用户名>
    
再次警告您,一旦您移除密码,您将无法在图形界面或终端进行身份验证,例如使用Synaptic安装应用程序,或在命令行中使用sudo。

我有一个问题,选项“无需密码登录”实际上是做什么的?它基本上是执行passwd -d命令并删除密码吗? - Alaa Ali
我不是百分之百确定,但passwd -d是一种快速删除账户密码的方法。它会将指定账户设置为无密码状态。仅限root用户使用。 - Mitch
仅限root用户可用吗?哥们,你可以使用它来删除任何用户的密码 =) 。我觉得这就是“无需密码登录”选项实际上所做的,它只是删除了你的密码,所以你将无法进行身份验证。不过这真是太愚蠢了。 - Alaa Ali
1我同意,但是只是举个例子,我有一台共用的笔记本电脑,有时我的孩子会使用它,他们每小时大约会重新启动它一百万次,我没有时间每次都输入密码,所以我将帐户设置为自动登录,以省去麻烦,并且让他们不能捣乱更多。 :) - Mitch

我认为这是可能的,但一旦你尝试安装更新或其他需要sudo权限的东西时,会给你带来麻烦;因为你需要一个具有sudo访问权限(和密码)的账户才能进行安装。
你最好的选择似乎是:
  • 使用没有密码的Guest账户,从而留下一个带有密码的默认账户。
  • 执意要使用没有密码的账户?强烈建议不这样做:添加一个新用户账户(带有密码),然后将其更改为空白等效。操作步骤如下:
    1. 创建一个用户(可以通过GUI或useradd等方式)。然后,
    2. 按下CTRL-ALT-T打开终端。接下来,
    3. 输入gksu gedit nano -B /etc/shadow,然后找到新用户,并使用U6aMy0wojraho替换现有的密码哈希值,使其看起来类似于:newuser:U6aMy0wojraho:13996:0:99999:7:::
  • 对您的问题的最佳解决方案:选择自动登录您的账户,这很可能是您追求的主要优点。操作步骤如下:

    1. 按下CTRL-ALT-T打开终端。在终端中输入:

      sudo gedit /etc/lightdm/lightdm.conf
      

      添加以下行:

      autologin-user=YOURUSERNAME
      autologin-user-timeout=0
      

      YOURUSERNAME替换为您系统上的实际用户名。


谢谢你指出了其他的选择。我知道不设密码不是一个好主意,但我想知道是否有可能(我已经更新了问题)。 - Flimm

看起来,空密码不符合密码复杂性要求。
这是我在“man passwd”中找到的内容。
As a general guideline, passwords should consist of 6 to 8 characters including one or
       more characters from each of the following sets:

       ·   lower case alphabetics

       ·   digits 0 thru 9

       ·   punctuation marks

       Care must be taken not to include the system default erase or kill characters.  passwd will reject any password which is not
       suitably complex.

很抱歉,你不能通过那个用户界面将密码设置为空。

http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/quantal/gnome-control-center/quantal-proposed/view/head:/panels/user-accounts/um-password-dialog.c#L358

决定是否启用“更改”按钮的功能。
    if (strlen (password) < MIN_PASSWORD_LEN) {
            can_change = FALSE;
            if (password[0] == '\0') {
                    tooltip = _("You need to enter a new password");
            }
            else {
                    tooltip = _("The new password is too short");
            }
    }
    else if (strcmp (password, verify) != 0) {
            can_change = FALSE;
            if (verify[0] == '\0') {
                    tooltip = _("You need to confirm the password");
            }
            else {
                    tooltip = _("The passwords do not match");
            }
    }
    else if (!um->old_password_ok) {
            can_change = FALSE;
            if (old_password[0] == '\0') {
                    tooltip = _("You need to enter your current password");
            }
            else {
                    tooltip = _("The current password is not correct");
            }
    }
    else {
            can_change = TRUE;
            tooltip = NULL;
    }

    gtk_widget_set_sensitive (um->ok_button, can_change);

最小密码长度为6是硬编码的 :(

http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/quantal/gnome-control-center/quantal-proposed/view/head:/panels/user-accounts/um-password-dialog.c#L39

#define MIN_PASSWORD_LEN 6

1这只是一些“准则”,而不是实际的规定... - Oli
但是最后一行说:“passwd将拒绝任何不够复杂的密码。”所以,我相信它不可能允许空密码。 - thefourtheye
但是再说一遍,那些项目并不是必需的。你并不需要全部的字符和大小写,他们只是建议你使用它们来创建一个更强大的密码。PAM会根据实际需求来管理规则。 - Oli
3您可以使用passwd命令的-d选项来设置空密码。 - Flimm
是的。在man页面中阅读过了。这就是为什么我说“不能通过那个用户界面将密码设置为空。” - thefourtheye

这是一个图形用户界面,这就是阻止你将其设置为空密码的原因。
如果有办法的话,只能通过终端来完成。
但是,最终你必须通过图形界面进入系统,即使你将密码更改为空,图形界面也会阻止这样做。所以,除非你想切换到非图形用户界面,否则根本不可能实现。

删除后可以更改密码。您只需要在恢复模式下启动即可。在此处将找到一个不错的教程:http://www.psychocats.net/ubuntu/resetpassword

简而言之,在上述链接中您会找到以下内容:

你需要重新启动进入恢复模式。 (为了显示引导菜单,您必须在启动过程中按住Shift键)
在引导菜单中选择“切换到根shell提示符”选项
在控制台上逐个输入以下命令 ls /home passwd 用户名 passwd susan exit
然后正常重启

1请考虑编辑您的回答,至少包括文章中所描述的大纲,并提供链接以供参考和归属目的。这样,如果链接因任何原因不可用,您的回答仍将有助于他人。 - hmayag