Configuración FTP · 2 min read · Feb 09, 2026

Alojamiento Virtual Con vsftpd Y MySQL En Debian Etch - Página 2

4 Configurar vsftpd

Primero creamos un usuario no privilegiado llamado vsftpd (con el directorio home /home/vsftpd) que pertenece al grupo nogroup. Ejecutaremos vsftpd bajo este usuario, y los directorios FTP de nuestros usuarios virtuales estarán en el directorio /home/vsftpd (por ejemplo, /home/vsftpd/user1, /home/vsftpd/user2, etc.).

useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

Luego hacemos una copia de seguridad del archivo original /etc/vsftpd.conf y creamos el nuestro:

cp /etc/vsftpd.conf /etc/vsftpd.conf_orig  
cat /dev/null > /etc/vsftpd.conf  
vi /etc/vsftpd.conf

El archivo debe tener el siguiente contenido:

| listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES nopriv_user=vsftpd chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/vsftpd.pem guest_enable=YES guest_username=vsftpd local_root=/home/vsftpd/$USER user_sub_token=$USER virtual_use_local_privs=YES user_config_dir=/etc/vsftpd_user_conf |

Las opciones de configuración se explican en http://vsftpd.beasts.org/vsftpd_conf.html. Las opciones importantes para nuestra configuración virtual son chroot_local_user, guest_enable, guest_username, user_sub_token, local_root y virtual_use_local_privs.

Con la opción user_config_dir puedes especificar un directorio para archivos de configuración por usuario que anulan partes de la configuración global. Esto es totalmente opcional y depende de ti si deseas utilizar esta función. Sin embargo, debemos crear ese directorio ahora:

mkdir /etc/vsftpd_user_conf

Ahora debemos configurar PAM para que utilice la base de datos MySQL para autenticar a nuestros usuarios FTP virtuales en lugar de /etc/passwd y /etc/shadow. La configuración de PAM para vsftpd está en /etc/pam.d/vsftpd. Hacemos una copia de seguridad del archivo original y creamos uno nuevo así:

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig  
cat /dev/null > /etc/pam.d/vsftpd  
vi /etc/pam.d/vsftpd

| auth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 |

¡Asegúrate de reemplazar la contraseña de MySQL con la tuya propia!

Después, reiniciamos vsftpd:

/etc/init.d/vsftpd restart

5 Crear El Primer Usuario Virtual

Para poblar la base de datos puedes usar la consola de MySQL:

mysql -u root -p
USE vsftpd;

Ahora creamos el usuario virtual testuser con la contraseña secret (que se almacenará cifrada usando la función PASSWORD de MySQL):

INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));  
quit;

directorio home de testuser es /home/vsftpd/testuser; desafortunadamente, vsftpd no crea ese directorio automáticamente si no existe. Por lo tanto, lo creamos manualmente ahora y lo hacemos propiedad del usuario vsftpd y del grupo nogroup:

mkdir /home/vsftpd/testuser  
chown vsftpd:nogroup /home/vsftpd/testuser

Ahora abre tu programa cliente FTP en tu estación de trabajo (algo como WS_FTP o SmartFTP si estás en un sistema Windows o gFTP en un escritorio Linux) y trata de conectarte. Como nombre de host usas server1.example.com (o la dirección IP del sistema), el nombre de usuario es testuser, y la contraseña es secret.

Si puedes conectarte - ¡felicitaciones! Si no, algo salió mal.

6 Administración de Base de Datos

Para la mayoría de las personas es más fácil si tienen una interfaz gráfica para MySQL; por lo tanto, también puedes usar phpMyAdmin (en este ejemplo bajo http://server1.example.com/phpmyadmin/) para administrar la base de datos vsftpd.

Cada vez que crees o modifiques un usuario, asegúrate de usar la función PASSWORD de MySQL para cifrar la contraseña de ese usuario. Además, cuando crees un nuevo usuario virtual, por favor no olvides crear el directorio home de ese usuario en la consola, como se mostró al final del capítulo anterior.

7 Enlaces

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.