Por que o sshd não se importa com o fato de um usuário não possuir seu diretório pessoal quando seu login não tem senha?

2

Comportamento mais estranho que já vi:

Eu tenho:

Configure uma conta de usuário do Linux com uma senha e uma chave ssh.

  • Quando este usuário possui seu diretório inicial, ele pode efetuar login com a chave ssh.
  • Quando este usuário não possui seu diretório home, sshd reclama:

    Authentication refused: bad ownership or modes for directory /path/to/home/user/
    
  • Quando eu removo a senha da conta do Linux: Este usuário pode efetuar login com a chave ssh enquanto não possui seu diretório pessoal.

Wat? Por que sshd parou de se preocupar com a propriedade de seu diretório pessoal?

    
por ThorSummoner 17.05.2017 / 00:53

1 resposta

2

Isso é um pouco mais complicado do que você está descrevendo (e você omite muitos detalhes importantes para responder completamente a essa pergunta). Mas o código-fonte é um bom lugar para começar:

  • A falha é emitida apenas se a autenticação de chave pública for executada
  • Os diretórios pai são importantes e são "aceitos" somente se
    • o sshd pode stat() it
    • o diretório é de propriedade do usuário que faz log in OU root no Linux ( platform_sys_dir_uid() cuida disso)
    • o diretório não pode ser gravado por nenhum outro usuário (o bit de gravação pode ser definido apenas para o proprietário)

Isso basicamente corresponde aos seus dois primeiros pontos, mas não ao terceiro. Haverá algo mais na rodada que você alterou ou não notou. Ative o registro de depuração no servidor e investigue-o (ou publique-o na pergunta editada).

    
por 17.05.2017 / 09:32

Tags