Table of Contents

Servidor de ftp pure-ftpd

ftp pure-ftpd

Se trata de un servidor ftp ligero (creo), que permite usuarios virtuales, es decir, que no requiere cuentas de sistema, aunque las puede soportar y que también puede (o no) 'enjaular' al usuario en su directorio, de forma que no pueda salir de él.

Instalación

(Todo como 'root')

1. Actualizar la lista de paquetes e instalar pure-ftpd:

sudo aptitude update; sudo aptitude install pure-ftpd

2. Contestar 'S' o 'Y' a todas las preguntas

Una vez instalado, el servidor ya está corriendo, y se arrancará de forma automática si se reinicia la máquina

Creación de usuarios

1. Creamos el grupo de sistema 'ftp' (si no existe, claro):

sudo groupadd ftp

2. Creamos el usuario de sistema 'ftp' (si no existe, claro) sin acceso a consola, y lo asignamos al grupo 'ftp':

sudo useradd -g ftp -d /dev/null ftp

3. (OPCIONAL) Asignamos grupos suplementarios al usuario ftp, en mi caso mldonkey:

sudo usermod -G ftp,mldonkey ftp

4. Creamos el usuario virtual (solo de pure-ftpd), que irá vinculado al usuario de sistema 'ftp':

sudo pure-pw useradd usuario_pure -u ftp -g ftp -d /ruta/acceso/usuario/pure -f /etc/pure-ftpd/pureftpd.passwd -t 10

En el ejemplo hemos limitado su capacidad de descarga a 10 Kb/s

5. Damos permisos de lectura/escritura:/etc/pure-ftpd/pureftpd.passwd

sudo chown -R ftp:ftp /ruta/acceso/usuario/pure

6. Refrescamos la base de datos de usuarios virtuales de pure-ftpd:

sudo pure-pw mkdb

La base de datos con los usuarios virtuales está en '/etc/pure-ftpd/pureftpd.pdb'

Especificar el uso de usuarios virtuales

Por defecto al arrancar pure-ftpd, o al reiniciar el servicio ('/etc/init.d/pure-ftpd restart') la autentificación la deja en manos de cuenta de sistema. Para forzar el uso de usuarios virtuales:

(Todo como root)

1. Entrar en el directorio donde se especifica el orden de sistemas de autentificación:

cd /etc/pure-ftpd/auth

2. Crear un enlace simbólico al fichero que indica el uso de usuarios virtuales:

sudo ln -s ../conf/PureDB 60puredb

Lógicamente '60' debe ser el número inferior en ese directorio para que sea la primera opción.

3. Reiniciamos el servicio:

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

Fijar puertos

sudo su
echo "30000 30001" > /etc/pure-ftpd/conf/PassivePortRange
sudo /etc/init.d/pure-ftpd restart

OJO: esta opción limita el número máximo de usuarios que se pueden conectar al mismo tiempo. Básicamente la fórmula es:

Número máximo de usuarios concurrentes = Total puertos abiertos (2 en el ejemplo) / 2

Otras configuraciones

En general podemos ver las opciones de configuración haciendo:

man pure-ftpd

...
       Alternative style :
       -0 --notruncate
       -1 --logpid
       -4 --ipv4only
       -6 --ipv6only
       -a --trustedgid
       -A --chrooteveryone
       -b --brokenclientscompatibility
       -B --daemonize
       -c --maxclientsnumber
       -C --maxclientsperip
       -d --verboselog
       -D --displaydotfiles
       -e --anonymousonly
       -E --noanonymous
       -f --syslogfacility
       -F --fortunesfile
       -g --pidfile
       -G --norename
       -h --help
       -H --dontresolve
       -i --anonymouscantupload
       -I --maxidletime
       -j --createhomedir
       -J --tlsciphersuite
       -k --maxdiskusagepct
       -K --keepallfiles
       -l --login
       -L --limitrecursion
       -m --maxload
       -M --anonymouscancreatedirs
       -n --quota
       -N --natmode
       -o --uploadscript
       -O --altlog
       -p --passiveportrange
       -P --forcepassiveip
       -q --anonymousratio
       -Q --userratio
       -r --autorename
...

Y estas opciones tienen su correspondencia en:

man pure-ftpd-wrapper

...
   Numerical values
       There are several types of numerical values (one number, two numbers, one or two numbers, two octal numbers).

       One number
           "MaxClientsNumber", "MaxClientsPerIP", "MaxDiskUsage", "MaxIdleTime", "MaxLoad", "MinUID", "TLS", "TrustedGID".

       Two numbers
           "AnonymousRatio", "LimitRecursion", "PassivePortRange", "PerUserLimits", "Quota", "UserRatio".

       Two numbers (with unlimited value)
           This allows -1 in addition to positive numbers indicating an unlimited values.

           "LimitRecursion".

       One or two numbers
           "AnonymousBandwidth", "UserBandwidth".

       Two octal numbers
           "Umask".
...

Veamos algunos ejemplos:

pure-ftpd pure-ftpd-wrapper Archivo Ejemplo de contenido
-c –maxclientsnumber MaxClientsNumber /etc/pure-ftpd/conf/MaxClientsNumber 5
-y –peruserlimits PerUserLimits /etc/pure-ftpd/conf/PerUserLimits 1 10