
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 guestuser
usuario a través de sftp
, explorar mi directorio de inicio y subir un nivel incoming
desde /sftp/guestuser
.
Incluso puedo cambiar el ChrootDirectory
valor /etc/ssh/sshd_config
para que sea específicamente /sftp/guestuser
, en lugar de implementar el %u
pará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 ChrootDirectory
de mi sftpusers
grupo al directorio de mi sitio web real /var/www/www.example.com
, entonces ya no puedo conectarme mediante el sftp
comando 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:
- Asegúrate de tener la
incoming
carpeta en mi/var/www/www.example.com
directorio. - Establecer la propiedad de ambos
/var/www/www.example.com
y/var/www/www.example.com/incoming
paraguestuser:sftpusers
- Intenté configurar el directorio de inicio del usuario
/
haciendousermod guestuser -d /
El /sftp/guestuser
directorio (con el que funcionó) es propiedad de root:root
, por lo que el hecho de que los permisos de /var/www
estén activados root:root
no 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/incoming
también funcionó. Probarlo con un nuevo directorio /web/www.example.com
no funcionó.
Respuesta1
Bien, logré identificar la causa. El directorio que defino como ChrootDirectory
para 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 -d
parámetro al crear o editar el usuario.
Si en algún momento se cambia la propiedad para que sea ChrootDirectory
propiedad del usuario que está intentando acceder por ftp, el broken pipe
mensaje aparecerá nuevamente. Cambiando la propiedad nuevamente a root
y el usuario podrá conectarse nuevamente.