vsftpd es un servidor FTP para Linux, que posee una licencia GNU General Public License, y es el servidor FTP utilizado por defecto en las principales distribuciones Linux.

La instalación se realiza de la manera habitual:

{code class="brush:plain;gutter:false"}

sudo apt-get install vsftpd

{/code}

Inicialmente se puede realizar la conexión con este servidor FTP usando el acceso anónimo, con el usuario anonymous o ftp. La configuración inicial establece la carpeta /srv/ftp como la carpeta de conexión de este usuario, que inicialmente se encuentra vacía, y no podrá acceder a ninguna otra carpeta superior, ni almacenar nada en ella.

Archivo de configuración

Como suele ser habitual en los servidores bajo Linux, la configuración de este servidor se realiza editando un archivo de texto. En este caso, el archivo de configuración es /etc/vsftpd.conf.

Es su contenido puedes ver una gran cantidad de comentarios (líneas que empiezan por #) que permiten aclarar el significado de cada línea de configuración que se muestra como ejemplos. Además de esa información, y de las líneas de configuración que se encuentran en dicho archivo, puedes encontrar más en : http://manpages.ubuntu.com/manpages/precise/man5/vsftpd.conf.5.html y en español en la página http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-ftp-vsftpd-conf.html.

Reiniciar, parar o iniciar el servidor

Después de cada cambio en el archivo de configuración deberás reiniciarlo para que los cambios tengan efecto. El comando /etc/init.d/vsftpd permite reiniciar, parar o iniciar el servidor con los parámetros restart, stop y start, como suele ser habitual en otros servicios Linux.

También se pueden utilizar los comandos con esos mismos nombres (restartstop start) seguidos del nombre del servicio (vsftpd). Por ejemplo, es lo mismo:

{code class="brush:plain;gutter:false"}

sudo /etc/init.d/vsftpd restart
sudo restart vsftpd

{/code}

Inhabilitar el acceso anónimo

Una de las configuraciones que se pueden realizar en el archivo comentado anteriormente es inhabilitar el acceso anónimo. Este acceso se permite de manera predeterminada, por lo que se debe usar la directiva anonymous_enable con el valor NO para impedir su acceso.

{code class="brush:plain;gutter:false"}

anonymous_enable = NO

{/code}

Cambiar mensaje de bienvenida

Cuando se establece una conexión con el servidor, el cliente puede recibir un mensaje de bienvenida. Este mensaje se establece con la directiva ftpd_banner. Por ejemplo:

{code class="brush:plain;gutter:false"}

ftpd_banner=Bienvenido al servidor FTP de Fulanito.

{/code}

En la aplicación cliente que se utilice se mostrará un mensaje similar al siguiente:

ftp02

Permitir acceso a usuarios locales

Para que los usuario que se encuentren registrados en el sistema operativo puedan conectarse al servidor FTP, se debe usar la directiva local_enable con el valor YES. De esta manera podrán acceder a las mismas carpetas a las que tiene acceso el usuario de manera local, aunque sólo para descargas si no se establece otra configuración.

{code class="brush:plain;gutter:false"}

local_enable=YES

{/code}

Para habilitar los permisos de escritura para los usuarios locales, con el fin de que puedan guardar archivos y crear carpetas en los mismos lugares que están autorizados de manera local, se debe usar la directiva write_enable:

{code class="brush:plain;gutter:false"}

write_enable=YES

{/code}

Esta última directiva no autoriza al usuario anónimo a realizar subidas. Para ello se debe usar las directivas anon_upload_enableanon_mkdir_write_enable para habilitar la subida de archivos y la creación de carpetas respectivamente. Debes tener en cuenta que la carpeta /srv/ftp no tiene permisos de escritura para el usuario ftp, por lo que se debe establecer una carpeta con esos permisos para que pueda realizar subidas.

Encerrar a usuarios en su carpeta home

En algunos casos puede ser conveniente por seguridad que los usuarios sólo tengan visibilidad sobre su propia carpeta home y sus subcarpetas, con lo que no podrían ir más arriba de ella. Para realizar esta configuración usa la directiva chroot_local_user.

{code class="brush:plain;gutter:false"}

chroot_local_user=YES

{/code}

Para que esta configuración funcione, la carpeta home de los usuarios no debe tener permisos de escritura, por lo que si es necesario que los usuarios puedan almacenar algo en ella, se deberá crear al menos una subcarpeta en la que sí tenga permisos de escritura. Si no se hace esto se obtiene el siguiente error al intentar hacer la conexión: 

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