让我澄清我的问题。
我有一个 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
我知道,为所有用户授予所有权限并不是最好的解决方案,但目前它工作正常。