Soporte técnico & Área de clientes

Si ya eres cliente y necesitas ayuda no dudes en pedirla, por favor, envíanos un ticket pulsando el botón de más abajo.

Acceder al área de soporte

Otras contactos de soporte
(+34) 968 102 998 soporte@kimerikal.com Calle Farmaceútico Antonio Carazo Villar, 17, Murcia
Síguenos en las redes

VSFTPD: Instalación y chroot a una carpeta de usuario.


1. Instalación de vsftpd.

Instalamos vsftpd con este comando:

# apt-get install vsftpd

2. Configurar vsftpd.

El fichero de configuración se encuentra en /etc/vsftpd.conf

Confirmamos que en dicho fichero las siguientes opciones están como siguen:

anonymous_enable=NO      # Capamos el acceso a usuarios anónimos
local_enable=YES         # Habilitamos el login para usuarios locales
write_enable=YES         # Permitimos a los usuarios escribir en su carpeta
chroot_local_user=YES    # Enjaulamos a los usuarios en su carpeta

Con esta configuración ya tendríamos enjaulados a los usuarios en su carpeta home. El problema es que no habrá permisos de escritura para usuarios que hayan sido creados específicamente para el FTP, es decir, los usuarios del sistema, nos dará el siguiente error: 500 OOPS: vsftpd: refusing to run with writable root inside chroot ()

Sólo quedaría reiniciar el servicio:

# service vsftpd restart

3. Arreglar error: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

VSFTPD incorpora un sistema de seguridad para que los usuarios enjaulados no pueda escribir en sus directorios, así que existen 2 soluciones en función a lo que queramos conseguir.

3.1. Quitar los permisos de escritura para el directorio del usuario.

Al quitar los permisos de escritura, vsftpd, dejará que nos conectemos al FTP.

# chmod a-w /home/mi_usuario

Con esto podremos conectarnos aunque no crear ficheros o directorios.

3.2. Añadir una nueva directiva que deshabilite la anterior.

Otra opción es añadir la siguiente directiva para que vsftpd nos dejé escribir en las carpetas. Para ello añadimos al fichero /etc/vsftpd.conf lo siguiente:

allow_writeable_chroot=YES

Despues volvemos a reiniciar el servicio y listo.

# service vsftpd restart

4. Enjaular al usuario en otra carpeta distinta, por ejemplo /var/www

Suele ser normal querer que el usuario pueda ver un directorio distinto al de su home, como por ejemplo la carpeta www o la un dominio concreto de apache, para ello, la solución más rápida es cambiar el directorio home del usuario de la siguiente forma:

# usermod –home /var/www MI_USUARIO

Con esto habremos cambiado el directorio home del usuario y cada vez que se conecte tanto por FTP como por SSH entrará al directorio /var/www, sólo nos quedaría, para este caso, añadir al usuario al grupo de apache o www-data dependiendo del sistema operativo o el usuario apache configurado.

# adduser MI_USUARIO apache

Y ahora le damos a la carpeta www permisos para que tanto apache como nuestro usuario puedan funcionar:

# chown -R MI_USUARIO:apache /var/www

# chmod -R 770 /var/www