¿Por qué mi nuevo usuario SFTP no funciona en un directorio diferente?

¿Por qué mi nuevo usuario SFTP no funciona en un directorio diferente?

Estoy intentando crear una nueva cuenta SFTP para mi servidor. Cuando sigo estas instruccionesexactamente, entonces todo funciona bien:https://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

Puedo conectarme con el guestuserusuario a través de sftp, explorar mi directorio de inicio y subir un nivel incomingdesde /sftp/guestuser.

Incluso puedo cambiar el ChrootDirectoryvalor /etc/ssh/sshd_configpara que sea específicamente /sftp/guestuser, en lugar de implementar el %uparámetro. Por lo tanto, los nombres de directorio codificados funcionan bien.

Pero a partir de ese momento, si todo lo que hago es cambiar el directorio ChrootDirectoryde mi sftpusersgrupo al directorio de mi sitio web real /var/www/www.example.com, entonces ya no puedo conectarme mediante el sftpcomando de ese usuario. El shell genera:

Conexión a www.example.com cerrada por host remoto. No se pudo leer el paquete: la conexión se restableció por parte del par

Definitivamente lo hice:

  1. Asegúrate de tener la incomingcarpeta en mi /var/www/www.example.comdirectorio.
  2. Establecer la propiedad de ambos /var/www/www.example.comy /var/www/www.example.com/incomingparaguestuser:sftpusers
  3. Intenté configurar el directorio de inicio del usuario /haciendousermod guestuser -d /

El /sftp/guestuserdirectorio (con el que funcionó) es propiedad de root:root, por lo que el hecho de que los permisos de /var/wwwestén activados root:rootno debería importar (?)

¿Por qué no puedo cambiar el directorio de inicio de mi nuevo usuario SFTP?

ACTUALIZAR

Puedo cambiar el directorio a:

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

Todos ellos funcionan. Pero tan pronto como pasa uno más por debajo /var/www, como /var/www/test, no funciona. Intenté eliminar los puntos del nombre del directorio original que era www.example.com, pero no hizo ninguna diferencia.

Tampoco se trata de un límite en el número de niveles de subdirectorio, porque /sftp/guestuser/incomingtambién funcionó. Probarlo con un nuevo directorio /web/www.example.comno funcionó.

Respuesta1

Bien, logré identificar la causa. El directorio que defino como ChrootDirectorypara el usuario debe ser propiedad de root.

Si quiero que mi usuario pueda cargar cosas (lo que obviamente no podrá hacer en uno de propiedad raíz), entonces necesito crear un subdirectorio allí y configurar ese directorio como su hogar mediante el -dparámetro al crear o editar el usuario.

Si en algún momento se cambia la propiedad para que sea ChrootDirectorypropiedad del usuario que está intentando acceder por ftp, el broken pipemensaje aparecerá nuevamente. Cambiando la propiedad nuevamente a rooty el usuario podrá conectarse nuevamente.

información relacionada