
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 guestuser
usuário via sftp
, navegar no meu diretório inicial e subir um nível incoming
para /sftp/guestuser
.
Posso até alterar o ChrootDirectory
valor /etc/ssh/sshd_config
para ser especificamente /sftp/guestuser
, em vez de implementar o %u
parâmetro. Portanto, nomes de diretórios codificados funcionam bem.
Mas a partir desse ponto, se tudo o que eu fizer for alterar o ChrootDirectory
do meu sftpusers
grupo para o diretório real do meu site em /var/www/www.example.com
, não poderei sftp
mais 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:
- Certifique-se de que eu tenha a
incoming
pasta em meu/var/www/www.example.com
diretório - Defina a propriedade de ambos
/var/www/www.example.com
e/var/www/www.example.com/incoming
paraguestuser:sftpusers
- Tentei definir o diretório inicial do usuário
/
fazendousermod guestuser -d /
O /sftp/guestuser
diretório (aquele com o qual funcionou) é propriedade de root:root
, portanto, o fato de as permissões de /var/www
estarem ativadas root:root
nã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/incoming
também funcionou. Testá-lo com um novo diretório /web/www.example.com
não.
Responder1
Ok, então consegui identificar a causa. O diretório que defino como ChrootDirectory
para 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 -d
parâmetro ao criar ou editar o usuário.
Se em algum momento a propriedade for alterada para que seja ChrootDirectory
propriedade do usuário que está tentando fazer FTP nele, a broken pipe
mensagem aparecerá novamente. Alterando a propriedade de volta para root
e o usuário poderá se conectar novamente.