2.5 Fpt.

Protocolo de Transferencia de Archivos (FTP)

Escrito por albertjh en FTP, Redes, tags: , ,

VÍA: pope_666


El Protocolo de Transferencia de Archivos (FTP) es una de las utilidades de la familia de Protocolos de TCP/IP. FTP permite a los usuarios copiar archivos entre sistemas remotos en una red IP. FTP se ha diseñado para su uso de forma interactiva por usuarios finales o por programas de aplicación. Las funciones esenciales de Transferencia de Archivos permiten a los usuarios realizar tareas básicas como copiar, mover, renombrar y trabajar con directorios de forma remota.

Tipos de servicios FTP
Normalmente los sistemas se configuran para autentificar los inicios de sesión, esto es, colocando un nombre de usuario y una contraseña, de esta manera se puede acceder al sistema. FTP tiene dos modalidades de uso:
FTP Anonymous: Esto supone un servidor FTP configurado para permitir el acceso público, es decir, el sistema se ajusta a una clave de acceso público para permitir el acceso anónimo a todos los archivos que se han compartido.
FTP Privado: En este caso el servidor se basa en autentificación a partir de la base de datos de usuarios locales, por lo tanto, sólo pueden iniciar sesión los usuarios que hayan sido dados de alta en dicho sistema, normalmente este tipo de FTP es utilizado por compañías que requieren de acceso remoto o en entornos donde la información es confidencial.

Comandos de FTP:
A través de una conexión de control FTP se pueden enviar tres tipos de comandos:

  1. Comandos de Transferencia de Archivos.
  2. Comandos de Gestión de Archivos.
  3. Comandos de Control.

Comando de Transferencia de Archivos: Los comandos de Transferencia de Archivos permiten al usuario copiar un único archivo de un host a otro, copiar varios archivos de un host a otro, añadir un archivo local a un archivo remoto, copiar un archivo y añadir un número al nombre para que sea único.
Comandos de Gestión de Archivos: Los Comandos de Gestión permiten a los usuarios listar los archivos de un directorio, identificar el directorio en uso y cambiar de directorio, crear y eliminar directorios, cambiar el nombre a un archivo o borrarlo.
Comandos de Control: Los Comandos de Control permiten a los usuarios indicar si se va a transferir texto ASCII o Binario, establecer si el archivo está estructurado como una serie de bytes o como una secuencia de registro, describir cómo se va a transferir el archivo, por ejemplo, como un flujo de octetos.

La interfaz de usuario incluye, en general, comandos adicionales que permiten a los usuarios personalizar su entorno local como:

  1. Pedir a FTP que emita un sonido al final de la transferencia.
  2. Para una interfaz de usuario de tipo texto, pedir a FTP que imprima el símbolo <<#>> por cada bloque de datos que se transfiera.
  3. Establecer la traducción automática de letras mayúsculas a minúsculas o viceversa en un nombre de archivo o crear una tabla para traducir automáticamente los caracteres de los nombres de los archivos traducidos.

Aunque muchos usuarios prefieren la interfaz gráfica ,el usuario dispone en su sistema de una interfaz de texto que revela muchos de los aspectos internos del Protocolo de Transferencia de Archivos.
Se pueden copiar varios archivos usando (mget) o (mput) utilizando denominaciones con comodines globales, por ejemplo: (mget a*) obtiene una copia de todos los archivos cuyo nombre empiece con la letra a. Esto funcionará si la acción global está activada, esto se logra tecleando (glob).
Para obtener un listado de todos los comandos de FTP basta con teclear help una vez que se haya iniciado la sesión de FTP.

Lista de comandos de FTP

Comandos de control de acceso

Comando Definición Parámetro(s)
USER Identifica al usuario Identificador
PASS Suministra una contraseña Contraseña
ACCT Suministra una cuenta Identificador de la cuenta
REIN Reinicializa el estado de sesión Ninguno
QUIT /BYE Desconecta la sesión Ninguno
ABOR Aborta el comando anterior y la transferencia Ninguno

Comandos de gestión de archivos y directorios

Comando Definición Parámetro(s)
CWD Cambia a otro directorio del servidor Nombre de directorio
CDUP Cambia al directorio padre Ninguno
DELE Borra un archivo Nombre de archivo
LIST Lista la información de archivos Nombre de directorio, listado de archivos
MKD Crea un directorio Nombre de directorio
NLST Lista de archivos de un directorio Nombre de directorio o ninguno para el directorio de trabajo
PWD Imprime el nombre del directorio de trabajo Ninguno
RMD Elimina un directorio Nombre de directorio
RNFR Identifica un archivo para cambiarlo de nombre Nombre de archivo
RNTO Cambia de nombre un archivo Nombre de archivo
SMNT Monta un sistema de archivos diferente Identificador

Comandos que definen el tipo, la estructura y el modo

Comando Definición Parámetro(s)
TYPE Identifica el tipo de datos y, opcionalmente, el formato de impresión, si existe, para la transferencia A (ASCII), E (BINARIO), I (IMAGEN BINARIA), N (NO IMPRESION), T (TELNET), C (ASA)
STRU Organización del archivo F (ARCHIVO) o R (REGISTRO)
MODE Formato de transmisión S (FLUJO), B (BLOQUE), C (COMPRIMIDO)

Comandos que realizan la Transferencia de Archivos

Comando Definición Parámetro(s)
ALLO Reserva espacio suficiente para los datos que siguen Número entero de bytes
APPE Añade un archivo local a uno remoto Nombre de los archivos
PASV Pide al servidor que identifique una dirección de IP y un puerto para que el cliente inicie una conexión de datos Ninguno. El servidor devolverá una dirección de IP y un número de puerto
PORT Identifica una dirección de red y un puerto para que el servidor inicie una conexión de datos Dirección de IP y número de puerto
REST Identifica un marcador de reinicio seguido del comando de transferencia que hay que reiniciar Valor del marcador
RETR Recupera un archivo Nombres de archivos
STOR Guarda un archivo Nombres de archivos
STOU Crea una versión de un archivo con un nombre único Nombres de archivos

Otros comandos de información de usuario

Comando Definición Parámetro(s)
HELP Devuelve información sobre la implementación del servidor Ninguno
NOOP Pide al servidor que responda OK Ninguno
SITE Usado para subcomandos específicos del servidor que no forman parte del estándar pero se pueden necesitar para ese servidor Ninguno
SYST Pide al servidor que identifique sus sistema operativo Ninguno
STAT Solicite información sobre los parámetros y estado de la conexión Ninguno

Códigos de respuestas
En un diálogo, se responde a cada comando con un código de respuesta y un mensaje, es decir, los servidores de FTP manejan códigos estándar para dar información al usuario sobre una operación concreta, por ejemplo:

ftp > get archivo
--> PORT 128,36,0,22,10,54
200 PORT COMMAND SUCCESSFUL
-- RETR archivo
150 Opening ASCII mode data connection for archivo (4112 bytes).
226 Transfer complete.

Los códigos de respuestas se componen de tres dígitos. Cada uno tiene un cometido específico:

  • Los códigos en el rango de los 200 indican que el comando se realizó con éxito.
  • Los códigos en el rango de los 100 indican que se ha comenzado a realizar una acción.
  • Los códigos en el rango de los 300 indican que se ha alcanzado con éxito un punto intermedio
  • Los códigos en el rango de los 400 indican errores pasajeros
  • Los códigos en el rango de los 500 son realmente malas noticias e indica un error permanente.
  • Los dígitos segundo y tercero de un código de respuesta, clasifican la respuesta de forma más precisa.

¿De qué depende la eficiencia de FTP?
El rendimiento de las operaciones de transferencia de archivos están relacionadas directamente con la capacidad de hardware del equipo servidor y la calidad del enlace, sin embargo, he aquí unas sugerencias:

  • Eficiencia del disco y el sistema de archivos del hots (Me refiero a controladores SCSI con caché).
  • Procesamiento requerido para volver a dar formato a los datos (Me refiero a procesadores SEON).
  • Servicio TCP que sirve de base.
  • Enlaces dedicados LAN o WAN (Me refiero a RDSI, FRAME, RELAY, ADSL, FDDI o DIAL UP).

Cliente Servidor FTP (File Tansfer Protocol)

Escrito por albertjh en FTP, HowTo, Redes, tags: , , , ,

Hace un tiempo ya hablé sobre el Protocolo de Transferencia de Archivos (FTP) y quería seguir contando como instalar un servidor de FTP.

sudo apt-get install vsftpd

Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Se instalarán los siguientes paquetes NUEVOS:
vsftpd
0 actualizados, 1 se instalarán, 0 para eliminar y 0 no actualizados.
Necesito descargar 96,8kB de archivos.
Se utilizarán 401kB de espacio de disco adicional después de desempaquetar.
Des:1 http://es.archive.ubuntu.com hardy/main vsftpd 2.0.6-1ubuntu1 [96,8kB]
Descargados 96,8kB en 0s (149kB/s)
Seleccionando el paquete vsftpd previamente no seleccionado.
(Leyendo la base de datos …
131304 ficheros y directorios instalados actualmente.)
Desempaquetando vsftpd (de …/vsftpd_2.0.6-1ubuntu1_i386.deb) …
Configurando vsftpd (2.0.6-1ubuntu1) …
Añadiendo usuario del sistema `ftp’ (UID 112) …
Agregando nuevo usuario `ftp’ (UID 112) con grupo `nogroup’ …
No se crea el directorio de inicio ‘/home/ftp’.
* Starting FTP server: vsftpd [ OK ]

Una vez ya lo tenemos como veis está corriendo, ahora tan solo lo debemos hacer público.

Intranet

Para intranet tan solo debemos conocer nuestra ip interna con ip route

albertjh@portatil:~$ ip route
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.128
169.254.0.0/16 dev wlan0 scope link metric 1000
default via 192.168.1.1 dev wlan0
albertjh@portatil:~$

La ip interna es src 192.168.1.128 y tan solo poniendo en nuestro navegador la dirección:

ftp://192.168.1.128/

O el nombre de nuestro equipo con hostname o poniendo localhost:

albertjh@portatil:~$ hostname
portatil

ftp://portatil/
ftp://localhost/

La dirección de color naranja es la getaway para el acceder al router y dar salida a internet.

Internet

Para hacerlo público a internet tan solo debemos abrir el puerto 21 y conociendo nuestra ip pública la gente podrá acceder a nuestro ordenador por internet.

albertjh@portatil:~$ wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1
87.218.37.9

Una vez conocemos la ip podemos entrar por nuestro navegador ftp://87.218.37.9/

No comprendo aún por que en mi propio ordenador no enruta hacia localhost cuando introduzco ftp://87.218.37.9/ supongo que será algún problema de mi router, esta es la dirección que los demás deben introducir si desean acceder a mi propio ftp a través de internet.

Al igual que lo puedes hacer por consola:

albertjh@portatil:~$ ftp 87.218.37.9
Connected to 87.218.37.9.
220 Ftp firmware update utility
Name (87.218.37.9): anonymous
331 Password please.
Password:
Bienvenid@!!!!
ftp>

Ya tenemos un servidor anónimo montado en nuestro ordenador, en los siguientes post os enseñaré las distintas opciones para configurarlo, usuarios, control de errores, configuración sobre xinetd, y varios ftp’s virtuales en una misma máquina.

Opciones interesantes para configurar tu FTP

Escrito por albertjh en FTP, Redes, tags:

Como propuse en el anterior post, os dejo unas cuantas opciones que quizás muchos no conozcan, y que son realmente útiles.

Existen tres tipos:

Opciones booleanas

anon_mkdir_write_enable = NO -> Permites crear directorios a usuarios anónimos.
anon_upload_enable = NO -> Permites subir archivos a un usuario anónimo.
anonimous_enable = YES -> Permites usuarios anónimos al FTP.
connected_from_port_20 = YES -> Permites a usuarios anónimos entrar por el puerto 20.
deny_email_enable = NO -> Los tipos de correos que no se admiten.
chroot_list_enable = NO -> Enjaular a los usuarios.
chroot_list_user = NO -> Permites los usuarios.
listen = NO -> Si está habilitado el demonio vsftpd funciona en modo standAlone, si no depende de inetd.
local_enable = NO -> Permite utilizar cuentas locales.
tcp_wrappers = NO -> Habilita el filtro tcpwrappers.
port_enable = YES -> Habilita el port mode.
write_enable = YES -> Habilita modificación en el sistema de ficheros.
pasv_mode = YES -> Habilita el pasive mode.
user_list_enable = NO -> Cuando está habilitado solo se permite el acceso al servidor ftp a los que están en /etc/vsftpd_user_list.
user_list_deny = YES -> Solo tiene efecto si está habilitada.
log_ftp_protocol = YES -> Se registran todas las transacciones.
xferlog_std_format = NO -> Formato estándar en el log del sistema.

Opciones numéricas

accept_timeout = 60 -> Tiempo que se deja para acceder al servidor.
local_umask=022 -> Máscara por defecto
connect_timeout = 60 -> Máximo tiempo por cliente en el servidor.
data_connection_timeout = 300 -> Tiempo en segundos en el que deja abrir el cliente.
anon_max_rate = 0 -> Ancho de banda.
local_max_rate = 0 -> Lo mismo pero con usuarios locales.
max_clients = 0 -> Máximo número de clientes.
max_per_ip = 0 -> Máximo numero de conexiones para la misma IP.
ftp_data_port = 20 -> Número de puertos para datos en el port mode.
listen_port = 21 -> Número de puertos para el socket de datos.
pasv_max_port = 0 -> Cualquiera libre.
pasv_min_port = 0 -> Cualquiera libre.

Opciones de cadena

banned_email_file = /ruta/fichero -> Usuarios baneados.
banner_file = /ruta/ficheroPresentacion -> Fichero del mensaje de presentación.
ftpd_banner = "String" -> Mensage cuando se conecta un cliente.
userlist_file = /ruta/fichero -> Lista de usuarios.
chroor_list_file = /ruta/fichero -> Lista de los usuarios permitidos enjaulados.
xferlog_file = /ruta/fichero -> Fichero del log del servidor.
ftp_username = ftp -> Nombre del usuario en el sistema para el FTP.

Estos son los más usados y representativos, si teneís alguno especial que comentar decírmelo.

Fuente: Diario de un linuxero.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: