Configuración del servidor sftp

Partimos de la base de que ya tenemos openssh instalado, ya que suele estar presente en cualquier distribución GNU. El servidor sftp está activado por defecto, pero modificaremos la configuración para crear el entorno enjaulado (chroot)

Editamos el fichero /usr/local/etc/sshd_config y modificamos la línea Subsystem referente a sftp para que quede de esta manera:


Subsystem       sftp    internal-sftp

Al final del fichero agregaremos lo siguiente, modificando Group por User según nos convenga.


Match Group sftp
        ChrootDirectory %h
        ForceCommand internal-sftp
    AllowTcpForwarding no

Con esto enjaularemos en su directorio home a todos los usuarios del grupo sftp. Evidentemente tendremos que agregar manualmente los usuarios que deseemos al grupo sftp. Por otro lado estableceremos su shell a /bin/false de modo que solo puedan utilizar el servicio sftp.

Importante

Un detalle muy importante, que puede provocar muchos quebraderos de cabeza es el de los permisos del directorio de los usuarios. Este directorio debe pertenecer a root y no ser escribible por ningún otro usuario o grupo, esto es root:root con permisos 755.

De este modo los clientes sftp no podrán escribir en sus propios directorios, cosa que solucionamos creando un subdirectorio en el que sí puedan escribir, esto es: /home/pepito/upload