Aprenda a instalar um servidor de FTP em 5 minutos…

60 Comentários

..no Ubuntu/Mint/Caixa Mágica

Sou questionado algumas vezes se a instalação/configuração de um servidor FTP em Linux é fácil. Costumo responder que fácil não é…é super fácil. Normalmente, quando necessito de instalar um servidor de FTP, o vsftpd é o meu favorito pela flexibilidade, segurança, simplicidade e estabilidade que oferece.

ftp_00

O vsftpd é um servidor de FTP fantástico, que oferece funcionalidades bastante interessantes, das quais se destacam:

  • Suporte para Virtual IP
  • Suporte para utilizadores virtuais
  • Suporte para IPv6
  • Encriptação de dados através da integração do protocolo SSL
  • Controlo da largura de banda
  • Configuração por utilizadore

Para instalar um servidor de FTP no Ubuntu ou Mint, o utilizador apenas necessita de realizar os seguintes passos.

Passo 1 – Instalar o vsftpd

sudo apt-get install vsftpd

Passo 2 – Configurações do serviço vsftpd
Por norma os ficheiros de configuração dos serviços encontram-se em /etc. No caso do vsftpd o ficheiro de configuração é /etc/vsftpd.conf
Vamos abrir o ficheiro e editar/rever algumas directivas:

sudo nano -w /etc/vsftpd.conf

Ficheiro vsftpd.confDesactivar o acesso “anónimo”.

anonymous_enable=NO

Permitir o acesso a utilizadores locais

local_enable=YES

Passo 3 – Adicionar uma Shell “fake”
Por forma a não permitir a autenticação dos utilizadores FTP via SSH ou login local vamos adicionar uma shell fake e assim limitar o acesso a esses utilizadores. Desta forma, as credenciais de um utilizador FTP apenas servem para se autenticar via FTP.

Vamos então abrir o ficheiro /etc/shells e adicionar a linha /bin/false

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/false

Passo 4 – Criar um utilizador (conta) FTP

Como já referido anteriormente, é importante que as credenciais de uma conta FTP apenas funcionam para autenticação via FTP. Neste passo vamos proceder ao seguinte:

  • Criar pasta do utilizador (ex. /home/ftp/ftpuser)
sudo mkdir -p /home/ftp/ftpuser
  • Criar utilizador, definir qual a sua directoria e associá-lo a shell “fake” (ex. user ftpuser)
sudo useradd ftpuser -d /home/ftp/ftpuser/ -s /bin/false
  • Criar/mudar a password do utilizador (com o comando passwd)
sudo passwd ftpuser

É também importante que o utilizador tenha permissões de escrita na sua pasta uma vez que a pasta criada ficou associada ao root. Para isso podemos simplesmente mudar o owner da pasta através do comando

sudo chown ftpuser /home/ftp/ftpuser

Passo 5 – As configurações estão feitas, teremos apenas de reiniciar o serviço vsftpd através do comando:

Coloquei entretanto 1 ficheiro na pasta /home/ftp/ftpuser/ para exemplificar o exemplo.

Nota: No ficheiro de configuração do serviço (/etc/vsftpd.conf)  é possível especificar muitos parâmetros como por exemplo: o número de clientes, adicionar um banner, etc etc.

Como aceder ao servidor FTP

Depois do serviço montado o acesso ao FTP pode ser realizado via um simples browser ou através de uma aplicação cliente para FTP (ex. filezzila, fireFTP). Neste exemplo vou usar o filezzila. Para isso, basta introduzir o IP do servidor de FTP, o utilizador e a respectiva password.

ftp_09

O vsftpd é o meu servidor de FTP favorito, pelas características já referidas. Além disso, como puderam comprovar, o vsftpd é muito simples de instalar e de configurar.  Experimentem vocês mesmos instalar e configurar um autentico servidor FTP. Em caso de duvidas, estamos cá para ajudar.

Partilhar:
Tags:

Comentários

60

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de serva
    serva

    Bom dia ,

    Muito , muito obrigado , a bombar , como disse estou a dedicar-me ao que mais fraco eu tenho , excelente artigo Pedro , os meus agradecimentos .

    Cumprimentos

    Serva

    1. Avatar de imlikewtf
      imlikewtf

      Como nasceu essa paixão pelo Pedro Pinto?

  2. Avatar de Dumitru Toderici
    Dumitru Toderici

    uma boa aula aqui! 🙂 mas agora offtopic, essa vossa publicitade da worten que aparece por uns nao sei quantos segundos na tela principal, ja enerva!

    1. Avatar de Pedro Pinto

      @Dumitru Toderici

      Thanks. Quanto a publicidade, vamos analisar isso.

      1. Avatar de JOEL ANTONIO GONÇALVES TIGELEIRO
        JOEL ANTONIO GONÇALVES TIGELEIRO

        obrigado pelo pplware existir cahmo-me joel estudo na anje porto aprendo muito com o pplware

    2. Avatar de mbarrela
      mbarrela

      facil, instala um ad blocker e resolves o problema ehehe

      1. Avatar de Dumitru Toderici
        Dumitru Toderici

        sim obrigado pela dica! é que se a publicidade aparecer num canto,ou como background, como esta agora, tanto me faz, mas assim aparecia e tapava a news! mas axo que vou pela ad blocker!
        cumprimentos!

        1. Avatar de Vítor M.

          Era preferível não o fazeres 😉 além de prejudicares o site, não custa nada e porque é temporário, desligares esse anuncio.

          É só a minha opinião, é que os bons projectos precisam de “sobreviver”.

          1. Avatar de Pedro Pinto

            Like! Ao não bloquearem a pub (que como o Vitor referiu, é temporária), estão a contribuir para o nosso trabalho.

          2. Avatar de joao
            joao

            pois estamos a contribuir mas se n podermos ver o site como gostamos nem ca vimos.

  3. Avatar de André Almeida
    André Almeida

    Podem usar o GADMIN-PROFTP. Uso no ubuntu e é bastante porreiro. Tem uma interface acessível para configurar (similar à do filezilla).

    Cumps

    1. Avatar de Pedro Pinto

      Excelente dica. André queres fazer um post sobre o GADMIN-PROFTP?

      PPinto

  4. Avatar de Ricardo
    Ricardo

    Bom artigo.
    E para windows ha algo assim ou so com o Server?
    Cumprimentos

  5. Avatar de gopher

    Ricardo tens o filezilla server

    1. Avatar de Ricardo
      1. Avatar de Jose
        Jose

        Não precisas do filezilla, o windows suporta ftp, basta pores ftp://link na barra do explorador e ele entra, so te pede as credenciais.

        1. Avatar de Pedro Pinto

          ftp://link – No link deves colocar o IP do servidor

  6. Avatar de Ricardo Santos
    Ricardo Santos

    Lembrava também que é necessário na firewall permitir a ligação FTP (Porta 21) e a ligação FTP-Data (Porta 20). Pelo menos eu precisei no Fedora.

    1. Avatar de Pedro Pinto

      Firewall do Linux?

      Primeiro activar os modulos
      # modprobe ip_conntrack
      # modprobe ip_conntrack_ftp

      Depois no iptables
      iptables -A INPUT -p tcp –sport 1024:65535 –dport 21 -m state –state NEW,ESTABLISHED -j ACCEPT
      iptables -A INPUT -p tcp –sport 1024:65535 –dport 1024:65535 -m state –state ESTABLISHED,RELATED -j ACCEPT
      iptables -A INPUT -p tcp –sport 1024:65535 –dport 20 -m state –state ESTABLISHED -j ACCEPT

      1. Avatar de Jose
        Jose

        Se tivessemos so a firewall do sistema operativo estavamos desgraçados, e o router do fornecedor? 😉

        1. Avatar de Pedro Pinto

          Nem por isso…o netfilter/iptables é potentissimo e caso não saibas, muitas appliances e routers usam o netfilter/iptables como firewall.

          1. Avatar de PapiMigas
            PapiMigas

            No ubuntu, por defeito, basta fazer “sudo ufw enable”. A firewall fica activa e no boot.
            Para abrir uma porta basta fazer “sudo ufw allow numero_da_porta”. Façam “sudo ufw –help” 🙂

  7. Avatar de Luigi
    Luigi

    Boas,

    desculpem o “offtopic”, mas, gostava da v/ opinião sobre qual sistema instalar para aproveitar um Acer Ferrari de 2003 para fazer de servidor aos discos que tenho… queria ter acesso integral aos ficheiros através da rede cá de casa, mas não consigo encontrar um sistema eficaz e simples…

    tks,

    Luigi

    1. Avatar de Gerardo
      Gerardo

      Se é só para partilha de ficheiros tens o freeNAS, que como o nome indica é um SO só mesmo para NAS.

      1. Avatar de Luigi
        Luigi

        pois.. já tentei, mas não me consigo entender com a ligação dos discos e reconhecê-los, por mais que pesquise…

  8. Avatar de Nuno Sousa
    Nuno Sousa

    Bom dia!

    Tenho uma dúvida que certamente me podem ajudar.
    Qual é a principal diferença entre ssh e ftp, e qual a vantagens de um perante o outro?

    Obrigado

    1. Avatar de André Viana (@Teh_Big_Boi)

      FTP – File Transfer Protocol
      é basicamente usado para transferencias de ficheiros, quer seja remotamente, ou numa rede local
      podes encontrar vários exemplos em (muito poucos) sites de downloads, aparece te uma pagina com uma lista de ficheiros, dentro de uma pasta
      ^ isto é FTP

      SSH – Secure SHell
      é uma forma de enviar qualquer tipo de dados ulitizando uma ligaçao encriptada que exige uma validaçao com HashCodes
      com o ssh podes controlar um computador a partir da shell (linha de comandos), podes transferir ficheiros por SFTP (exige a mesma validaçao), em sistemas baseados em UNIX podes até correr programas no teu computador mas na verdade todo o processamento está a ser feito no computador remoto!

      espero ter ajudado, qualquer duvida, pergunta 😉

      1. Avatar de Nuno Sousa
        Nuno Sousa

        Obrigado!

  9. Avatar de Tiago
    Tiago

    Tenho este erro quando tento transferir ficheiros, o que poderá ser?

    Resposta: 550 Permission denied.
    Erro: Erro crítico na transferência do ficheiro

    1. Avatar de Pedro Pinto

      Boas tiago, parece-me ser problema nas permissões da pasta. Diz-me quais as permissões que tens na pasta onde tens os ficheiros. podes fazer por exemplo: ll /home/pasta

      1. Avatar de Tiago
        Tiago

        coloquei todas as entidades com permissoes totais, mas mesmo assim nao consigo transferir, já tentei transferir para outra pasta mas tenho o mesmo problema
        drwxrwxrwx 3 root root 4096 Jun 17 13:25

  10. Avatar de ze
    ze

    Obrigado pelo tutorial. Estava farto de procurar na net e não encontrava como configurar um servidor FTP no Ubuntu… Ufa! Ainda bem que voçes publicaram este artigo.

    Ironia à parte, claro 🙂

  11. Avatar de João Diogo Costa
    João Diogo Costa

    Boas! Óptimo tutorial.
    Só uma dúvida, no passo 5: “Passo 5 – As configurações estão feitas, teremos apenas de reiniciar o serviço vsftpd através do comando:”

    Qual é o comando? Acho que se esqueceram de especificar.

    Cumprimentos,

  12. Avatar de moedinha
    moedinha

    penso que será service vsftpd restart.

    1. Avatar de João Diogo Costa
      João Diogo Costa

      Exactamente, thanks

  13. Avatar de Mitchel
    Mitchel

    Como que faço p liberar o ftp para acesso externo e em vez de entrar via ip da máquina usara algo como ftp://joao.com por exemplo?

    1. Avatar de rascas
      rascas

      Utiliza um serviço de ip dinamico. O principal objectivo disso é mesmo fazer o k tu queres.
      Existem mtos gratuitos. Por exemplo o no-ip ou o dyndns. É preciso que o router de tua casa suporte isso (ddns).

      Cumprimentos

      1. Avatar de Reis
        Reis

        Para colocar o ftp para acesso externo tb é com o dyndns?

        Já agora, um servidor ftp, se se ligarem mt users fica mt lento?

        Cumprimentos

        1. Avatar de rascas
          rascas

          Aconselho-te a pequisar pela net por “ddns” e veres o seu significado.

          Sim costuma-se utilizar esses serviços para quem tem uma linha com ip dinâmico (quase todos os home users em Portugal).

          A velocidade do ftp depende principalmente da linha (adsl, fibra…) a que está ligado o servidor. Neste caso da velocidade de upload. Existem outras coisas a ter em conta (velocidade do disco onde se encontram os ficheiros, performance da maquina…) mas este é o principal factor limitativo.

  14. Avatar de João Diogo Costa
    João Diogo Costa

    Fiz tudo como especificado e ao aceder à pasta via Terminal noutra máquina linux (na rede local) acontecem dois erros:

    1 – não consido criar novas directorias utilizando o mkdir.
    Da o erro 550 Permission denied.

    2 – Tenho acesso a todas as directorias da máquina onde está hospedado o servidor. Consigo aceder à etc, opt, usr, etc…

    Por outro lado, quando acedo via browser não me aparecem nenhumas directorias.

    Alguém sabe o porquê destes erros?

    Cumps

    1. Avatar de MrSoares
      MrSoares

      JA conseguiste limitar o acesso a outras diretorias? … Eu também estou com esse problema..

    2. Avatar de joao
      joao

      Olá amigo: abra o terminal,entra direto na pasta, depois entra com
      o comando sudo chmod -R 777 “pasta que deseja dá as permissoẽs”

  15. Avatar de Pedro
    Pedro

    Bom dia

    já instalei no ubuntu 12.04 como é que sei qual é o IP do servidor?
    Agradecia ajuda
    Obrigado

    1. Avatar de Pedro Pinto

      Abres a linha de comandos e escreve o comando: ifconfig

  16. Avatar de Robert
    Robert

    Pedro,
    Há tempos acompanho o seu site sempre com ótimas dicas, Gostaria da sua opinião sobre a utilização de FTP (não seguro) ao invés de SFTP (criptografado), esta configuração do servidor FTP que você publicou já vem por default com o SSL ativado? Uma sugestão seria publicar um artigo de FTP x SFTP, ou até mesmo ensinar a instalar um server SFTP, o que acha?
    Grande Abraço e parabéns pelo site!
    Robert

  17. Avatar de Henrique Dias
    Henrique Dias

    Boas,
    Tenho um pc velho aqui em casa e vou instalar Ubuntu ou Caixa Mágica (qual me recomendam?) depois vou exprimentar esse vsftpd!

  18. Avatar de Jorge Carvalho
    Jorge Carvalho

    Boas, sou novo por aqui e tenho aprendido bastante neste pouco tempo que tenho seguido o pplware. Há dias resolvi instalar no meu portátil o ubuntu 12.04 32 bits, e o desempenho do pc é formidável pois, com o windows xp arrastava-se e nem jogos lá jogava. Acontece que tenho um desktop com o windows 7 e agora não consigo aderir ao grupo doméstico que lá tenho criado. Será possível através do ubuntu aceder a esse grupo doméstico onde tenho algumas pastas em partilha? Ou não é possível por ser linux? na rede do ubuntu diz não encontrar servidor?!!
    Agradecia que me ajudassem se não for incómodo.

  19. Avatar de migs
    migs

    beleza. tudo funfando so algumas duvidas
    criei um diretorio /ft/ftp
    crio os usurarios ai dentro ai fica assim \ft\ftp\joao,pedro,ze,mane

    ai entro pelo filezila com o joaoe ele cai na pasta joao so
    que consigo ver a pasta do pedro ze mane

    outra coisa
    para configurar acesso externo instalae o no-ip mas nao to conseguindo entrar redirecionei a porta no roteador para a porta 2020 e configurei a porta 2020 no vsftp.conf

    1. Avatar de Ledson Cleber

      Olá migs deve ser porque você criou pastas no mesmo diretório, faça o seguinte crie usuário na pasta por exemplo ft\ftp2\outro_usuario pra vê se da certo…

  20. Avatar de Bruno Pereira

    Gostaria de saber onde encontro mais informações de permissão de pastas para os usuários, e se teria como forçar o usuário a alterar a senha em um primeiro acesso.

    Abraços.

  21. Avatar de Nayara
    Nayara

    Uso o Ubunto server,segui passo a passo e mesmo assim na hora de conectar o firezilla me da um erro:
    Response: 220 (vsFTPd 2.3.5)
    Command: USER user1
    Response: 331 Please specify the password.
    Command: PASS *****
    Response: 530 Login incorrect.
    Error: Critical error
    Error: Could not connect to server

    1. Avatar de manuel
      manuel

      Eu também tenho esse erro e não vejo solução!

  22. Avatar de MrSoares
    MrSoares

    Como é que se faz para restringir o acesso a uma pasta superior?? Estou farto de procurar e nao encontro nada… helllpppp

    1. Avatar de Antonio Belo
      Antonio Belo

      chmod 700

      1. Avatar de Antonio Belo
        Antonio Belo

        chmod 700

        1. Avatar de Antonio Belo
          Antonio Belo

          chmod 770 + nome da pasta

  23. Avatar de Dalila
    Dalila

    Cara, perfeito!

    Nunca um tutorial funcionou tão perfeitamente e rapidamente… hehe

    Obrigada!

  24. Avatar de Leonardo

    Olá,

    Obrigado por compartilhar essas informações.

    Fiz udo conforme descrito e está retornando a mensagem 500 OOPS: child died. Sabe o que pode ser?

    Desde já agradeço.

  25. Avatar de Adilson Lameira
    Adilson Lameira

    Olá PPlware, achei muito interessante a matéria. Eu uso Debian 7.0, será que este conf tambem fubnciona bem no Debian?

    Abzs!

  26. Avatar de Adilson Lameira
    Adilson Lameira

    Olá PPlware, achei muito interessante a matéria. Eu uso Debian 7.0, será que este conf também funciona bem no Debian?

    Abzs!