Esta guía está basada en distribuciones derivadas de Debian y utilizando un usuario con privilegios. No es una guía exhaustiva, es un resumen de una elaborada por un amigo y está hecho con algunas modificaciones para adaptarlas al contexto.
La idea es crear un usuario local para todos los usuarios virtuales se crearán.
Requerimientos:
-vsftpd
-db4.x (db4.6-util) en Debian squeeze
-Conocimientos básicos de Linux
Crear usuarios virtuales
Crear un archivo de texto con los nombres de usuarios y contraseñas para los usuarios virtuales como sigue:
Editar el archivo users agregando:
Código: Seleccionar todo
usuario1
password1
usuario2
password2
usuarion
passwordn
Este archivo de texto se utilizará para crear la base de datos con los nombres de usuarios y contraseñas para los usuarios virtuales. Donde: 'usuario1' es el nombre del primer usuario y 'password1' contraseña para 'usuario1' y así sucesivamente.
Crear la base de datos:
Código: Seleccionar todo
mkdir /etc/vsftpd
db4.6_load -T -t hash -f users /etc/vsftpd/virtual_users.db
'users' se refiere al archivo de texto anteriormente creado.
Con esto creamos la base de datos 'virtual_users.db' en /etc/vsftpd
Editar el archivo /etc/pam.d/vsftpd
Código: Seleccionar todo
# Standard behaviour for ftpd(8).
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.
# Standard pam includes
#@include common-account
@include common-session
#@include common-auth
#auth required pam_shells.so
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/virtual_users
account required /lib/security/pam_userdb.so db=/etc/vsftpd/virtual_users
Aquí se agregaron las dos últimas líneas para especificar cuál será la base de datos con los usuarios virtuales.
Crear el usuario local con el que los usuarios virtuales se autenticarán:
Código: Seleccionar todo
useradd -d /var/ftp/usuarios_virtuales virtual
chown -R virtual.virtual /var/ftp/usuarios_virtuales
Se asume que el directorio /var/ftp/usuarios_virtuales se utilizará para almacenar los archivos que subirán los usuarios virtuales.
La primera línea de comandos es para crear el usuario 'virtual' con home en /var/ftp/usuarios_virtuales
La segunda línea de comandos para establecer al usuario 'virtual' como dueño de /var/ftp/usuarios_virtuales
Permisos de los usuarios
Crear los archivos de configuración para los usuarios:
Código: Seleccionar todo
mkdir /etc/vsftpd/users
touch /etc/vsftpd/users/usuario1
Se crea un archivo de configuración con el nombre del usuario que se definió para la base de datos, en este caso 'usuario1'.
Así se crean otros archivos de configuración para otros usuarios virtuales.
Editar el archivo de configuración para 'usuario1'
Código: Seleccionar todo
dirlist_enable=YES
download_enable=YES
local_root=/var/ftp/usuarios_virtuales
anon_upload_enable=YES
anon_world_readable_only=NO
write_enable=YES
Con esta configuración el usuario podrá listar el directorio, descargar, subir y escribir archivos.
Nota: La documentación del vsftpd es bastante clara y explica todos los parámetros posibles, es recomendable leerla para enriquecer las posibles configuraciones, aunque en este ejemplo se recojan según la situación.
Definir usuarios que serán rechazados:
Código: Seleccionar todo
cat /etc/passwd | cut -d ":" -f 1 | sort > /etc/vsftpd/denied_users
Con esta línea de comandos se crea el archivo /etc/vsftpd/denied_users para evitar que los usuarios del sistema se puedan autenticar exceptuando a 'virtual' .
Archivo de configuración del vsftpd:
Código: Seleccionar todo
listen=YES
anonymous_enable=YES # permitir usuarios anónimos, esto es para responder a tu problema
anon_root=/var/ftp # directorio raíz para usuarios anónimos
no_anon_password=YES # permitir usuarios anónimos sin contraseñas
local_enable=YES # permitir que los usuarios locales se autentiquen
anon_upload_enable=NO # no permitir que los usuarios anónimos suban archivos
anon_mkdir_write_enable=NO # no permitir que los usuarios anónimos creen directorios
anon_other_write_enable=NO # no permitir que los usuarios anónimos renombren, eliminen o escriban archivos
chroot_local_user=YES # enjaular a los usuarios virtuales en su home, este caso: /var/ftp/usuarios_virtuales
pam_service_name=vsftpd # indica el servicio PAM que usará vsftpd
guest_enable=YES # permitir usuarios no anónimos
guest_username=virtual # define el nombre de usuario del usuario virtual
user_config_dir=/etc/vsftpd/users # ubicación de los archivos de configuración de los usuarios virtuales
userlist_enable=YES # rechazar los nombres de usuarios especificados en /etc/vsftpd/denied_users
userlist_file=/etc/vsftpd/denied_users # rechazar los usuarios definidos en el archivo 'denied_users'
Notas: el usuario local que se crea para los usuarios virtuales no puede ser 'ftp' ya que este es el nombre de usuario que se utiliza para los usuarios anónimos.
Fuentes:
Resumen de documento creado por Ixen Pérez Rodríguez recopilación de:
http://vsftpd.beasts.org/#about
http://www.backports.ubuntuforums.org/s ... hp?t=34292
http://www.tuxapuntes.com/drupal/node/212
http://www.guatewireless.org/os/linux/s ... -fantasma/