Servizo de transferencia de ficheiros
Nun servizo de transferencia de ficheiros, o principal obxectivo é transmitir arquivos entre o equipo servidor e os equipos clientes. O servidor dispón dun ou varios directorios ou cartafoles onde os clientes poden realizar (se teñen os permisos para iso) calquera acción básica sobre arquivos e subdirectorios ou subcartafoles. Entre esas accións, un usuario poderá subir ou cargar arquivos dende o seu ordenador cliente ao ordenador servidor e poderá baixar ou descargar arquivos dende o ordenador servidor ao ordenador cliente.
O servizo de transferencia de ficheiros permitirá con total transparencia que no cliente se poida utilizar un sistema de arquivos distinto ao que se use no servidor. Por exemplo, o servidor poderá usar o sistema de arquivos ext3 de Linux e o cliente o sistema NTFS de Windows e iso non terá ningunha influencia na transferencia nin en como se teña que traballar no cliente.
O protocolo estándar para o servizo de transferencia de arquivos é FTP[1] (File Transfer Protocol, traducido como Protocolo de Transferencia de Ficheiros). As primeiras probas do servizo FTP foron levadas a cabo en 1971 polo Instituto Tecnolóxico de Massachusetts (MIT). Sobre o protocolo fóronse facendo sucesivas actualizacións para mellorar a súa funcionalidade.
Por exemplo, pode ser interesante instalar o servizo FTP sobre un equipo servidor web para que o administrador do sitio web poida subir arquivos ao sitio web dende calquera ordenador con posibilidade de conectarse a través da rede co servidor.
O protocolo FTP
O protocolo FTP é unha dos primeiros protocolos desenvolvidos para a arquitectura TCP/IP. A súa primeira versión, cun funcionamento moi básico, descríbese no RFC 141. Dende esa primeira implementación fóronse desenvolvendo sucesivas melloras que se reflexaron en sucesivos documentos RFC. A versión actual do protocolo recóllese no RFC 959[2] de outubro de 1985.
FTP é un protocolo do nivel de aplicación. Permite establecer unha conexión cliente/servidor para transferir arquivos do servidor ao cliente (descarga) ou do cliente ao servidor (subida). As conexións FTP establécense sobre conexións TCP de nivel de transporte.
Os obxectivos principais do protocolo FTP descríbense na introdución do RFC 959 son:
- Promover a compartición de arquivos entre equipos.
- Animar ao uso indirecto ou implícito (a través de programas) de servidores remotos.
- Establecer transferencias de arquivos que teñan total independencia dos sistemas de arquivos usados en cliente e servidor.
- Transferir arquivos de forma eficaz e fiable.
FTP permite varias operacións sobre arquivos remotos (situados nun servidor): subir arquivos, baixar arquivos, borrar arquivos, crear cartafoles. FTP permite que un usuario xestione ou administre directamente as transferencias de arquivos dende unha terminal e mediante un conxunto de comandos FTP dispoñibles ou que o faga mediante calquera outro programa (de interface gráfica ou de texto) que implemente o protocolo.
O protocolo FTP non é un protocolo seguro xa que transmite a información en texto plano, tal como é codificada na orixe. Aínda que ao realizar a conexión FTP, hai unha autenticación de usuario, transmítense o nome da contrasinal sen encriptar. Unha solución para ter conexións FTP seguras é tunelizar as conexións FTP sobre conexións seguras baixo o protocolo SSH.
Unha alternativa para transferencias de arquivos seguras é o protocolo SFTP. Este protocolo, ao igual que FTP permite realizar unha serie de operacións sobre arquivos remotos.
Funcionamento
O funcionamento das conexións FTP baséase no modelo de conexión cliente/servidor. O servidor pon a disposición dos clientes un ou varios directorios nos que os usuarios poden realizar accións sobre os seus arquivos. Cando un usuario inicia unha conexión cun servidor FTP dende un cliente, é autenticado (pídese o seu nome e contrasinal) polo servidor. Cada usuario poderá acceder aos directorios nos que teña permisos de acceso e poderá realizar neles as accións para as que estea autorizado.
Nas conexións FTP, aos directorios que o servidor FTP pon a disposición dos clientes chámaselles directorios remotos e aos arquivos que hai dentro deles arquivos remotos. Aos directorios e arquivos de equipos clientes usados nas transferencias chamarémolos directorios locais e arquivos locais.
Unha conexión FTP desenvólvese da seguinte forma:
- Un usuario inicia un cliente FTP e solicita unha conexión cun servidor identificándose.
- Se se establece conexión o cliente, a petición do usuario, vai enviar comandos ou ordes FTP ao servidor solicitando realizar accións.
- O servidor procesa os comandos, realiza as accións solicitadas e envía respostas FTP ao cliente.
Se a acción solicitada é unha transferencia dun arquivo, iníciase un proceso de transferencia de datos. Non debes confundir unha resposta cunha transferencia de datos. Por exemplo, ao solicitar a descarga dun arquivo, a resposta pode ser que o arquivo se encontrou e enviou con éxito, mentres que a transferencia de datos é o proceso de transmisión do contido do arquivo.
Os comandos FTP son cadeas de caracteres formadas polo nome do comando e un ou varios parámetros separados con espazos. Os comandos FTP son de tres tipos:
- Comandos de control de acceso: Por exemplo, para autenticar o usuario (USER e PASS).
- Comandos de parámetros de transferencia: Para especificar porto de conexión, modos de conexión e tipos de transferencia.
- Comandos de servizo FTP: Para realizar accións sobre os directorios e arquivos remotos como subir e baixar arquivos, crear directorios e borrar arquivos.
Nas respostas FTP o servidor envía un código numérico de 3 díxitos co que indica como foi procesado o comando ao que corresponde a resposta. O primeiro dos díxitos indica se o comando foi ou non procesou con éxito. Os outros dous díxitos dan maior detalle do contido da resposta. Códigos de respostas FTP
Código | Descrición |
---|---|
1xy | A acción non rematou. Debe obterse outra nova resposta para poder enviar outro comando. |
2xy | A acción realizouse con éxito. Pode enviarse outro comando. |
3xy | Estase a esperar que o cliente envíe información adicional para poder completar a acción. |
4xy | Indícase que a acción solicitada non se puido realizar agora pero podería realizarse máis tarde. |
5xy | Indícase que a acción solicitada non se pode realizar. |
Conexións de control e de datos
Unha conexión FTP entre un cliente e un servidor desenvólvese sobre dúas conexións TCP de nivel de transporte:
- Conexión de control.
- Conexión de datos.
A través da conexión de control o cliente envía os comandos e recibe do servidor as respostas aos comandos tras ser procesados por este.
A conexión de datos é usada para a transferencia de arquivos entre cliente e servidor cando foi solicitada esta transferencia por un comando.
Polo exemplo, se o cliente solicita descargar un arquivo, envía ao servidor o comando RETR seguido do nome do arquivo a través da conexión de control. O servidor procesa o comando e pasa a enviar o arquivo a través da conexión de datos (se é necesario abre esta conexión). Cando remata de enviar o arquivo, o servidor envía unha resposta ao cliente a través da conexión de control indicando que o arquivo se enviou con éxito.
As conexións de datos péchanse cada vez que remata unha transferencia de arquivos e inícianse cada vez que se vai iniciar unha nova transferencia de arquivos. A conexión de control iníciase cando o cliente solicita a conexión co servidor e péchase cando o cliente decide rematar a conexión ou tamén pode pechala o servidor cando transcorreu un determinado tempo sen actividade na conexión.
Cando se estableceu unha conexión cliente-servidor FTP inícianse en cliente e servidor os procesos usuario Pu e servidor Ps respectivamente. Estes procesos comunícanse a través da conexión de control. O proceso usuario Pu encárgase de transmitir a través da conexión de control os comandos FTP solicitados polo usuario da máquina dende a súa interface de traballo e de obter as respostas do servidor e entregarlla á interface de traballo do usuario. O proceso servidor Ps encárgase de procesar os comandos recibidos, enviar as respostas e, se procede, iniciar un proceso de transferencia de arquivos.
Cando se vai iniciar unha conexión de datos entre cliente e servidor FTP inícianse en cada máquina un proceso DTP. Os procesos DTP cliente e servidor comunícanse para desenvolver a transferencia dun arquivo. Cando remata a transferencia, péchase a conexión de datos e tamén se pechan os procesos DTP.
Modos de conexión do cliente.
Laos servidores FTP usan o porto TCP 21 para atender as conexións de control FTP, é dicir, recibe os comandos no porto 21 e envía as respostas polo seu porto 21. Se ten varias conexións abertas, usa para todas elas o porto 21 como porto de escoita da conexión de control. O cliente abre un porto superior a 1024 para cada conexión de control que establece cun servidor FTP. Se un cliente FTP ten iniciadas varias conexións FTP, ten un porto aberto por cada unha das conexións iniciadas mesmo se fosen dúas simultáneas co mesmo servidor.
Hai dous modos de establecer as conexións de datos entre cliente e servidor. A estes modos chámaselles modos de conexión do cliente e chámanse:
- Modo activo.
- Modo pasivo.
No modo activo, unha vez que se estableceu a conexión de control, para iniciar unha conexión de datos faise o seguinte:
- O cliente envía ao servidor un comando PORT a través da conexión de control indicando un número de porto TCP superior a 1024 que pretende abrir para a conexión de datos.
- O servidor inicia a conexión de datos (non a transferencia) entre o seu porto TCP 20 e o porto que lle indicou o cliente. Isto pódese entender por unha devasa no cliente como unha ameaza xa que dende o exterior se inicia unha conexión solicitando que o cliente abra un porto.
- A conexión de datos úsase para a transferencia de arquivos.
No modo pasivo, unha vez que se estableceu a conexión de control, para iniciar unha conexión de datos faise o seguinte:
- O cliente envía ao servidor un comando PASV indicando que vai establecer conexión en modo pasivo.
- O servidor responde cun número de porto TCP superior a 1024 (aquí non é o porto 20) que pretende abrir para a conexión de datos. O servidor usa un porto para cada conexión de datos que teña iniciada.
- O cliente inicia a conexión de datos abrindo un porto TCP dispoñible e maior que 1024 e conectándose co porto que lle indicou servidor. Cando chega a solicitude de conexión ao servidor, este abre o porto que pretendía usar para a conexión. Transmítense arquivos pola conexión de datos.
Tipos de transferencia
Para transmitir arquivos entre clientes e servidores FTP poden utilizarse dous tipos de transferencia de datos diferentes:
- Transferencia ASCII.
- Transferencia binaria.
Unha transferencia ASCII é adecuada para transmitir arquivos de texto codificados en ASCII (txt, html). Pero non é adecuada para transmitir outros tipos de arquivos xa que na maioría dos casos non se completaría a recepción deses arquivos.
Na transferencia ASCII realízase a transmisión analizando byte a byte a información transmitida. Os arquivos ASCII rematan cun carácter de control EOF (End of File: Fin de ficheiro). Ao usar unha transferencia ASCII, no momento que se recibe un byte que corresponde a EOF dáse por rematada a transmisión. Isto para os arquivos ASCII é o que se debe producir, pero non para outros arquivos xa que un byte dun ficheiro non ASCII pode conter o código correspondente a EOF en calquera parte do arquivo.
Para cambiar dun tipo de transferencia a outro, o cliente debe enviar ao servidor o comando FTP TYPE e indicando o tipo de transferencia. Os programas clientes de usuario permiten que o usuario poida solicitar o cambio do tipo de transferencia.
Servidores
Existen unha gran cantidade de servidores FTP. Á hora de elixir un servidor FTP haberá que avaliar varias das súas características. Algunhas destas características son: Facilidade de instalación e configuración, seguridade do servizo, opcións dispoñibles de configuración, xestión de contas de usuario e permisos de acceso a recursos, limitación do ancho de banda para as transferencias de arquivos, número máximo de conexións simultáneas etc. A continuación descríbense algúns dos servidores FTP máis destacados.
- vsftpd[3]
- Só para Linux. É un servidor moi seguro, doado de instalar e configurar. Os usuarios do sistema Linux no que se instale o servidor son usuarios para o servizo. A configuración é moi sinxela e céntrase fundamentalmente na seguridade e a eficiencia.
- Filezilla Server[4]
- Só para Windows. Moi doado de usar. A súa mellor característica é a relativa á configuración de contas de usuario e grupos de usuarios e o establecemento de permisos de acceso, restricións sobre accións, cotas e outras limitacións. Licenza GPL.
- FTP Serv-U[5]
- Para Windows e Linux. Moi doado de usar e moi completo. É moi potente no relativo a opcións de seguridade e establecemento de restricións sobre cotas de disco e velocidades de suba e baixada para usuarios. Licenza de proba por 30 días. Despois segue funcionando pero nun modo chamado persoal con menos funcionalidades. Dispón doutras licenzas de pagamento dos tipos Bronze, Silver e Gold.
- Microsoft FTP Server[6].
- Só para Windows. Está integrado dentro dos sistemas Windows formando parte de Microsoft IIS.
- Pure-FTPd[7]
- Só para Linux. Moi doado de instalar e configurar. As súas características máis destacadas son a seguridade, a regulación do ancho de banda para as transferencias de arquivos e a gran cantidade de opcións de configuración. Licenza GPL.
- ProFTPd[8]
- Só para Linux. Moi doado de instalar e configurar. Formato do ficheiro de configuración similar ao de Apache. Soporta múltiples sitios virtuais. Tradicionalmente considerouse inseguro, pero actualmente xa corrixiron esas vulnerabilidades.
Clientes
Se hai múltiples servidores FTP, aínda existen moitos máis clientes FTP.
Os sistemas operativos Windows e Linux integran un cliente FTP que se executa en modo comando, é dicir, trabállase cunha interface en modo texto na que o usuario executa ou envía comandos FTP aos servidores cos que se conecta. Estes clientes chámanse ftp pero non son iguais (os comandos que se poden executar nas interfaces de Windows e Linux non teñen porqué ser iguais aínda que poidan coincidir en moitos casos).
Á parte destes clientes de interface de texto, podemos usar clientes gráficos que temos dispoñibles para descargar e instalar. Normalmente estes clientes tamén permiten establecer conexións con outros servidios de transferencia seguros como SFTP. Algúns destes clientes gráficos son:
- Filezilla Client[9]:
- Dispoñible para sistemas Windows e Linux. Licenza GPL. Moi rápido, doado de configurar e dun bo rendemento.
- Smart FTP[10]:
- Só para Windows. Licenza gratuíta de avaliación de 30 días, dispón das licenzas de pagamento Home, Professional e Ultimate. Destacan a súa interface gráfica e as súas numerosas opcións de configuración.
- gFTP[11]:
- Só para Linux. Licenza GPL. Moi lixeiro e doado de usar. Permite establecer conexións con varios protocolo de transferencia de arquivos á parte de FTP. Permite xestionar subas e baixadas de arquivos simultáneas.
- cuteFTP[12]:
- Só para Windows. Licenza gratuíta de avaliación de 30 días, dispón das licenzas de pagamento Home, Professional e Lite. Ten unha interface moi sinxela na que abonda arrastrar arquivos para iniciar unha suba ou baixada destes.
- FireFTP[13]:
- É un complemento para o navegador Mozilla Firefox que permite usar o navegador coma se fose un cliente FTP. É multiplataform, ao igual que Firefox. Licenza GPL.
Un navegador web permite establecer conexións FTP con servidores FTP. Para iso hai que coñecer o nome DNS do equipo servidor FTP ou no seu lugar a IP do servidor. No navegador web debemos escribir a URL correspondente ao servidor co que nos queremos conectar das formas:
ftp://nombre_DNS_servidor_FTP
ftp://IP_servidor_FTP
Por exemplo, para iniciar unha conexión co servidor FTP de RedIRIS, deberías escribir na URL do navegador:
ftp://ftp.rediris.es
Ao conectarnos cun servidor FTP, pode pedirse un nome de usuario e contrasinal ou permitirse o acceso sen autenticación como usuario anónimo e con permisos de convidado. O usuario co que realicemos a conexión determinará o que podemos facer e os arquivos e directorios que podemos ver do servidor FTP.
Os servidores FTP adoitan poñer a disposición dos usuarios invitados directorios con nomes como public ou incoming para que estes poidan acceder a eles e descargar arquivos e mesmo crear subdirectorios e subir arquivos.
Comandos FTP
As ferramentas gráficas pódennos funcionar noi ben para o día a día, de feito non usarlas para as funcións diarías sería una pérdida de tempo xa que nos automatizan gran parte do trabajo. Sin embargo, hai veces que non dispomos delas, e necesitamos, acceder a un servidor ftp con un cliente interactivo en modo texto, empregando a aplicación ftp dispoñible na práctica totalidade de sistemas operativos.
Accedemos a calquera servidor tecleando nunha liña de comandos
ftp nome_ou_ip_do_servidor
e pasamos a introducir o nome de usuario e contrasinal.
Os comandos máis habituais son os seguintes:
Comando | Desrición |
---|---|
dir | fai un listado do contido do directorio ou cartafol remoto actual |
ls | fai un listado do contido do directorio ou cartafol remoto actual |
cd | Permite cambiar o directorio actual no equipo remoto |
lcd | Permite cambiar o directorio actual no equipo local |
pwd | Permite ver cal é o directorio actual no equipo remoto |
open | Permite abrir unha nova sesión co servidor (sempre que a conexión actual esté pechada). Necesitamos proporcionar o nome ou enderezo IP do servidor co que nos queremos conectar. |
close | Pecha unha sesión aberta sen saír do a aplicación ftp |
exit, quit, bye | Pecha a sesión e sae da aplicación ftp |
user | permite abrir unha nova sesión con outro usuario no mesmo servidor |
get | Descarga un ficheiro do equipo remoto ao equipo local. Se poñemos un 2º nome de ficheiro, ese será co nome que se gardará o primeiro no equipo local |
mget | Descarga multiples ficheiros. Acepta os comodíns ? e * |
put | Sube un ficheiro do equipo local ao equipo remoto. Se poñemos un 2º nome de ficheiro, ese será co nome que se gardará o primeiro no equipo remoto |
mput | Carga multiples ficheiros. Acepta os comodíns ? e * |
delete | borra un ficheiro do equipo remoto. |
mdelete | Borra multiples ficheiros. Acepta os comodíns ? e * |
rmdir | Borra directorios do equipo remoto |
rename | Cambia o nome do ficheiro no equipo remoto |
chmod | Cambia permisos do ficheiro no equipo remoto |
ascii | Cambia o modo de transferencia a ascii |
binary, bin | Cambia o modo de transferencia a binario |
passive | Alterna entre o modo activo e pasivo |
! | Permite saír momentaneamente ao equipo local. Volvemos ao equipo remoto con exit. Tamén permite executar un comando no shell do equipo local. |
FTP Anónimo
Un FTP anónimo (Anonymous) é a forma convencional de chamar ao servizo de transferencia de ficheiros que as organizacións deixan para acceso público. Trátase dun servizo moi común na rede, e se o usamos e nos piden un identificador de usuario deberemos teclear "anonymous", isto fará normalmente que non nos pidan un contrasinal, pero se o fan, a clave publica mais habitual é o correo electrónico do usuario.
Os navegadores web, intentan entrar con este usuario, e es non poden, soen solicitar a introdución de nome de usuario e contrasinal.