Aprenda a instalar um servidor de FTP em 5 minutos…
..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.
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.
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.
Este artigo tem mais de um ano
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
Como nasceu essa paixão pelo Pedro Pinto?
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!
@Dumitru Toderici
Thanks. Quanto a publicidade, vamos analisar isso.
obrigado pelo pplware existir cahmo-me joel estudo na anje porto aprendo muito com o pplware
facil, instala um ad blocker e resolves o problema ehehe
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!
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”.
Like! Ao não bloquearem a pub (que como o Vitor referiu, é temporária), estão a contribuir para o nosso trabalho.
pois estamos a contribuir mas se n podermos ver o site como gostamos nem ca vimos.
Podem usar o GADMIN-PROFTP. Uso no ubuntu e é bastante porreiro. Tem uma interface acessível para configurar (similar à do filezilla).
Cumps
Excelente dica. André queres fazer um post sobre o GADMIN-PROFTP?
PPinto
Bom artigo.
E para windows ha algo assim ou so com o Server?
Cumprimentos
Ricardo tens o filezilla server
obrigado
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.
ftp://link – No link deves colocar o IP do servidor
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.
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
Se tivessemos so a firewall do sistema operativo estavamos desgraçados, e o router do fornecedor? 😉
Nem por isso…o netfilter/iptables é potentissimo e caso não saibas, muitas appliances e routers usam o netfilter/iptables como firewall.
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” 🙂
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
Se é só para partilha de ficheiros tens o freeNAS, que como o nome indica é um SO só mesmo para NAS.
pois.. já tentei, mas não me consigo entender com a ligação dos discos e reconhecê-los, por mais que pesquise…
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
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 😉
Obrigado!
Tenho este erro quando tento transferir ficheiros, o que poderá ser?
Resposta: 550 Permission denied.
Erro: Erro crítico na transferência do ficheiro
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
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
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 🙂
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,
penso que será service vsftpd restart.
Exactamente, thanks
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?
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
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
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.
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
JA conseguiste limitar o acesso a outras diretorias? … Eu também estou com esse problema..
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”
Bom dia
já instalei no ubuntu 12.04 como é que sei qual é o IP do servidor?
Agradecia ajuda
Obrigado
Abres a linha de comandos e escreve o comando: ifconfig
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
Boas,
Tenho um pc velho aqui em casa e vou instalar Ubuntu ou Caixa Mágica (qual me recomendam?) depois vou exprimentar esse vsftpd!
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.
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
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…
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.
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
Eu também tenho esse erro e não vejo solução!
Como é que se faz para restringir o acesso a uma pasta superior?? Estou farto de procurar e nao encontro nada… helllpppp
chmod 700
chmod 700
chmod 770 + nome da pasta
Cara, perfeito!
Nunca um tutorial funcionou tão perfeitamente e rapidamente… hehe
Obrigada!
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.
Olá PPlware, achei muito interessante a matéria. Eu uso Debian 7.0, será que este conf tambem fubnciona bem no Debian?
Abzs!
Olá PPlware, achei muito interessante a matéria. Eu uso Debian 7.0, será que este conf também funciona bem no Debian?
Abzs!