educación, informática y demás

Servidor FTP en GNU/Linux – vsftpd

1. Instalación de servidor FTP

El servidor FTP que vamos a instalar es vsftpd. Utilizaremos el comando de instalación de paquetes apt-get para instalarlo.

Como siempre que se instala una aplicación, antes de instalar el paquete, actualizamos la lista de paquetes disponibles en los repositorios. Para ello utilizamos la opción update del comando apt-get.

sudo apt-get update

Una vez actualizada la lista de paquetes, instalamos el paquete del servidor FTP. En este caso vamos a trabajar con el servidor vsftpd.

sudo apt-get install vsftpd

Control del servidor

Por norma general, todos los servicios que instalemos en nuestro sistema instalarán un script de control que permitirá realizar las principales acciones de control sobre el servicio.

Este script de control se ejecuta con el comando service que debe ejecutarse como administrador. A este comando, se le pasa como parámetro el nombre del script de control seguido de la acción que queramos realizar con él.

sudo service script acción

Las acciones más comunes en estos scripts de control son las siguientes:

  • status. Muestra información de estado del servicio.
  • start. Inicia el servicio.
  • stop. Para el servicio.
  • restart. Reinicia el servicio

Si queremos obtener información de las acciones disponibles, podemos ejecutar el script de control sin pasar por parámetro la acción a realizar. Esto, posiblemente, mostrará las opciones disponibles para este servicio

En el caso del servidor vsftpd, el script de control se llama vsftpd. Si queremos consultar el estado del servidor podemos utilizar la opción status.

sudo service vsftpd status

Fichero de configuración

La mayoría de los servicios se configuran a través de uno o varios ficheros de configuración de texto plano. Estos ficheros suelen estar dentro del directorio /etc, bien en un subdirectorio o bien en el mismo directorio /etc. La configuración de los mismos suele consistir en crear o modificar un fichero de texto plano con las opciones de configuración que necesitemos.

Una vez realizada la configuración en el fichero o ficheros de configuración, es necesario reiniciar o recargar el servicio para que los cambios en el fichero de configuración sean tenidas en cuenta por el servidor.

Por este motivo, habitualmente, cuando configuramos un servicio primero editamos el fichero de configuración, establecemos la configuración deseada y, después de guardar los cambios, reiniciar el servidor para que los cambios surtan efectos.

En este caso, para el servidor FTP vsftpd, el fichero de configuración está en /etc/vsftpd.

Para editarlo podemos utilizar cualquier editor de ficheros, como nano en modo texto, gedit en modo gráfico o cualquier otro. Lo importante es no olvidar editarlo como administrador.

sudo nano /etc/vsftpd.conf

Este fichero de configuración se instaló junto con el servidor y contiene una configuración por defecto.

Si mostramos el contenido del fichero o lo editamos, podremos comprobar que este tiene muchas líneas, la mayoría comentarios que nos dan información sobre distintos parámetros de configuración e incluso parámetros de configuración comentados.

Si mostramos solo las líneas de configuración que no son comentarios nos encontramos con la siguiente configuración.

Configuración básica de FTP

Usuario del FTP

El servidor FTP permitirá a usuarios remotos acceder a ficheros almacenados en el sistema de ficheros del sistema en el que está instalado.

Para poder acceder al sistema de ficheros, el servidor FTP necesita utilizar una cuenta de usuario del sistema. El servidor vsftpd utiliza la cuenta de usuario ftp.

Podemos mostrar información sobre dicha cuenta de usuario consultando el fichero de cuentas de usuario del sistea y utilizando el filtro grep para que solo muestre la cuenta cuyo nombre de usuario coincida con el nombre ftp.

Esta cuenta de usuario es utilizada cuando el servidor FTP tiene que acceder al sistema de ficheros por si mismo o cuando un usuario anónimo accede al FTP y quiere acceder a los ficheros que almacena.

Directorio raíz del ftp

El servidor FTP tiene un directorio raíz donde se almacenan los ficheros que se comparten a través del servidor. Cuando un usuario cliente se conecte al FTP como usuario anónimo, el servidor FTP tratará de localizar el recurso solicitado en el directorio raíz del ftp.

Este directorio, por defecto, está en /srv/ftp, que es el directorio personal del usuario que utiliza el servidor ftp para acceder al sistema.

De esta forma, cuando un usuario anónimo accede al FTP, el directorio raíz que se muestra en el sistema de ficheros del FTP se corresponde con este directorio raíz /srv/ftp.

Los usuarios anónimos no pueden salir de este directorio raíz, por lo que no podrán acceder a ficheros que estén almacenados en otros directorios externos.

Todos los ficheros y directorios que creemos en este directorio, estarán accesibles a los usuarios que se conecten al FTP.

Hay que tener en cuenta que estos ficheros y directorios están dentro del sistema de ficheros del sistema donde está ejecutándose el servidor FTP y que, por lo tanto, el sistema operativo realizará comprobaciones de acceso aplicando los permisos que se hayan configurado.

Según los permisos que hemos configurado en los directorios privado y publico del ejemplo, al directorio privado solo podrá acceder el usuario root y javierpm, este último solo para realizar operaciones de lectura.

Al directorio público podrá acceder cualquier usuario (permisos de otros = r-x) aunque el único que podría realizar operaciones de lectura y escritura será el usuario root.

Se desaconseja, como es lógico, iniciar sesión en el ftp con el usuario root. Cuando ponemos este tipo de permisos es porque no queremos que ningún usuario pueda escribir ahí.

Ayuda de configuración

Para obtener ayuda del fichero de configuración del servidor FTP vsftpd podemos aprovechar los comentarios del fichero de configuración por defecto y consultar la página de manual del servidor vsftpd.

Consultando la página de manua

En la página de manual se muestran las opciones de configuración disponibles para el servidor ftp.