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