IP estática:
sudo nano /etc/network/interfaces
para reiniciar la configuración de red: sudo /etc/init.d/networking restart
Si da error, se reinicia el servidor.
Este trabajo se ha realizado en 2 sitios distintos, por lo que el servidor lo hemos dejado con una IP dinámica (no hemos modificado la configuración de red), por lo que en FileZilla aparecerán 2 IP distintas.
Este trabajo se ha realizado en 2 sitios distintos, por lo que el servidor lo hemos dejado con una IP dinámica (no hemos modificado la configuración de red), por lo que en FileZilla aparecerán 2 IP distintas.
Instalar vsftpd (software FTP para Linux): sudo apt-get install vsftpd
Prueba inicial de conexión FTP desde Windows 7:
Abrimos Filezilla Client y en la pantalla principal ponemos la dirección IP del servidor FTP, el usuario y la contraseña de dicho usuario. Después clicamos en 'Conexión rápida:

Podemos ver que a la derecha se muestran los ficheros y directorios del home del usuario del servidor FTP, que es el usuario por el cual nos hemos conectado al servidor.
Prueba inicial de conexión FTP desde Windows 7:
Abrimos Filezilla Client y en la pantalla principal ponemos la dirección IP del servidor FTP, el usuario y la contraseña de dicho usuario. Después clicamos en 'Conexión rápida:
Podemos ver que a la derecha se muestran los ficheros y directorios del home del usuario del servidor FTP, que es el usuario por el cual nos hemos conectado al servidor.
añadir grupo para los usuarios FTP: sudo groupadd ftp (informará de que el grupo ya existe)
creamos un directorio para ftp: sudo mkdir /home/ftp
creamos directorio para el usuario 'cliente1': sudo mkdir /home/ftp/cliente1
Ahora crearemos un shell para que los usuarios no se conecten a una sesión del sistema operativo (por seguridad):
creamos carpeta del shell: sudo mkdir /bin/ftp
ahora editamos el fichero que contiene los shells: sudo nano /etc/shells
añadimos al final de dicho fichero '/bin/ftp':

Ahora crearemos el primer cliente:
sudo useradd -g ftp -d /home/ftp/cliente1 -s /bin/ftp cliente1
-g indica el grupo al que pertenece el usuario 'cliente1', -d el home del usuario, -s su shell creado antes
asignamos una contraseña para el usuario con 'sudo passwd cliente1'. Nos pedirá repetirla.
modificamos el propietario de la carpeta /home/ftp/cliente1 para que el usuario 'cliente1' pueda hacer cambios sobre este directorio/carpeta:
sudo chown cliente1:ftp /home/ftp/cliente1 -R
cliente es el usuario y ftp el grupo, separados por ':', -R es de recursivo (éste directorio y todos los que cuelgan de él)
Ahora veremos la configuración del servidor FTP. Veremos 2 archivos, vsftpd.conf y vsftpd.chroot_list.
Archivo vsftpd.conf, localizado en '/etc/vsftpd.conf'. Es el archivo de configuración del servicio FTP:
Tiene este aspecto:

Primero se debe tener en cuenta principalmente estas opciones dentro del fichero:

Conexión anónima: permite que un usuario anónimo se conecte al servidor FTP. Debe estar en 'NO' para que sólo los usuarios autenticados puedan conectarse.

Permitir que los usuarios locales del servidor se conecten al servidor. La ponemos a 'YES'.

Permite que un usuario pueda escribir/modificar el contenido del directorio del servidor FTP. Ponemos 'YES' para que los usuarios puedan modificar sus propios directorios.

Sirve para comprobar que el puerto por el que circulan los datos cliente-servidor es el 20.

'chroot_local_user=YES' es para tener un control localmente sobre los usuarios que pueden acceder al servidor FTP. 'chroot_list_enable' sirve para crear nosotros nuestra propia lista de usuarios que podrán acceder al servidor, y en 'chroot_list_file' indicamos la ruta absoluta del fichero que contiene los usuarios.
Hay más opciones de configuración del fichero, pero no vamos a entrar en detalle con todas.
Archivo vsftpd,chroot_list localizado en '/etc/vsftpd.chroot_list'. Es la lista de usuarios que podrán acceder al servidor FTP:
Como no está creado por defecto, lo creamos con 'sudo touch /etc/vsftpd.chroot_list', y después lo editamos con 'sudo nano /etc/vsftpd.chroot_list':
El ontenido de este fichero será básicamente los nombres de usuarios que podrán acceder al servidor. En este caso, solo tenemos 'cliente1':

Ahora reiniciamos el servico FTP con 'sudo /etc/init.d/vsftpd restart'.
Después accedemos con FileZilla client al servidor FTP con usuario 'cliente1' y contraseña la que le hayamos asignado a éste usuario:

En la parte derecha se puede ver que hemos accedido a la carpeta '/home/ftp/cliente1'. Y podemos comprovar el permiso de escritura haciendo clic derecho en la carpeta 'cliente1' y clicando en 'crear directorio'.
FTP seguro con SSL/TLS:
Para que los datos que circulan por la red desde el cliente hasta el servidor FTP vayan cifrados por seguridad, configuramos el servicio SSL/TLS para FTP.
Primero debemos crear la clave y certificado para la conexión y el cifrado/descifrado de datos:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Ahora editamos el fichero vsftpd.conf. La parte final del fichero debe quedar así:

Después de ésto reiniciamos el servicio FTP y entramos en el FileZilla client.
En FileZilla, entramos en 'Archivo/Gestor de sitios' y creamos un nuevo sitio:

En 'Servidor' ponemos la IP del servidor FTP, en 'Protocolo' 'FTP', en 'Cifrado' seleccionamos 'Requiere FTP explícito sobre TLS', en 'Método de acceso' ponemos 'Normal' o 'Preguntar la contraseña', y finalmente escribimos el usuario y contraseña del usuario 'cliente1'. Clicamos en 'Conectar'

FileZilla nos informará de que nno conoce el certifiado que hemos creado en el servidor y nos preguntará si confiamos en él. Marcamos la casilla de 'Siempre confiar' y clicamos 'Aceptar'

Y finalmente FileZilla se conectará en modo seguro al directorio '/home/ftp/cliente1'. Se puede comprobar en la pantalla del log de FileZilla que pone 'TLS connection established'.
creamos directorio para el usuario 'cliente1': sudo mkdir /home/ftp/cliente1
Ahora crearemos un shell para que los usuarios no se conecten a una sesión del sistema operativo (por seguridad):
creamos carpeta del shell: sudo mkdir /bin/ftp
ahora editamos el fichero que contiene los shells: sudo nano /etc/shells
añadimos al final de dicho fichero '/bin/ftp':
Ahora crearemos el primer cliente:
sudo useradd -g ftp -d /home/ftp/cliente1 -s /bin/ftp cliente1
-g indica el grupo al que pertenece el usuario 'cliente1', -d el home del usuario, -s su shell creado antes
asignamos una contraseña para el usuario con 'sudo passwd cliente1'. Nos pedirá repetirla.
modificamos el propietario de la carpeta /home/ftp/cliente1 para que el usuario 'cliente1' pueda hacer cambios sobre este directorio/carpeta:
sudo chown cliente1:ftp /home/ftp/cliente1 -R
cliente es el usuario y ftp el grupo, separados por ':', -R es de recursivo (éste directorio y todos los que cuelgan de él)
Ahora veremos la configuración del servidor FTP. Veremos 2 archivos, vsftpd.conf y vsftpd.chroot_list.
Archivo vsftpd.conf, localizado en '/etc/vsftpd.conf'. Es el archivo de configuración del servicio FTP:
Tiene este aspecto:
Primero se debe tener en cuenta principalmente estas opciones dentro del fichero:
Conexión anónima: permite que un usuario anónimo se conecte al servidor FTP. Debe estar en 'NO' para que sólo los usuarios autenticados puedan conectarse.
Permitir que los usuarios locales del servidor se conecten al servidor. La ponemos a 'YES'.
Permite que un usuario pueda escribir/modificar el contenido del directorio del servidor FTP. Ponemos 'YES' para que los usuarios puedan modificar sus propios directorios.
Sirve para comprobar que el puerto por el que circulan los datos cliente-servidor es el 20.
'chroot_local_user=YES' es para tener un control localmente sobre los usuarios que pueden acceder al servidor FTP. 'chroot_list_enable' sirve para crear nosotros nuestra propia lista de usuarios que podrán acceder al servidor, y en 'chroot_list_file' indicamos la ruta absoluta del fichero que contiene los usuarios.
Hay más opciones de configuración del fichero, pero no vamos a entrar en detalle con todas.
Archivo vsftpd,chroot_list localizado en '/etc/vsftpd.chroot_list'. Es la lista de usuarios que podrán acceder al servidor FTP:
Como no está creado por defecto, lo creamos con 'sudo touch /etc/vsftpd.chroot_list', y después lo editamos con 'sudo nano /etc/vsftpd.chroot_list':
El ontenido de este fichero será básicamente los nombres de usuarios que podrán acceder al servidor. En este caso, solo tenemos 'cliente1':
Ahora reiniciamos el servico FTP con 'sudo /etc/init.d/vsftpd restart'.
Después accedemos con FileZilla client al servidor FTP con usuario 'cliente1' y contraseña la que le hayamos asignado a éste usuario:
En la parte derecha se puede ver que hemos accedido a la carpeta '/home/ftp/cliente1'. Y podemos comprovar el permiso de escritura haciendo clic derecho en la carpeta 'cliente1' y clicando en 'crear directorio'.
FTP seguro con SSL/TLS:
Para que los datos que circulan por la red desde el cliente hasta el servidor FTP vayan cifrados por seguridad, configuramos el servicio SSL/TLS para FTP.
Primero debemos crear la clave y certificado para la conexión y el cifrado/descifrado de datos:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Ahora editamos el fichero vsftpd.conf. La parte final del fichero debe quedar así:
Después de ésto reiniciamos el servicio FTP y entramos en el FileZilla client.
En FileZilla, entramos en 'Archivo/Gestor de sitios' y creamos un nuevo sitio:
En 'Servidor' ponemos la IP del servidor FTP, en 'Protocolo' 'FTP', en 'Cifrado' seleccionamos 'Requiere FTP explícito sobre TLS', en 'Método de acceso' ponemos 'Normal' o 'Preguntar la contraseña', y finalmente escribimos el usuario y contraseña del usuario 'cliente1'. Clicamos en 'Conectar'
FileZilla nos informará de que nno conoce el certifiado que hemos creado en el servidor y nos preguntará si confiamos en él. Marcamos la casilla de 'Siempre confiar' y clicamos 'Aceptar'
Y finalmente FileZilla se conectará en modo seguro al directorio '/home/ftp/cliente1'. Se puede comprobar en la pantalla del log de FileZilla que pone 'TLS connection established'.