Ver índice
 Instalación manual de ProftpD

        Ocultar índice  

   Índice de contenidos
   Instalación en Windows
   Instalación en Ubuntu
   Servidores seguros
   Páginas dinámicas
   Sintaxis básica
   Operaciones
   Arrays
   Formatos de presentación
   Operadores
   Bucles
   Extraer y ord. información
   Funciones
   Ficheros externos
   Imágenes dinámicas
   Gestión de directorios
   Cookies y sesiones
   Clases y objetos
   Ficheros en formato PDF
   Bases de datos MySQL
   PHP y XML
   PDO - Bases SQLite / MySQL
   MySQL a traves de misqli
   Algo de JavaScript y AJAX


Instalación del servidor ProFTD

La instalación de este servidor no presenta ninguna dificultad dado que el software necesario está disponible en los repositorios oficiales de Canonical. Bastará con que escribamos en la consola de Ubuntu:

sudo apt-get install proftpd-basic

que, a diferencia de versiones anteriores, utiliza proftpd-basic como nombre de la aplicación nos aparecerá en consola algo similar a esto:

           
usuario@ubuntu12:/etc$ sudo apt-get install proftpd-basic
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Paquetes sugeridos:
  openbsd-inetd inet-superserver proftpd-doc proftpd-mod-ldap
  proftpd-mod-mysql proftpd-mod-odbc proftpd-mod-pgsql proftpd-mod-sqlite
Se instalarán los siguientes paquetes NUEVOS:
  proftpd-basic
0 actualizados, 1 se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 0 B/2.123 kB de archivos.
Se utilizarán 4.202 kB de espacio de disco adicional después de esta operación.
Preconfigurando paquetes ...
Seleccionando paquete proftpd-basic previamente no seleccionado
(Leyendo la base de datos ... 183910 ficheros o directorios instalados actualmente.)
Desempaquetando proftpd-basic (de .../proftpd-basic_1.3.4a-2_i386.deb) ...
Procesando disparadores para ureadahead ...
Procesando disparadores para man-db ...
Configurando proftpd-basic (1.3.4a-2) ...
Añadiendo el usuario del sistema `proftpd' (UID 115) ...
Añadiendo un nuevo usuario `proftpd' (UID 115) con grupo `nogroup' ...
No se crea el directorio personal `/var/run/proftpd'.
Añadiendo el usuario del sistema `ftp' (UID 116) ...
Añadiendo un nuevo usuario `ftp' (UID 116) con grupo `nogroup' ...
Creando el directorio personal `/srv/ftp' ...
«/usr/share/proftpd/templates/welcome.msg» -> «/srv/ftp/welcome.msg.proftpd-new»

 * Starting ftp server proftpd 
 
ubuntu12 proftpd[8489]: mod_tls/2.4.3: compiled using OpenSSL version 'OpenSSL 1.0.1 14 Mar 2012'
			             headers, but linked to OpenSSL version 'OpenSSL 1.0.1c 10 May 2012' library
ubuntu12 proftpd[8489]: mod_sftp/0.9.8: compiled using OpenSSL version 'OpenSSL 1.0.1 14 Mar 2012' 
			            headers, but linked to OpenSSL version 'OpenSSL 1.0.1c 10 May 2012' library
ubuntu12 proftpd[8489]: mod_tls_memcache/0.1: notice: unable to register 'memcache' SSL session cache: 
			            Memcache support not enabled

Antes de entrar en otras consideraciones vamos a desactivar los módulos que nos plantean problemas de funcionamiento. Para ello hemos de editar el fichero modules.conf por medio del comando de consola


sudo gedit /etc/proftpd/modules.conf

para desactivar los módulos que nos produjeron el mensaje de error y que no van a ser necesarios para nuestra configuración básica. Antepondremos el carácter # a las siguientes líneas de ese fichero:

guardaremos los cambios y pondremos en marcha nuevamente el servidor por medio de los comandos de consola:

sudo /etc/init.d/proftpd start
teniendo en cuenta que para detenerlo habremos de utilizar:
sudo /etc/init.d/proftpd stop

Ya no nos aparecerá el mensaje de advertencia relativo a los módulos. Es el momento de analizar lo ocurrido durante el proceso de instalación y tener presente que


  ¡Cuidado!  

El instalador de Proftpd lo configura de modo que se inicia automáticamente al arrancar el equipo. Si, como hemos comentado en páginas anteriores, pretendemos controlar manualmente esa opción debemos desactivar ese arranque autómatico. La forma más fácila de hacerlo es ejecutar la aplicación Boot-Up Manage cuya instalación hemos comentado en en esta página. Al ejecutar esta aplicación visualizaremos una ventana similar a esta:

dónde bastará con desmarcar la casilla de verificación de la izquierda y guardar los cambios para que ya no vuelva a activarse automaticamente el servidor. A partir de entonces ya será preciso realizar las operaciones de puesta en marcha y parada de forma manual.

Creación de usuarios y grupos virtuales

Veamos ahora la forma de crear nuevos grupos y usuarios virtuales que utilizaremos más adelante para acceder al servidor ProftpD autentificándonos por medio del nombre de usuario y su contraseña.

Al instalar proftdp-basic se incluye una herramienta llamada ftpasswd que, por medio de un script de Perl, permite crear e incluir datos en dos ficheros llamados ftpd.group y ftpd.passwd que contendrán la información relativa a los grupos y usuarios autentificados susceptibles de ser usados para la gestión del servidor FTP y que se incluirán en el directorio /etc/proftpd/.

Empezaremos creando dos grupos de usuarios (podríamos crear cuantos quisiéramos). Para ello utilizaremos los comandos de consola siguientes:

cd /etc/proftpd
que nos posicionará en el directorio /etc/proftpd que es el que contiene la herramienta que vamos a utilizar, y posteriormente ejecutaremos:
sudo ftpasswd --group --name=webmaster --gid=1010
que nos devolverá el siguiente mensaje de consola:
ftpasswd: creating group entry for group webmaster
ftpasswd: entry created
crearemos un nuevo grupo por medio del comando:
sudo ftpasswd --group --name=gestion --gid=1011
que nos devolverá el siguiente mensaje de consola:
ftpasswd: creating group entry for group gestion
ftpasswd: entry created

la ejecución de los comandos anteriores (observa que son idénticos salvo los valores en rojo que son los respectivos nombres de grupo y los números gid) nos habrá creado e incluido los dos grupos en el fichero ftpd.group.

Como nombre de grupo podremos usar una palabra cualquiera (evitando duplicarla) y un número cualquiera (evitando también duplicarlo). En nuestro caso hemos usado dos consecutivos, 1010 y 1011 pero podrían haber sido otros cualesquiera siempre que no coincidan con los que eventualmente pudieran estar en uso.

Para conocer los números gid y uid actualmente en uso podemos recurrir al comando de consola:


sudo cat /etc/shadow

Una vez creados los grupos vamos a crear tres usuarios:

Los comandos serán los siguientes:

sudo ftpasswd --passwd --name=webmaster --uid=1012 --gid=1010 --home=/var/www --shell=/bin/false
que nos devolverá un mensaje con este en que hemos de teclear la contraseña del nuevo usuario (marcada en rojo) cuando nos sea requerida
ftpasswd: creating passwd entry for user webmaster

ftpasswd: /bin/false is not among the valid system shells.  Use of
ftpasswd: "RequireValidShell off" may be required, and the PAM
ftpasswd: module configuration may need to be adjusted.


Password: webmaster
Re-type password: webmaster

ftpasswd: entry created
repetimos el proceso para los dos usuarios siguientes que por pertenecer al mismo grupo requerirán que usemos el gid correspondiente a ese grupo
sudo ftpasswd --passwd --name=secre --uid=1013 --gid=1011 --home=/home/servidorftp --shell=/bin/false
que nos devolverá un mensaje con este en que hemos de teclear la contraseña del nuevo usuario (marcada en rojo) cuando nos sea requerida
ftpasswd: creating passwd entry for user secre

ftpasswd: /bin/false is not among the valid system shells.  Use of
ftpasswd: "RequireValidShell off" may be required, and the PAM
ftpasswd: module configuration may need to be adjusted.


Password: secret
Re-type password: secret

ftpasswd: entry created
por último creamos el usuario super que tendrá el mismo directorio raiz que secre
sudo ftpasswd --passwd --name=super --uid=1014 --gid=1011 --home=/home/servidorftp --shell=/bin/false
que nos devolverá un mensaje con este en que hemos de teclear la contraseña del nuevo usuario (marcada en rojo) cuando nos sea requerida
ftpasswd: creating passwd entry for user secre

ftpasswd: /bin/false is not among the valid system shells.  Use of
ftpasswd: "RequireValidShell off" may be required, and the PAM
ftpasswd: module configuration may need to be adjusted.


Password: superi
Re-type password: superi

ftpasswd: entry created

Es necesario que los usuarios dispongan de sus directorios correspondientes. El directorio /var/www el directorio –raíz de usuario webmaster– ya existe y, además, durante la configuración del servidor Apache le hemos otorgado permisos 777 tanto a él como a sus subdirectorios.

El caso del directorio /home/servidorftp –asignado como raíz para los usuarios secre y super– no existe aún. Hemos de crearlo y aprovecharemos para hacerlo otorgándole los máximos permisos posibles (777). Podemos hacerlo por medio del siguiente comando de consola:


sudo mkdir /home/servidorftp -m 777

Adelantándonos un poco a opciones que comentaremos más adelante, crearemos tres subdirectorios en /home/servidorftp y les asignaremos los nombres: Gestion, Alumnos y Documentacion. En lo que respecta a los permisos les atribuiremos también permisos 777. Podemos hacerlo con estos comandos:


sudo mkdir /home/servidorftp/Gestion -m 777
sudo mkdir /home/servidorftp/Alumnos -m 777
sudo mkdir /home/servidorftp/Documentacion -m 777

Configuración básica

Durante el proceso de instalación de ProftpD se crea un fichero llamdo proftdp.conf que podemos encontrar dentro del directorio /etc/proftpd. Empezaremos haciendo una copia de seguridad de ese fichero. De esa forma siempre podremos volver al original si se cometen errores durante el proceso de configuración. Utilizaremos el comando:


sudo cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.original.conf

Ahora ya podemos editar el fichero proftpd.conf por medio del comando:


sudo gedit /etc/proftpd/proftpd.conf

haciendo las siguientes modificaciones:

Modificaciones en el fichero inicial
LíneaCambiosJustificación
9 Donde dice:Por medio de las directivas AhthUserFile y AhthUserGroup especificaremos la ubicación del fichero de usuarios y contraseñas cuya forma de creación y modificación hemos comentado en el epígrafe anterior.
La tercera línea, AuthOrder nos permite indicar a Proftpd que la autentificación de los usuarios y grupos podrá hacerse bien a través de la información contenida en los ficheros etc/passwd (que son los que Linux utiliza para el almacenamiento de las contraseñas de usuarios y que incluimos por medio de auth_unix.c) como de la contenida en los ficheros ftpd.passwd y ftpd.group que completarán a los anteriores al ser incluida esa opción al agregar el módulo mod_auth_file.c a AuthOrder .
(línea en blanco)
cambiar por:
AuthUserFile "/etc/proftpd/ftpd.passwd"
AuthGroupFile "/etc/proftpd/ftpd.group"
AuthOrder mod_auth_unix.c mod_auth_file.c
13 Donde dice:Desactivaremos esta opción salvo en el caso, muy poco probable, de que nuestro acceso a internet se haya adelantado en el tiempo y ya use el protocolo V6
UseIPv6 on
cambiar por:
UseIPv6 off
17 Donde dice:No tiene transcendencia en el funcionamiento del servidor. Se trata únicamente de modificar el nombre, por defecto, del servidor.
Debian
cambiar por:
ServidorFTP
18 Donde dice:La directiva ServerType permite optar entre dos posibles opciones: standalone o inetd que son los modos de funcionamiento casi estandart de la mayoría de los servidores Linux. La diferencia de usar un modo a otro se traduce básicamente en la velocidad de ejecución y en la carga que soporta el equipo,
ServerType standalone
cambiar por:
ServerType standalone
40 Donde dice:Descomentamos esta directiva para desactivar la exigencia de un shell válido para acceder al servidor. Recuerda que nuestros usuarios virtuales no lo tienen dado que hemos usado shell=/bin/false al crearlo y que, además, durante el proceso de creación nos fué advertida esta circunstancia por medio del mensaje: bin/false is not among the valid system shells. Use of "RequireValidShell off"...
# RequireValidShell off
cambiar por:
RequireValidShell off

Un vez efectuados los cambios anteriores podemos empezar a hacer algunas pruebas de funcionamiento del servidor. Reiniciaremos el servidor y ya podremos hacer algunas pruebas de su funcionamiento. Para ello podemos usar un cliente de FTP (FileZilla puede ser una buena opción disponible en los repositorios de Ubuentu) o incluso el propio navegador accediendo a la dirección ftp://localhost/ y escribiendo el nombre de usuario la contraseña cuando nos sean requeridas.

Probemos con los usuarios secre o super y comprobemos que:

Modificación en el fichero /etc/proftpd/proftpd.conf para «enjaular» los usuarios en su directorio raíz
LíneaCambiosJustificación
36 Donde dice:Al hecho de evitar que un usuario pueda acceder a directorios distintos de los contenidos en su directorio raíz suele decírsele «enjaular el usuario».
Para hacerlo basta con descomentar esta línea
# DefaultRoot ~
cambiar por:
DefaultRoot ~

Estableciendo límites a usuarios y directorios

En el fichero de configuración de ProftpD (/etc/prpftpd/proftpd.conf) es posible establecer una muy amplia gama de limitaciones de acceso tanto para usuarios concretos como para directorios específicos. Se trata de las especificaciones contenidas entre las etiquetas <LIMIT> y </LIMIT> que han de incluir las instrucciones para permitir (ALLOW) o denegar (DENY) algo a alguien. En este aspecto es muy importante el orden en se apliquen esos filtros. Caben dos posibilidades de ordenación:

Por defecto el orden es: Order allow,deny

Limitando los usuarios autorizados

Las condiciones restrictivas de usuarios deben incluirse entre las etiquetas <LIMIT LOGIN> y </LIMIT>

Dentro de ese bloque puede incluirse líneas de instrucciones con esta sintaxis:

Utilizaremos esta directiva para permitir el acceso a nuestro servidor únicamente a los usuarios: ftp que pertenece al grupo nogroup, a los usuarios secre y super del grupo gestion y al usuario webmaster del grupo del mismo nombre. Para ello, editaremos el fichero de configuración por medio del comando:


sudo gedit /etc/proftpd/proftpd.conf

y efectuaremos las siguientes modificaciones:

Modificaciones en el fichero /etc/proftpd/proftpd.conf
LíneaCambiosJustificación
149 Donde dice:Borraremos todas las líneas del fichero que hay de aquí en adelante. La mayoría están comentadas y va a resultarnos muchos más cómodo reescribirlas que irlas analizando una a una y descomentado y/o modificando las necesarias
# <Anonymous ~ftp>
cambiar por:
borrar todo hasta el final con excepción de la última línea donde dice:
Include /etc/proftpd/conf.d/
149 Donde dice:Por medio de AllowUser (permitir el usuario) iremos indicando los usuarios autorizados y/o grupos de usuarios para acceder al servidor. Como consecuencia del DenyAll (denegar a todos). Hay que tener en cuenta que al especificar Order Allow,Deny estaremos impidiendo que se logueen usuarios distintos a los autorizados expresamente en las líneas anteriores.
Como es obvio solo podremos incluir aquí usuarios virtuales creados por medio de la herramienta ftpasswd o los creados automáticamente por el instalador de ProftpD.
(línea en blanco)
cambiar por:
<Limit LOGIN>
      Order Allow,Deny
      AllowGroup gestion
      AllowUser webmaster
      AllowUser ftp
      DenyAll
</Limit>

Permisos y restricciones en directorios no anónimos

La configuración de los servidores FTP suele permitir dos tipos de acceso: anónimos o no anónimos requiriéndose únicamente el nombre de usuario en el primer caso y siendo necesarios en el segundo supuesto el nombre de usuario y su contraseña. Vamos a empezar analizando el segundo tipo —no anónimos— y viendo la forma en la que pueden particularizarse las condiciones de acceso a directorios y subdirectorios estableciendo los usuarios a los que se permitirá el acceso y determinando también qué acciones están permitidas a cada uno de esos usuarios.

Empezaremos detallando las palabras reservadas asociadas a las diferentes acciones que serán utilizadas para establecer cuales de ellas autorizaremos o denegaremos a cada usuario o grupo de usuarios.

Clave Descripción de la acción asociada a la palabra clave
READ Equivale a enumerar cada uno de los comandos FTP que se ocupan de la lectura de archivos (lista de directorios no incluidas)que son: RETR, SITE, SIZE y STAT
RETR Transferir (descargar) un archivo desde el servidor al cliente.
SITE Envia comandos específicos al servidor remoto
SIZE Devuelve el tamaño de un archivo del servidor
STAT Devuelve el estado (status) actual de servidor
WRITE Equivale a enumerar todos los comandos FTP que se ocupan de la escritura y que son: APPE, DELE, MKD, RMD, RNTO, STOR, XMKD, XRMD
APPE Añade o crea un fichero
DELE Borra un fichero en el servidor
MKD
XMKD
Crea un directorio en el servidor
RMD
XRMD
Borrar un directorio en el servidor
STOR Transferir (subir) )un archivo desde el cliente al servidor
DIRS Equivale a enumerar uno a uno los comandos FTP que se ocupan del listado de directorios y que son: CDUP, XCDUP, CWD, XCWD, LIST, MDTM, NLST, PWD, XPWD, RNFR
CDUP
XCDUP
Cambiar el directorio de trabajo al directorio raíz
CWD
XCWD
Cambiar el directorio de trabajo en el servidor
LIST Si se especifica un directorio o archivo devuelve información sobre él. De lo contrario devuelve una lista del directorio de trabajo
MDTM Devuelve la fecha de la última modificación de un fichero o directorio
NLST Devuelve una lista de nombres de ficheros contenidos en un directorio específico
PWD
XPWD
Muestra el directorio activo en el servidor.
RNFR Enviado por el cliente formando un par junto RNTO permite renombrar un directorio o fichero en el servidor.

Veamos la forma de establecer las condiciones de acceso de usuarios no anónimos a un directorio concreto. Podría ser algo similar a esto:

            <Directory ruta_absoluta_del_directorio >
                    AllowOverwrite off
                              <Limit LOGIN>
                                      AllowUser usuarios_a los que se autorizan el acceso al directorio
                                      DenyUser usuarios a quienes se deniegan el acceso al directorio
                              </Limit>
                              <Limit acciones_permitidas>
                                      AllowUser usuarios_a los que se autorizan las acciones permitidos
                                      DenyUser usuarios a quienes se deniegan la ejecución de las acciones permitidos
                              </Limit>
            </Directory>

dónde como puedes observar facilmente se estructuran las especificaciones de la siguiente forma:

Veamos como establecer condiciones para la situación siguiente. Va a tratarse del directorio servidorftp al que vamos a establecerle las siguientes restricciones:

Estableceremos la condiciones de forma individual para cada uno de los directorios e incluiremos en cada directorio —por razones de seguridad y a sugerencia de los desarrolladores de la aplicación— una primera limitación que restricción total a todos lo usuarios. Con ellos evitaríamos situaciones imprevistas en las que un subdirectorio podría heredar, por error en la configuración, permisos no deseados desde un directorio superior.

Configuración del directorio /home/servidorftp
156 Incluiremos AllowOverwrite on permitirá, a quien tenga permiso para hacerlo, que se sobreescriban los ficheros contenidos en el directorio.

Limit LOGIN permitirá el acceso a los usuarios secre y super y lo denegará a todos los demás.

El primer Limit (ALL) para impedir a todos los usuarios (DenyAll) ejecutar las acciones indicadas en la etiqueta Limit. Como ALL incluye todas las acciones posibles, el resultado será que ningún usuario podrá hacer nada en ese directorio.

El segundo Limit (DIRS) va a permitir las acciones DIRS únicamente al usuario secre. Por tanto secre no podrá ni subir, ni descargar, ni modificar nada en ese directorio. Solo podrá ver la lista de sus contenidos.

Por último, el tercer Limit (ALL) va a permitir hacer cualquier cosa al usuario super pero denegará esa posibilidad a cualquiera de los demás usuarios.
<Directory /home/servidorftp/>
    AllowOverwrite on
    <Limit LOGIN >
        AllowUser secre super
        DenyAll
    </Limit>
    <Limit ALL >
        DenyAll
    </Limit>
    <LIMIT DIRS>
        AllowUser secre
    </limit>
    <LIMIT ALL>
        AllowUser super
        DenyAll
    </limit>
</Directory>


Configuración del directorio /home/servidorftp/Alumnos
174 Incluiremos AllowOverwrite on permitirá, a quien tenga permiso para hacerlo, que se sobreescriban los ficheros contenidos en el directorio.

Limit LOGIN permitirá el acceso al usuario super y lo denegará a todos los demás.

El primer Limit (ALL) para impedir a todos los usuarios (DenyAll) ejecutar las acciones indicadas en la etiqueta Limit. Como ALL incluye todas las acciones posibles, el resultado será que ningún usuario podrá hacer nada en ese directorio. En este caso podría omitirse ya que estaríamos ante una situación redundante en el segundo del los límites. Lo mantenemos únicamente como opción rutinaria que vamos a mantener a lo largo de todos los directorios.

Por último, el segundo Limit (ALL) va a permitir hacer cualquier cosa al usuario super pero denegará esa posibilidad a cualquiera de los demás usuarios.
<Directory /home/servidorftp/Alumnos>
    AllowOverwrite on
    <Limit LOGIN >
        AllowUser super
        DenyAll
    </Limit>
    <Limit ALL >
        DenyAll
    </Limit>
    <LIMIT ALL>
        AllowUser super
        DenyAll
    </limit>
</Directory>


Configuración del directorio /home/servidorftp/Documentacion
190 Incluiremos AllowOverwrite on permitirá, a quien tenga permiso para hacerlo, que se sobreescriban los ficheros contenidos en el directorio.

Limit LOGIN permitirá el acceso a los usuarios secre y super y lo denegará a todos los demás.

El primer Limit (ALL) para impedir a todos los usuarios (DenyAll) ejecutar las acciones indicadas en la etiqueta Limit. Como ALL incluye todas las acciones posibles, el resultado será que ningún usuario podrá hacer nada en ese directorio.

El segundo Limit (READ) va a permitir las acciones READ únicamente al usuario secre. Por tanto secre no podrá subir ni modificar nada en ese directorio pero sí podrá descargar ficheros.

Por último, el tercer Limit (ALL) va a permitir hacer cualquier cosa al usuario super pero denegará esa posibilidad a cualquiera de los demás usuarios.
<Directory /home/servidorftp/Documentacion>
    AllowOverwrite on
    <Limit LOGIN >
        AllowUser secre super
        DenyAll
    </Limit>
    <Limit ALL >
        DenyAll
    </Limit>
    <LIMIT READ>
        AllowUser secre
    </limit>
    <LIMIT ALL>
        AllowUser super
        DenyAll
    </limit>
</Directory>


Configuración del directorio /home/servidorftp/Gestion
209 Incluiremos AllowOverwrite on permitirá, a quien tenga permiso para hacerlo, que se sobreescriban los ficheros contenidos en el directorio.

Limit LOGIN permitirá el acceso a los usuarios secre y super y lo denegará a todos los demás.

El primer Limit (ALL) para impedir a todos los usuarios (DenyAll) ejecutar las acciones indicadas en la etiqueta Limit. Como ALL incluye todas las acciones posibles, el resultado será que ningún usuario podrá hacer nada en ese directorio.

Por último, el segundo Limit (ALL) va a permitir hacer cualquier cosa a los usuarios super y secre.
<Directory /home/servidorftp/Gestion>
    AllowOverwrite on
    <Limit LOGIN >
        AllowUser secre super
        DenyAll
    </Limit>
    <Limit ALL >
        DenyAll
    </Limit>
    <LIMIT ALL>
        AllowUser secre super
        DenyAll
    </limit> </Directory>

Hechas y guardadas estas modificaciones en el fichero proftpd.conf ya estaremos en condiciones de reiniciar el servidor Proftpd para comprobar su funcionamiento.

En lo que atañe al usuario webmaster no hemos incluida nada en proftpd.conf. Al crear este usuario hemos escrito en la consola: sudo ftpasswd --passwd --name=webmaster --uid=1012 --gid=1010 --home=/var/www --shell=/bin/false y con ella hemos indicado que el directorio raíz para este usuario es /var/www. Como además hemos activado la opción DefaultRoot ~, por defecto, tenemos enjaulado a este usuario en su directorio raíz y, por defecto, dentro de ese directorio tendrá todos las posibilidades de gestión de ese directorio via FTP sin necesidad de hacer ninguna modificación en la configuración. No obstante, también sería posible agregar (simplemente por mantener abierta la posibilidad de incluir posteriormente alguna nueva condición para este usuario) en el fichero de configuración un bloque de instrucciones como este:

<Directory /var/www/>
    <Limit LOGIN >
        AllowUser webmaster
        DenyAll
    </Limit>
    AllowOverwrite on
    <Limit ALL >
        DenyAll
    </Limit>
    <Limit ALL >
        AllowUser webmaster
    </Limit>
</Directory>

Configuración para usuarios anónimos

Durante el proceso de instalación se nos ha creado de forma automática un usuario llamado ftp y su directorio raíz /srv/ftp del que es propietario ftp y cuyos permisos son 644

Vamos a configurar el usuario ftp como usuario anónimo y vamos a permitirle acceder sin contraseña a su directorio raíz restringiendo sus posibilidades a la opción READ (que permitirá descargar ficheros) y DIRS que permitirá listar sus contenidos. Además vamos a hacer la configuración de tal modo que pueda realizar esas tareas cualquiera que se conecte via FTP con nombre de usuario anonimo o pepe (además de ftp).

Configuración del directorio /srv/ftp para usuarios anónimos
241 Incluiremos Las instrucciones ahora irán contenidas en las etiquetas <Anonymous> </Anonymous> y el directorio afectado puede incluirse dentro de la etiqueta de apertura bien especificando su ruta absoluta o utilizando ~ftp que sería lo mismo que decir el directorio raíz del usuario ftp que es, en definitiva lo mismo que /srv/ftp/

Los usuarios y los grupos que tienen acceso al directorio se definen aquí por medio de User nombre del usuario y Group nombre del grupo

Por medio de la directiva UserAlias apodo nombre_de_usuario pueden establecerse tantos alias como se desee. En este caso anonimo y pepe serán interpretados como si se tratara del usuario ftp

Los límites se establecen de la misma forma que en el caso de usuarios autentificados y en el caso de que existieran directorios con límites distintos se incluirían sus especificaciones dentro de las etiquetas <Directory></Directory> pero estas deberán incluirse siempre antes de la etiqueta de cierre </Anonymous>
<Anonymous ~ftp>
    User ftp
    Group nogroup
    UserAlias anonimo ftp
    UserAlias pepe ftp
    <Limit ALL >
        DenyAll
    </Limit>
    <LIMIT READ DIRS>
        AllowUser ftp
        DenyAll
    </limit>
</Anonymous>

Una vez hechas estas modificaciones, guardado el fichero proftpd.conf y reiniciado el servidor estaríamos en condiciones de utilizar el servidor con las opciones enumeradas. No son las únicas (las opciones de configuración son mucho más amplias) pero nos resultarán suficientes para disponer de un servidor FTP que podrá ser gestionado por medio de scripts PHP.