
Como afirma a pergunta acima, tenho um servidor RHEL 6 projetado para acesso SSH, com o root incapaz de fazer login por meio de SSH por design. Quando estou no servidor localmente, posso fazer login como root, mas apenas como root. Se eu tentar fazer login como usuário, a tela exibirá rapidamente uma mensagem que diz:
Last Login: Mon Aug 24 08:24:52 on tty1
no directory: /home/user1!
logging in with home="/"
login: no shell: Permission denied
Estou recebendo o no shell porque não há shell no /
.
Agora, o que é realmente confuso para mim é que o diretório inicial realmente existe e contém um shell válido e tem permissão pelo que posso dizer ( 755
). Isso é comum para todos os usuários que existiram e foram criados nesta instância de servidor. Parece não importar se eu defino um caminho para o diretório inicial quando crio um usuário ou deixo o padrão assumir o controle e atribuí-lo automaticamente.
Não encontrei nada de estranho no log seguro ou no log de mensagens, apenas que o usuário efetuou login com sucesso (o que ele fez, mas não pode fazer nada sem um shell)
Espero não precisar reinstalar neste momento, mas quase não há dados no servidor que seriam perdidos se essa fosse a única opção.
Qualquer ajuda seria muito apreciada, pois pesquisei e tentei por uma semana sem sorte.
Editar:
Usei o useradd user1
comando para adicionar originalmente o usuário, quando isso resultou nos problemas acima usei
mkdir /home/user1 && useradd user1 -d /home/user1 && chown -R user:user1 /home/user
Quando executo o cat /etc/passwd | grep user1
comando recebo:
user1:x:513:517::/home/user1:bin/bash
e quando executo o ls -l /home
comando, a entrada desse usuário é:
drwxr-xr-x. 4 user1 user1 4096 Aug 19 17:03 user1
Responder1
Consegui resolver o problema executando o comando
for p in $(rpm -qa); do rpm --setperms $p; done
e reiniciando o servidor. Depois de reiniciado, não só consegui fazer login como qualquer usuário criado, mas também pude usar a GUI novamente. Isso aponta para permissões de arquivo corrompidas em algum lugar do sistema. Como eles foram corrompidos eu não sei, mas agora tudo funciona.
Responder2
O único problema que vejo na sua configuração está no arquivo passwd. Tente mudar
user1:x:513:517::/home/user1:bin/bash
para
user1:x:513:517::/home/user1:/bin/bash
.
Responder3
O useradd
diretório inicial deve ser criado quando a opção correta for passada e você não precisa (ou não deveria) criá-los manualmente. Sugiro que você execute o seguinte (na ordem listada) para remover e recriar seu usuário corretamente.
userdel -f -r user1
useradd -m user1
NOTA: você não precisa passar a -d
opção pois o padrão será /home/user1
neste caso.
Responder4
Acabei de ter esse mesmo problema em uma máquina CentOS 6. Este era um problema com arquivos em /home com contextos de segurança SELinux rotulados incorretamente. Um dos comentaristas acima, Michael Hampton, que disse que verificar /var/log/audit/audit log estava correto. Segui seu conselho e percebi que havia um problema com o SELinux acontecendo aqui. A solução que resolveu para mim foi:
sudo restorecon -Rv /home
Isso restaurará recursivamente os rótulos de contexto de segurança padrão em todos os arquivos no diretório inicial. Depois disso, o acesso ssh via chave pública foi restaurado.