VSFTPD: Instalación y chroot a una carpeta de usuario.
3. Arreglar error: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
3.1. Quitar los permisos de escritura para el directorio del usuario.
3.2. Añadir una nueva directiva que deshabilite la anterior.
4. Enjaular al usuario en otra carpeta distinta, por ejemplo /var/www
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