Ferramentas do usuário

Ferramentas do site


espec:servico_ftp

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
Última revisão Ambos lados da revisão seguinte
espec:servico_ftp [2011/11/28 17:33]
maziero
espec:servico_ftp [2012/05/02 19:32]
maziero [Servidores e clientes]
Linha 1: Linha 1:
 +====== File Transfer Protocol ======
 +
 +O serviço de transferência de arquivos via FTP (//File Transfer Protocol//) é um dos serviços mais usados na Internet. Ele pode ser usado para transferência de arquivos privados de usuários, usando autenticação via ''​nome/​senha'',​ e também para acesso a repositórios públicos, com acesso anônimo.
 +
 +===== Servidores e clientes =====
 +
 +Vários servidores de FTP estão disponíveis gratuitamente em ambiente UNIX, entre eles são muito usados ​ o [[http://​vsftpd.beasts.org|VSFTP]],​ o [[http://​www.wfms.org/​wu-ftpd|WU-FTP]],​ o [[http://​www.proftpd.org|ProFTPd]] e o [[http://​www.pureftpd.org|PureFTP]]. Cada um deles possui seus próprios arquivos de configuração. A Wikipedia traz uma excelente relação de [[http://​en.wikipedia.org/​wiki/​List_of_FTP_server_software|servidores FTP]] para várias plataformas.
 +
 +Servidores de FTP podem ser acessados através de clientes em linha de comando, clientes gráficos específicos ou navegadores Web. A maioria dos sistemas operacionais dispõe de um cliente FTP em modo texto, acessível através do comando ''​ftp'',​ a ser digitado em um terminal.
 +
 +Para acesso usando um navegador Web, a URL do serviço FTP tem a forma "''​%%ftp://​user:​password@host:​port/​path%%''"​ (a parte "''​user:​password@''"​ pode ser omitida no caso de conexões anônimas). O [[ftp://​ftp.pucpr.br|servidor FTP da PUCPR]] mostra um exemplo de acesso ao serviço FTP através de navegador.
 +
 +===== O serviço FTP =====
 +
 +O serviço de FTP é provido por um //daemon// geralmente chamado ''​ftpd'',​ que pode ser lançado através do //daemon// ''​inetd/​xinetd''​ ou então como um serviço autônomo. Ele faz uso das portas 20/TCP (fluxo de dados) e 21/TCP (controle da conexão), mas também pode usar outras portas acima de 1024. Os logs de uso do servidor FTP são normalmente armazenados em ''/​var/​log/​xferlog''​.
 +
 +Em relação à autenticação,​ o servidor de FTP pode oferecer dois tipos de acesso:
 +
 +  * acesso **autenticado**:​ ao se conectar, o usuário fornece seu //login// e sua senha; caso seja autenticado corretamente,​ o servidor FTP abre um terminal simplificado para transferência de arquivos, com acesso ao diretório ''​$HOME''​ daquele usuário;
 +  * acesso **anônimo**:​ ao se conectar, o usuário se identifica como ''​anonymous''​ ou ''​guest'',​ sem senha (ou usando um e-mail como senha). Caso a configuração do servidor permita acessos anônimos, o servidor abre um terminal para transferência de arquivos em uma área pública (por exemplo, ''/​var/​ftp/​pub''​). Normalmente,​ as trasferências anônimas são limitadas ao //​download//​ de arquivos, não sendo permitido o //upload//.
 +
 +Um exemplo de FTP autenticado:​
 +
 +<​code>​
 +client:​~/>​ ftp espec.ppgia.pucpr.br
 +Connected to espec.ppgia.pucpr.br.
 +220 (vsFTPd 1.0.0)
 +Name (espec:​maziero):​ maziero
 +331 Please specify the password.
 +Password:
 +230 Login successful.
 +Remote system type is UNIX.
 +Using binary mode to transfer files.
 +ftp> dir
 +200 PORT command successful. Consider using PASV.
 +150 Here comes the directory listing.
 +drwxr-xr-x ​   2 500      500          4096 Jul 31 15:20 Desktop
 +drwxr-xr-x ​   2 500      500          4096 Jul 31 18:58 bin
 +-rw-r--r-- ​   1 500      500           435 Jul 31 22:22 journal.txt
 +drwx------ ​   2 500      500          4096 Jul 18 12:50 projs
 +drwx-----x ​   4 500      500          4096 Jul 31 19:03 public_html
 +226 Directory send OK.
 +ftp> ​
 +</​code>​
 +
 +Um exemplo de FTP anônimo:
 +
 +<​code>​
 +client:​~>​ ftp ftp.unicamp.br
 +Connected to zeus.unicamp.br.
 +220  FTPserver da Unicamp - Master - Default
 +Name (ftp.unicamp.br:​maziero):​ anonymous
 +331 Anonymous login ok, send your complete email address as your password
 +Password:
 +230-
 +   ​Bem-vindo ao servidor FTP da Unicamp!
 +   ​Sugestoes e comentarios,​ por favor entre em contato ​ com <​apoio@ccuec.unicamp.br>​.
 +     
 +   ​Welcome to UNICAMP'​s FTP server!
 +   For comments on this site, please contact <​apoio@ccuec.unicamp.br>​.
 + 
 + You are user (162)  of (300) simultaneous users allowed.
 + 
 +230 Anonymous access granted, restrictions apply
 +Remote system type is UNIX.
 +Using binary mode to transfer files.
 +ftp> dir
 +150 Opening ASCII mode data connection for file list
 +-rw-r--r-- ​  1 FtpUser ​ FtpGroup ​     302 Jul 11  2005 msg.welcome
 +drwxrwsr-x ​ 10 FtpUser ​ FtpGroup ​    1024 Jul 15 16:48 pub
 +drwxrwsr-x ​ 10 FtpUser ​ FtpGroup ​     512 Apr 26  2007 pub2
 +drwxrwsr-x ​ 11 FtpUser ​ FtpGroup ​     512 Feb 22 13:08 pub3
 +drwxrwsr-x ​  3 FtpUser ​ FtpGroup ​     512 Jul 16 11:16 pub4
 +drwxrwsr-x ​  4 FtpUser ​ FtpGroup ​     512 Jul 15 12:16 pub5
 +drwxrwsr-x ​ 13 FtpUser ​ FtpGroup ​     512 Jul 15 12:51 pub6
 +226 Transfer complete
 +ftp> ​
 +</​code>​
 +
 +Quanto ao formato dos dados transferidos,​ a transferência pode ocorrer de dois modos:
 +
 +  * **ASCII**: neste modo de operação, os caracteres enviados pelo servidor podem ser "​traduzidos"​ pelo cliente, quando o conjunto de caracteres das duas plataformas for diferente. Por exemplo, se o conjunto de caracteres da plataforma do servidor for Unicode (UTF8) e o conjunto do cliente for ISO-8859-1 (ISO-Latin1),​ alguns caracteres poderão ser convertidos durante a transferência. Esse modo de operação é o default.
 +  * **Binário**:​ neste modo de operação, os caracteres enviados pelo servidor são recebidos pelo cliente //as-is//, ou seja, sem conversões. Com isso, eventuais conteúdos binários podem ser transferidos sem modificação. Esse modo de operação é fundamental para a transferência de arquivos binários, como imagens, vídeos, arquivos compactados e executáveis.
 +
 +Os modos de operação binário ou ASCII podem ser selecionados na linha de comando do cliente FTP, através dos comandos ''​bin''​ e ''​ascii'',​ respectivamente.
 +
 +===== Comandos FTP =====
 +
 +Um cliente FTP em linha de comando oferece um conjunto de comandos para operações envolvendo arquivos, como //​download//,​ //upload//, navegação em diretórios,​ etc. Os comandos básicos oferecidos pela maioria dos clientes FTP são apresentados a seguir:
 +
 +^ Comando e exemplo ^ Significado ^
 +| ''​ftp %%ftp.pucpr.br%%''​ | lança o cliente e abre uma conexão com o servidor indicado |
 +| ''​open %%ftp.pucpr.br%%''​ | inicia uma conexão com o servidor indicado |
 +| ''​bye''​\\ ''​quit''​ | encerra a conexão e o cliente FTP |
 +| ''​close''​ | encerra a conexão (mas não o cliente) |
 +| ''​ls''​\\ ''​dir''​ | lista o conteúdo do diretório remoto |
 +| ''​cd dirA''​ | muda o diretório remoto para ''​dirA''​ |
 +| ''​cd ..''​ | retorna ao diretório anterior |
 +| ''​lcd dirB''​ | muda o diretório local (do cliente) para ''​dirB''​ |
 +| ''​pwd''​ | informa o diretório remoto atual |
 +| ''​get arquivo.txt''​ | obtém o arquivo remoto ''​arquivo.txt''​ |
 +| ''​get arquivo.txt file.txt''​ | obtém o arquivo remoto ''​arquivo.txt'',​ salvando-o localmente como ''​file.txt''​ |
 +| ''​mget *.c''​ | obtém todos os arquivos remotos ''​*.c''​ |
 +| ''​put arquivo.txt''​ | transfere o arquivo local ''​arquivo.txt''​ para o servidor |
 +| ''​mput *.jpg''​ | transfere para o servidor todos os arquivos locais ''​*.jpg''​ |
 +| ''​delete arq.txt''​ | remove o arquivo remoto ''​arq.txt''​ |
 +| ''​mkdir dirA''​ | cria um novo diretório |
 +| ''​rmdir dirB''​ | remove o diretório indicado (se estiver vazio) |
 +| ''​ascii''​ | ajusta modo de transferência para ASCII |
 +| ''​bin''​ | ajusta modo de transferência para binário |
 +| ''​prompt''​ | liga/​desliga as confirmações individuais para ''​mget''​ e ''​mput''​ |
 +| ''​passive''​ | liga/​desliga o modo passivo (vide abaixo) |
 +| ''​help''​ | mostra os comandos disponíveis |
 +
 +===== Modos ativo e passivo =====
 +
 +O serviço FTP sempre inicia através de uma conexão à porta 21/TCP do servidor; essa conexão e responsável pelo controle das transferências de dados entre cliente e servidor, sendo por isso chamada de //control port//. A seguir, é necessário abrir uma segunda conexão entre ambos, sobre a qual ocorrerão as transferências de dados propriamente ditas; por isso, essa nova conexão é chamada //data port//.
 +
 +Há duas formas de se estabelecer a conexão de dados. Na primeira forma, chamada **FTP Ativo**, o cliente cria uma porta TCP de número N>1023, e o servidor conecta a essa porta do cliente, a partir de sua porta 20/TCP. Essa forma de operação pode trazer problemas em algumas redes, pois o servidor precisa se conectar em uma porta do cliente, o que normalmente é bloqueado pelos //​firewalls//​ do lado do cliente.
 +
 +O quadro a seguir detalha a operação em **modo ativo**:
 +
 +^ Passo ^ Cliente ^ Servidor ^
 +| 1 | Pede conexão à porta 21/TCP do servidor | |
 +| 2 | | Aceita o pedido de conexão |
 +| 3 | Solicita autenticação de usuário | |
 +| 4 | | Autentica o usuário |
 +| 5 | Escolhe uma porta N>1023 e informa ao servidor | |
 +| 6 | | Recebe o número de porta N escolhido pelo cliente |
 +| 7 | Seleciona um conteúdo para //​download//​ | |
 +| 8 | | Pede conexão à porta N/TCP do cliente,\\ a partir de sua porta 20/TCP |
 +| 9 | Aceita o pedido de conexão | |
 +| 10 | | Envia o conteúdo solicitado para a porta N/TCP |
 +| 11 | Recebe o conteúdo solicitado | |
 +
 +Uma transferência em FTP ativo entre o cliente ''​192.168.0.174''​ e o servidor FTP ''​200.192.112.10''​ é mostrada da seguinte forma pelo comando ''​netstat''​ (aqui N vale 54398): ​
 +
 +<​code>​
 +Proto Recv-Q Send-Q Endereço Local          Endereço Remoto ​        ​Estado
 +tcp        0      0 192.168.0.174:​54398 ​    ​200.192.112.10:​20 ​      ​ESTABELECIDA
 +tcp        0      0 192.168.0.174:​38631 ​    ​200.192.112.10:​21 ​      ​ESTABELECIDA
 +</​code>​
 +
 +Na segunda forma, denominada **FTP Passivo**, o servidor cria uma porta TCP de número aleatório N>1023 e informa ao cliente, que se conecta a essa porta do servidor. Dessa forma, todas as conexões sempre partem do cliente, o que permite atravessar a maioria dos //​firewalls//​ do lado do cliente. Todavia, o servidor passa a operar com portas aleatórias,​ o que complica a configuração de //​firewalls//​ do lado do servidor.
 +
 +O quadro a seguir detalha a operação em **modo passivo**:
 +
 +^ Passo ^ Cliente ^ Servidor ^
 +| 1 | Pede conexão à porta 21/TCP do servidor | |
 +| 2 | | Aceita o pedido de conexão |
 +| 3 | Solicita autenticação de usuário | |
 +| 4 | | Autentica o usuário |
 +| 5 | Seleciona o modo passivo | |
 +| 6 | | Escolhe uma porta N>1023 e informa ao cliente |
 +| 7 | Recebe o número de porta N escolhido pelo servidor | |
 +| 8 | Seleciona um conteúdo para //​download//​ | |
 +| 9 | Pede conexão à porta N/TCP informada pelo servidor | |
 +| 10 | | Aceita o pedido de conexão |
 +| 11 | Solicita o conteúdo desejado à porta 21/TCP | |
 +| 12 | | Envia o conteúdo solicitado usando a porta N/TCP |
 +
 +Uma transferência em FTP passivo entre o cliente ''​192.168.0.174''​ e o servidor FTP ''​200.192.112.10''​ é mostrada da seguinte forma pelo comando ''​netstat''​ (aqui, N vale 44072): ​
 +
 +<​code>​
 +Proto Recv-Q Send-Q Endereço Local          Endereço Remoto ​        ​Estado
 +tcp        0      0 192.168.0.174:​38632 ​    ​200.192.112.10:​21 ​      ​ESTABELECIDA
 +tcp        0      0 192.168.0.174:​34197 ​    ​200.192.112.10:​44072 ​   ESTABELECIDA
 +</​code>​
 +
 +Resumindo, em modo ativo:
 +
 +  * Fluxo de controle: client:M => server:21
 +  * Fluxo de dados: ​ client:N <= server:20
 +
 +E em modo passivo:
 +  * Fluxo de controle: client:M => server:21
 +  * Fluxo de dados: client:P => server:N
 +
  
espec/servico_ftp.txt · Última modificação: 2020/02/27 11:38 por maziero