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

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

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

登录我之前的账户后,我得到:

"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 -l penner

我得到:

No directory, logging in with HOME=/

我手动创建了主目录,错误消失了,但登录仍然失败。似乎用户创建出了问题?我该如何纠正这个问题?

答案1

如果你使用以下方式创建用户帐户useradd,您必须手动设置一切。这就是为什么从命令行创建用户帐户时建议使用adduser在 Ubuntu(以及 Debian 和其他基于 Debian 的系统)中,您可能只想使用以下命令删除用户:userdel或者deluser并使用 重新创建它adduser。否则...

修复主目录位置

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

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

它们必须完全相同。您收到的错误消息su -l penner告诉您它们不相同。

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

grep penner /etc/passwd

你应该看到如下一行:

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

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

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

sudo usermod -d /home/penner penner

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

如果(或一次)名称都是/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

drwxr-xr-x如果后面的三个字符中不是而是破折号d,则用户没有完全访问权限。请按如下方法修复此问题:

sudo chmod u+rwx /home/penner

penner如果他们拥有自己的主目录,则可以运行此命令,因此如果您愿意,您可以按以下方式运行此命令sudo -u penner u+rwx /home/penner:)

确保其他用户没有完全的写访问权限

如果最后六个字母中的drwxr-xr-x不是w而是s,那么用户可能还对 的主目录具有写访问权限。这是危险的(除非你-pennerpenner真的知道自己在做什么,并希望这样做,并已设置好一切,这样就不会出现问题)。要修复它:

sudo chmod -R go-w /home/penner

其他默认设置

您可能还想进行一些其他更改。Ubuntu 默认(也就是说,如果您使用adduser图形工具创建用户帐户,但您没有):

  1. 主目录对每个人都有读写权限,而不仅仅是拥有它的用户。用户可以更改此设置,无论是针对整个主目录还是其中的任何文件和子目录。但是,如果您确实想要此默认设置,并且您没有第二个和第三个rxdrwxr-xr-x请运行:

    sudo chmod 755 /home/penner
    

    penner如果他们拥有自己的主目录,则可以运行此命令,因此如果您愿意,您可以按以下方式运行此命令sudo -u penner chmod 755 /home/penner:)

  2. 每个用户都有自己的组,与用户同名,这是用户的主要组。他们的主目录归该组所有。这就是penner中第二个的含义drwxr-xr-x 43 penner penner 4096 2012-07-03 06:41 /home/penner。打破这个默认设置是可以的,如果你知道自己在做什么。但如果您无意做不同的事情,您应该确保以penner这种方式设置,因为用户的某些可能的主要组身份或用户主目录上的组所有者可能会导致安全问题。

    奔跑groups penner。(见man groups了解更多信息。)你应该看到类似这样的内容:

    penner : penner adm dialout cdrom plugdev lpadmin sambashare
    

    如果不是这样,请不要担心。我很快就会讲到。相反,请查看 后面的第一个单词:。这是用户主要组的名称。假设您希望它是penner,请确保它是。如果不是,请将其更改为:

    sudo usermod -g penner penner
    

    如果出现错误,提示该组penner不存在,那么您必须使用此命令创建它(然后再次运行上述命令):

    sudo addgroup penner
    
    • man addgroup了解更多信息。(如果您愿意,也可以使用groupadd命令来创建组。
  3. 当您运行 时groups penner,您可能会得到一个比我的 短得多的组列表penner : penner adm dialout cdrom plugdev lpadmin sambashare。对于桌面用户,admdialoutcdromplugdevlpadminsambashare提供了桌面用户通常应该拥有的能力。因此,除非您有其他理由,否则penner应该在这些组中。这些是不是但是,由于主要组不同,因此设置方式不同。假设penner不属于任何这些组,但您想penner加入所有组,请运行以下命令:

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

    如果你感兴趣的话,以下是这些组的含义:

    (来源:特权,在 Ubuntu 文档 wiki 中。)

使用户成为管理员

如果您不想penner成为管理员,您可能不需要做任何其他事情。您可以使用 检查是否penner是管理员groups penner。如果没有列出admin和,则不是管理员。sudopenner

如果您想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 11.10 或更早版本升级而来的后续 Ubuntu 版本,例如 12.10 的发布),那么为了向后兼容,管理员是 和 的成员sudoadmin通常,如果其中一个组不授予管理能力,则它根本不存在,因此同时运行上述两个命令(单独运行,而不是以)通常是成为管理员的sudo usermod -a -G admin,sudo penner安全有效方法。penner

答案2

这通常发生在创建用户时没有为用户创建主目录。创建用户时使用此命令可以解决这个问题

useradd -m the_username

-m 标志用于为用户创建主目录。创建用户后,通过以下方式检查该用户的主目录是否存在

ls /home

如果你看到那里列出的用户名,那么最后一件事就是为该用户分配一个密码

passwd the_username

您现在可以使用该用户名和密码登录

答案3

ctrl+alt+f1 并登录并运行

sudo chown -R $USER:$USER $HOME

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

它会起作用

相关内容