Montar un Servidor FTP en Ubuntu
En esta guía montaremos un Servidor FTP multiusuario con usuarios virtuales, utilizando VSFTPD + PAM + MySQL. El servicio FTP tradicional consiste en que los usuarios del sistema operativo tienen acceso al sistema de ficheros con sus mismas credenciales y atribuciones, y adicionalmente hay una cuenta de usuario anónimo para que públicamente se puedan descargar determinados contenidos. La característica especial, entonces, de esta instalación es que todos los usuarios FTP se almacena en una base de datos, y pasan a ser “usuarios virtuales” en lugar de “usuarios reales” del sistema operativo. De esta manera se evita la creación de múltiples usuarios reales en el sistema operativo, y todos los usuarios virtuales actúan con una misma cuenta del sistema.
Antes de nada hay que verificar que el Router esté correctamente configurado para no tener problemas de conectividad. Hay que abrir el puerto 20 y configurarlo con la IP local de nuestro servidor.
Al servidor tambien debemos ponerle la IP manual asi tendrá siempre la misma y evitaremos errores al conectarnos remotamente.
1)Instalamos los programas a utilizar, desde el terminal
sudo apt-get install mysql-server sudo apt-get install libpam-runtime libpam-modules sudo apt-get install libpam-mysql sudo apt-get install vsftpd
El MySQL Server al instalarse pedirá que le establezcamos una contraseña para el usuario
administrador (root), que necesitamos cuando queremos hacer determinadas operaciones.
2)Nos conectamos a la consola del servidor MySQL (nos pedirá la contraseña del propio usuario “root” de MySQL) para crear el usuario ‘vsftpd’ que será el usuario principal el cual establecerá la conexión con mysql.
mysql -u root -p
dentro de MySQL tecleamos:
INSERT INTO user (Host, User, Password) VALUES ('localhost','vsftpd',password('ftppass'));
Le damos privilegios al usuario ‘vsftpd’
INSERT INTO db (Host, Db, User, Select_priv) VALUES ('localhost','vsftpd','vsftpd','Y');
Actualizamos los privilegios
FLUSH PRIVILEGES;
3)Creamos la base de datos para ‘vsftpd’
CREATE DATABASE vsftpd;
Seleccionamos la base de datos vsftpd
use vsftpd;
4)Creamos la tabla para los usuarios
CREATE TABLE `usuarios` ( `usuario` varchar(30) NOT NULL default '', `password` varchar(50) NOT NULL default '' );
Nos desconectamos
quit
5)Agregamos el usuario “fantasma” ‘vsftpd’
sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
6)Configuramos el archivo vsftpd.conf
sudo gedit /etc/vsftpd.conf
Cambiamos los siguientes valores:
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
7)Configuramos libpam
Pluggable Authentication Modules (PAM) es un sistema múltiple para que los programas puedan
autenticar la identidad de usuarios y otros agentes del entorno informático. Lo utilizamos aquí para
que el servidor VSFTPD no tenga que hacer esta tarea, y simplemente consulte a PAM si el
usuario que llama se corresponde con el de la base de datos.
sudo gedit /etc/pam.d/vsftpd
Borramos todo y escribimos estas dos lineas de codigo:
auth required pam_mysql.so user=vsftpd passwd=ftppass host=localhost db=vsftpd table=usuarios usercolumn=usuario passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=ftppass host=localhost db=vsftpd table=usuarios usercolumn=usuario passwdcolumn=password crypt=2
Una vez tenemos todo configurado podemos crear los usuarios, en la tabla de usuarios.
8)entramos en mysql
mysql -u root -p
y dentro nos vamos a la base de datos vsftpd
use vsftpd
INSERT INTO usuarios (usuario, password) VALUES ('anonimo',password('123456'));
El nombre del usuario lo elegimos nosotros al igual que la contraseña (password). Para el ejemplo utilizamos ‘anonimo’ y ‘123456′
9)Cerramos el Terminal y abrimos otro para crear el directorio para el nuevo usuario que acabamos de crear
cd /home/vsftpd/ sudo mkdir publico
10) Cambiamos de propietario
sudo chown vsftpd:nogroup anonimo
11) Una vez tenemos los propietarios que queremos, creamos su lista de acceso, con los privilegios de cada uno. Creamos una carpeta que contendrá los archivos de cada usuario.
sudo mkdir /etc/vsftpd/user_conf
Dentro de esta carpeta irán los archivos de configuración de cada usuario, por ejemplo creamos el del usuario “publico”
sudo gedit /etc/vsftpd/user_conf/anonimo
y le añadimos:
# permiso de escritura write_enable=NO # puede listar directorios dirlist_enable=YES # puede descargar download_enable=YES # velocidad límite de descarga local_max_rate=0 # máscara de creación de archivos local_umask=022 # directorio al que accederá local_root=/home/ftp/anonimo
Esto lo haremos para cada usuario que demos de alta
Ya está todo listo ahora solo nos queda reiniciar el servidor ftp:
sudo /etc/init.d/vsftpd restart
Cómo eliminar un usuario FTP
1. Eliminamos el usuario de la base de datos:
mysql -u ftpadmin --password=contraseña2 -e "DELETE FROM vsftpd.usuarios WHERE nombre = 'elnombredeusuario';"
2. Eliminamos el perfil FTP de usuario:
sudo rm /etc/vsftpd/elnombredeusuario
3. Si queremos, podemos eliminar su directorio (se perderá todo el contenido ! ):
sudo rm -R /ruta/a/su/directorio

En este pequeño tutorial vamos a crear una red entre Ubuntu y nuestra Xbox 360 para poder ver peliculas en alta definición que tengamos almacenadas en nuestro PC, directamente sin tener que antes pasarlas a un disco externo o grabarlas en DvD. Ademas podremos ver videos en formato MKV el cual la Xbox no reproduce nativamente (gracias Microsoft).
En este tutorial vamos a ver como podemos quitar la contraseña de usuario en Windows, ya sea XP, Vista o Windows 7. Para poder comenzar nos descargamos el live cd de

