为什么 CentOS 通知我“用 home=/ 登录”,尽管主目录已经创建了?

为什么 CentOS 通知我“用 home=/ 登录”,尽管主目录已经创建了?

让我澄清我的问题。

我有一个 CentOS 6 虚拟机,/home目录安装在逻辑卷(由 2 个虚拟 HDD 组成)上。我使用此命令创建了一个名为的新用户用户03

useradd user03 -c "用户 03"

并给他一个密码:

密码 user03

一切都正常发生。但是当我使用 user03 登录时,CentOS 给我这个通知:

没有目录 /home/user03!

使用 home =“/”登录

奇怪的是: /home/user03/ 确实存在并与 user03 关联,并且 user03 具有完全访问权限。当我这样做时

[user03@vm0 /]$ cd

[user03@vm0 ~]$ 密码

/home/user03

工作目录按预期更改回 /home/user03/ 。

那么我的系统有什么问题吗?为什么它告诉我“没有目录 /home/...”,而该目录确实存在?

答案1

这条评论是的,这是一个 SELinux 问题。运行此命令然后再次登录可以修复问题:

restorecon -r /home

答案2

如果在文件中设置,该useradd命令将创建主目录。CREATE_HOME yes/etc/login.defs

来自useradd手册:

       Create the user's home directory if it does not exist. The files and directories contained in the skeleton directory (which can be defined
       with the -k option) will be copied to the home directory.
       useradd will create the home directory unless CREATE_HOME in /etc/login.defs is set to no.

但是既然您说/home/user03存在并属于user03并且为其设置了适当的权限,则问题可能是由您的/etc/passwd文件引起的,否则请执行以下操作:

mkdir /home/user03
chown user03:user03 /home/user03
cp /etc/skel/* /home/user03
chmod 700 /home/user03

第6个字段是用户家庭地址,可能你的/etc/passwd文件被干扰或者useradd没有将这个字段添加到这个文件中(我不知道发生了什么!)。但是,您可以编辑此文件并向其中添加用户家庭地址。

我在/etc/passwd文件中的用户ID是这样的:

Sepahrad:x:500:500:Sepahrad:/home/Sepahrad:/bin/bash

答案3

我的解决方案是更改主目录的权限。

chmod 777 /home

我知道,为所有用户授予所有权限并不是最好的解决方案,但目前它工作正常。

相关内容