Por que meu novo usuário SFTP não trabalha em um diretório diferente?

Por que meu novo usuário SFTP não trabalha em um diretório diferente?

Estou tentando criar uma nova conta SFTP para meu servidor. Quando sigo estas instruçõesexatamente, então tudo funciona bem:https://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Posso me conectar com o guestuserusuário via sftp, navegar no meu diretório inicial e subir um nível incomingpara /sftp/guestuser.

Posso até alterar o ChrootDirectoryvalor /etc/ssh/sshd_configpara ser especificamente /sftp/guestuser, em vez de implementar o %uparâmetro. Portanto, nomes de diretórios codificados funcionam bem.

Mas a partir desse ponto, se tudo o que eu fizer for alterar o ChrootDirectorydo meu sftpusersgrupo para o diretório real do meu site em /var/www/www.example.com, não poderei sftpmais me conectar por meio do comando desse usuário. As saídas do shell:

Conexão com www.example.com fechada pelo host remoto. Não foi possível ler o pacote: conexão redefinida pelo peer

Eu definitivamente fiz:

  1. Certifique-se de que eu tenha a incomingpasta em meu /var/www/www.example.comdiretório
  2. Defina a propriedade de ambos /var/www/www.example.come /var/www/www.example.com/incomingparaguestuser:sftpusers
  3. Tentei definir o diretório inicial do usuário /fazendousermod guestuser -d /

O /sftp/guestuserdiretório (aquele com o qual funcionou) é propriedade de root:root, portanto, o fato de as permissões de /var/wwwestarem ativadas root:rootnão deve importar (?)

Por que não consigo alterar o diretório inicial do meu novo usuário SFTP?

ATUALIZAR

Posso mudar o diretório para:

  • /sftp
  • /
  • /var
  • /var/www

Tudo isso funciona. Mas assim que passar mais um /var/www, tipo /var/www/test, não funciona. Tentei remover os pontos do nome do diretório original que era www.example.com, mas não fez diferença.

Também não se trata de um limite no número de níveis de subdiretórios, porque /sftp/guestuser/incomingtambém funcionou. Testá-lo com um novo diretório /web/www.example.comnão.

Responder1

Ok, então consegui identificar a causa. O diretório que defino como ChrootDirectorypara o usuário deve pertencer a root.

Se eu quiser que meu usuário seja capaz de fazer upload de coisas (o que obviamente ele não será capaz de fazer em um de propriedade root), então preciso criar um subdiretório lá e definir esse diretório como sua casa por meio do -dparâmetro ao criar ou editar o usuário.

Se em algum momento a propriedade for alterada para que seja ChrootDirectorypropriedade do usuário que está tentando fazer FTP nele, a broken pipemensagem aparecerá novamente. Alterando a propriedade de volta para roote o usuário poderá se conectar novamente.

informação relacionada