Instalación en Ubuntu

sudo apt install pure-ftpd

Con la configuración por defecto, los usuarios que se hayan creado en el sistema (usuarios de Ubuntu) podrán conectarse al servidor usando una aplicación cliente FTP (p.e. Filezilla Client), y podrán ver los archivos para los que se le haya asignado permisos en el sistema, y podrán subir archivos en las carpetas donde tengan permiso de escritura.

Si en el servidor que se está configurando se desea tener una serie de usuarios con idea de que únicamente puedan manejar la información existente en la carpeta que se le asigne, se deben crear usuarios virtuales para este servicio Pure-FTPd.

Usuarios virtuales

Vamos a configurar el servicio FTP ofrecido por Pure-FTPd para que distintos usuarios se puedan conectar al servidor para transferir archivos, pero de manera que un determinado usuario sólo pueda ver sus propios archivos, es decir, que no pueda salir de una carpeta que se le asigne.

Encerrar a los usuarios virtuales en su carpeta

Editar el archivo de configuración de Puer-FTPd que se encuentra en: /etc/default/pure-ftpd-common

Asignar a VIRTUALCHROOT el valor true

VIRTUALCHROOT=true

Identificar a los usuarios usando la base de datos de Pure-FTPd

En la carpeta /etc/pure-ftpd/auth se indican los métodos de identificación de los usuarios. En esa carpeta se debe crear un enlace simbólico al archivo /etc/pure-ftpd/conf/PureDB que hace referencia al archivo donde se almacenará la base de datos que gestiona Pure-FTPd para identificar a los usuarios de este servicio.

cd /etc/pure-ftpd/auth
sudo ln -s /etc/pure-ftpd/conf/PureDB 50pure

Crear grupo y usuario del sistema para identificar a los usuarios de Pure-FTPd

sudo groupadd ftpgroup
sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

Crear usuarios virtuales

Crear una carpeta (p.e. /home/pubftp) donde se alojarán todas las carpetas propias de cada uno de los usuarios virtuales que se crearán posteriormente.

sudo mkdir /home/pubftp

Crear los usuarios virtuales que se deseen, sustituyendo NOMBRE_USUARIO por el nombre que se desee en los 2 sitios donde aparece en la siguiente orden:

sudo pure-pw useradd NOMBRE_USUARIO -u ftpuser -g ftpgroup -d /home/pubftp/NOMBRE_USUARIO

Crear la carpeta donde el usuario podrá alojar sus archivos, indicando la misma ruta que en la línea anterior:

sudo mkdir /home/pubftp/NOMBRE_USUARIO

Asignarle a la carpeta de usuarios (y sus subcarpetas) el usuario (ftpuser) y grupo (ftpgroup) del sistema que se han creado anteriormente, ya que todos los usuarios virtuales estarán asociados a ese usuario del sistema.

sudo chown -hR ftpuser:ftpgroup /home/pubftp/

Una vez creados todos los usuarios virtuales que se deseen, hay que actualizar la base de datos de usuarios y contraseñas:

sudo pure-pw mkdb

Comprobar la lista de usuarios virtuales

sudo pure-pw list

Cambiar la contraseña a un determinado usuario

sudo pure-pw passwd NOMBRE_USUARIO

Se solicita la nueva contraseña tras ejecutar la orden anterior.

Reiniciar el servicio

sudo service pure-ftpd restart

O bien:

sudo /etc/init.d/pure-ftpd restart

Conexión de usuario anónimo

Para habilitar la conexión al servidor a usuarios sin que necesiten indicar un nombre de usuario ni contraseña (usuario anónimo o anonymous), se debe editar el archivo /etc/pure-ftpd/conf/NoAnonymous cambiando el contenido "yes" por "no".

Por otro lado, se debe crear un usuario en el sistema cuyo nombre sea ftp, al que se le va a indicar que no use ningún shell y cuya carpeta de usuario sea, por ejemplo, /var/ftp, la cual debe crearse.

sudo mkdir /var/ftp
sudo useradd ftp --shell /sbin/nologin --home /var/ftp

Si se desea que ese tipo de usuarios no puedan subir archivos al servidor (que es lo habitual), se deben cambiar los permisos de su carpeta de usuario (/var/ftp) y quitarle los permisos de escritura (555).

sudo chmod 555 /var/ftp

Más información