CentOS - Autenticação do Pubkey não funciona para o usuário em / var

1

Estou trabalhando em um problema há uma semana ou mais e estou ficando sem ideias.

Eu adicionei um novo usuário no meu Centos 7 VPS para um servidor git, e (sob o conselho de vários artigos) coloquei o diretório home do usuário dentro de /var ao invés de /home .

Depois, tentei usar o ssh para fazer login nesse usuário e funcionou corretamente. No entanto, , a autenticação de chave pública não funcionou corretamente. No processo de depuração, eu finalmente tornei o usuário git e o usuário primário idênticos em todos os aspectos - ambos eram sudoers, tinham os mesmos diretórios .ssh , com os mesmos arquivos authorized_keys , e eu até movi o git user para /home , mas sem sucesso.

Para testar mais, criei dois novos usuários: test1 e test2 . O diretório inicial de test1 estava em /home e o diretório inicial de test2 estava em /var . Com certeza, o pubkey auth funcionou para test1 e não test2 . Eu não acho que é um problema de permissões, porque /var tem as mesmas permissões que /home , e os diretórios de usuários têm permissões corretas. Além disso, estou muito perplexo com o fato de o usuário git original não ter aceito o auth do pubkey mesmo depois de movê-lo para /home .

Se eu executar o ssh no modo detalhado, posso ver que a interrupção ocorre após o envio da chave:

debug1: Offering RSA public key: /home/user/.ssh/foo.key
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password

Ao se conectar ao usuário principal ou a test1 , ele age de maneira diferente:

debug1: Offering RSA public key: /home/user/.ssh/foo.key
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279

A única pista que encontrei: recebo uma resposta idêntica à primeira (aguardando resposta e, em seguida, ignorando a autenticação do pubkey) ao tentar fazer o login como um usuário inexistente. Então, a máquina está tornando o usuário git invisível para o mundo externo? Por que isso faria isso?

Normalmente, posso trabalhar com essas coisas, mas acho que estou bastante perplexo desta vez. Obrigado por qualquer ajuda!

    
por forresthopkinsa 12.08.2016 / 10:20

1 resposta

1

É o problema do SELinux. Mover coisas em torno do sistema de arquivos funciona bem se você não tiver esse nível de segurança, mas o SELinux define rótulos para cada arquivo, por padrão, com base em seu caminho.

Quando você mover alguns diretórios para fins especiais, verifique se eles terão rótulos adequados. Neste caso, existe chcon com a opção --reference , que serve bem neste caso:

chcon --reference /home/user/.ssh/ -R /var/user/.ssh/

Ainda melhor seria escrever uma política personalizada e carregá-la no kernel, mas está fora do escopo desta resposta.

    
por 14.08.2016 / 20:27