Este comentário estava certo, é um problema do SELinux. Executar este comando e, em seguida, efetuar login novamente corrige o problema:
restorecon -r /home
Deixe-me esclarecer minha pergunta.
Eu tenho uma máquina virtual do CentOS 6, com o diretório /home montado em um volume lógico (formado por 2 HDDs virtuais). Eu usei este comando para criar um novo usuário chamado user03
useradd user03 -c "User 03"
e dê a ele uma senha:
passwd user03
Tudo aconteceu normalmente. Mas quando eu logar com user03, o CentOS me dá essa notificação:
No directory /home/user03!
Logging in with home = "/"
O estranho é: / home / user03 / existe e está associado ao user03 e o usuário03 tem acesso total. Quando faço isso
[user03@vm0 /]$ cd
[user03@vm0 ~]$ pwd
/home/user03
o diretório de trabalho é alterado de volta para / home / user03 / como deve ser feito.
Então, há algo de errado com o meu sistema? Por que me diz que "No directory / home / ..." enquanto esse diretório existe?
Este comentário estava certo, é um problema do SELinux. Executar este comando e, em seguida, efetuar login novamente corrige o problema:
restorecon -r /home
O comando useradd criará o diretório inicial se CREATE_HOME yes foi definido no arquivo /etc/login.defs .
De useradd manual:
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.
Mas desde que você disse que /home/user03 existe e pertence a user03 e as permissões apropriadas estão definidas para ele, o problema pode ser causado pelo arquivo /etc/passwd . Caso contrário, faça o seguinte:
mkdir /home/user03
chown user03:user03 /home/user03
cp /etc/skel/* /home/user03
chmod 700 /home/user03
O 6º campo é o endereço residencial do usuário, talvez seu arquivo /etc/passwd esteja corrompido ou useradd não tenha adicionado este campo a este arquivo (não sei o que aconteceu!). No entanto, você pode editar esse arquivo e adicionar o endereço residencial do usuário a ele.
Meu userid no arquivo /etc/passwd é este:
Sepahrad:x:500:500:Sepahrad:/home/Sepahrad:/bin/bash
Minha solução foi alterar a permissão do diretório inicial.
chmod 777 /home
Eu sei, dar todas as permissões para todos os usuários não é a melhor solução, mas no momento ela funciona bem.
Tags centos