无法登录新创建的用户帐户

尝试将帐户切换到我新创建的帐户时我得到一个黑屏,然后在输入正确的密码后将其带回主登录屏幕。

登录到我之前存在的帐户后,我得到:

"System Program Problem Detected" Details: Executable path /usr/bin/Xorg Package: xserver-xorg-core 2:1.11.4-0ubuntu10.1 Details: Crash ... (tons more, but no way to copy paste or save) 

当我尝试su

 su -l penner 

我明白了:

 No directory, logging in with HOME=/ 

我手动创建了主目录,这个错误消失了,但登录仍然没有运气。 似乎用户创建出了问题? 我怎么能纠正这个?

如果您使用useradd创建了用户帐户,则必须手动为其设置所有内容。 这就是为什么在从命令行创建用户帐户时,建议在Ubuntu(以及Debian和其他基于Debian的系统)中使用adduser 。 您可能只想用userdeldeluser删除用户并使用adduser重新创建它。 除此以外…

修复主目录位置

如果您想保留用户帐户并解决问题,那么您需要查看:

  • 实际配置用户帐户的主目录的名称
  • 您实际创建的目录的名称

这些必须完全相同。 使用su -l penner获得的错误消息告诉您它们不一样。

要检查实际配置用户帐户的主目录,请运行此命令(有关更多信息,请参阅man 5 passwdman grep ):

 grep penner /etc/passwd 

你应该看到这样的一行:

 penner:x:1000:1000:Eliah Kagan,,,:/home/penner:/bin/bash 

也就是说,第六个: -separated字段(在第五个之后:)包含主目录。 如果它不是/home/penner ,它应该是。 如果您为用户创建的目录不是/home/penner ,那么它也应该是。 如果这两个目录是相同的但是没有一个是/home/penner ,那么理论上可能会有效,但是你应该将它们设置为/home/penner ,因为许多软件假定所有非root用户的主目录都是/home/ username

您可以通过运行以下命令将penner的主目录更改为/home/penner

 sudo usermod -d /home/penner penner 
  • 有关更多信息,请参阅man usermod

确保它是目录,并且用户具有访问权限

如果(或一次)名称都是/home/penner ,您还应确保用户可以访问自己的主目录。 跑:

 ls -ld /home/penner 

你应该看到这样的东西(虽然日期和时间会有所不同):

 drwxr-xr-x 43 penner penner 4096 2012-07-03 06:41 /home/penner 

如果不是drwxr-xr-x ,而是你有一些东西-而不是d ,那么你创建了一个文件而不是一个目录。 删除文件并在那里创建一个目录。

如果用户没有其他东西而不是第一个penner ,那么用户不拥有他们的主目录,所以让他们拥有它:

 sudo chown penner /home/penner 
  • 有关更多信息,请参阅man chown

如果代替drwxr-xr-xd之后的接下来的三个字符中有破折号,则用户在那里没有完全访问权限。 修复如下:

 sudo chmod u+rwx /home/penner 
  • 有关更多信息,请参阅man chmod

(如果他们拥有自己的主目录, penner能够运行此命令,因此如果您愿意,可以将其运行为: sudo -u penner u+rwx /home/penner

确保其他用户没有毯子写访问权限

如果代替drwxr-xr-x ,在最后六个字母中有w s而不是-s,那么除了penner之外的用户可能对penner的主目录具有写入权限。 这很危险(除非你真的知道你在做什么并且想要这样做并且已经设置好所以它不会成为问题)。 要解决这个问题:

 sudo chmod -R go-w /home/penner 

其他默认值

您可能想要进行一些其他更改。 默认情况下,在Ubuntu中 (即,如果您使用adduser或使用图形工具创建用户帐户,则不是这样):

  1. 主目录对每个人都有读写权限,而不仅仅是拥有它们的用户。 用户可以对整个主目录或其中的任何文件和子目录进行更改。 但是如果你确实想要这个默认值,并且你没有drwxr-xr-x的第二个和第三个rxdrwxr-xr-x运行:

     sudo chmod 755 /home/penner 

    (如果他们拥有自己的主目录, penner能够运行此命令,因此如果您愿意,可以将其运行为: sudo -u penner chmod 755 /home/penner

  2. 每个用户都有自己的组,名称与用户相同,这是用户的主要组。 他们的主目录由该组拥有。 这就是drwxr-xr-x 43 penner penner 4096 2012-07-03 06:41 /home/penner第二个penner的含义。 如果你知道自己在做什么 ,可以打破这个默认值。 但是,如果不打算以不同的方式执行操作,则应确保penner这种方式设置penner ,因为用户的主要组标识或用户主目录中的组所有者可能会导致安全问题。

    运行groups penner 。 (有关更多信息,请参阅man groups 。)您应该看到如下内容:

     penner : penner adm dialout cdrom plugdev lpadmin sambashare 

    不要担心,如果不是那样的话。 我很快就会到达那里。 相反,看看后面的第一个单词: 。 这是用户主要组的名称。 假设你想要它是penner ,请确保它是。 如果不是,请更改它:

     sudo usermod -g penner penner 

    如果您收到错误消息,指出组合器不存在,那么您必须使用此命令创建它(然后再次运行上面的命令):

     sudo addgroup penner 
    • 有关更多信息,请参阅man addgroup 。 (如果您愿意,也可以使用groupadd命令创建组。)
  3. 当你运行groups penner ,你可能会得到一个比我的penner : penner adm dialout cdrom plugdev lpadmin sambashare短得多的组列表penner : penner adm dialout cdrom plugdev lpadmin sambashare 。 对于桌面用户, admplugdevcdromplugdevlpadminsambashare提供桌面用户通常应具备的function。 因此,除非您有其他理由,否则penner应该在这些组中。 但是,这些不是主要组,所以它们的设置不同。 假设penner不在任何这些组中,并且您希望penner在所有组中,请运行以下命令:

     sudo usermod -a -G adm,dialout,plugdev,lpadmin,sambashare penner 

    如果您有兴趣,这就是所有这些群体的意思:

    • adm用户可以查看 /var/log大多数系统日志文件。
    • dialout用户可以使用拨号调制解调器。
    • plugdev用户可以安装和使用外部存储设备。
    • lpadmin用户可以设置和管理打印机。
    • sambashare用户可以通过网络与其他计算机共享文件(通过Samba )。

    (来源: Privileges ,在Ubuntu文档维基中。)

使用户成为管理员

如果您不希望penner成为管理员,您可能不需要做任何其他事情。 您可以检查penner是否为具有groups penner的管理员。 如果既未列出admin也未列出sudo ,则penner不是管理员。

如果您希望penner成为管理员,请将penner添加到这些组中的任何一个。 (如果它们都存在,你也可以为两者添加penner 。)你可以通过单独运行这两个命令来实现这一点 – 如果任何一个成功,你已经使得penner成为管理员:

 sudo usermod -a -G admin penner sudo usermod -a -G sudo penner 
  • 有两个组的原因是,在Ubuntu 12.04 LTS之前,管理员都在admin组中。 从Ubuntu 12.04 LTS开始,管理员都在sudo组中。 但是,如果您的12.04 LTS系统是从以前的版本升级的(这应该适用于以后的Ubuntu版本,例如12.10,当它出现时,从Ubuntu 11.10或更早版本升级),那么为了向后兼容,管理员是两者的成员sudoadmin 。 一般来说,如果其中一个组没有授予管理能力,它根本就不存在,所以同时运行上述两个命令(另外,不像sudo usermod -a -G admin,sudo penner )通常是安全有效的让penner成为管理员的方法。

ctrl + alt + f1并登录并运行

sudo chown -R $ USER:$ USER $ HOME

然后按ctrl + alt + f7并尝试登录

它会工作