Artigo testado no Slackware 14.1 64-bits multilib.
A distribuição
Slackware, numa instalação FULL, vem com o servidor FTP chamado
Proftpd. Normalmente, este serviço já inicia junto com o sistema automaticamente.
Mas, se quiser checar a existência do mesmo, use:
# which ftp
Veja se está instalado, com:
# which proftpd
Qualquer coisa, instale-o com:
# slackpkg install propftpd
Quer saber se o servidor já está rodando?
# ps -ef|grep ftp
Se não estiver, basta executar:
# proftpd
Veja as configurações do Proftpd, cujo arquivo é
/etc/proftpd.conf:
# more /etc/proftpd.conf | grep -v ^#
Utilize os comentários como guia e configure o arquivo para a forma que mais o agradar:
# vi /etc/proftpd.conf
Teoricamente é muito simples, não é mesmo? Mas, configurar esse servidor pode se tornar um processo trabalhoso, no caso dele não funcionar como esperado, e forçá-lo a realizar testes até descobrir a causa do erro.
Aqui, eu compartilho um exemplo de configuração, com pouquíssimas alterações em relação ao arquivo original padrão, mas que foi suficiente para que eu conseguisse ter um servidor FTP acessível tanto pela LAN como pela WAN, com usuários normais do sistema, e até mesmo com um usuário anônimo sem senha. Neste último caso o usuário fica restrito apenas ao seu diretório pessoal
/home/ftp.
# Início do arquivo
ServerName "ProFTPD Default Installation"
ServerType standalone
DefaultServer on
Port 21
Umask 022
MaxInstances 30
User nobody
Group nogroup
SystemLog /var/log/proftpd.log
TransferLog /var/log/xferlog
<Directory /*>
AllowOverwrite on
</Directory>
<Anonymous ~ftp>
RequireValidShell off
User ftp
Group ftp
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp
# Limit the maximum number of anonymous logins
MaxClients 5
# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayChdir .message
# Limit WRITE everywhere in the anonymous chroot
<Limit WRITE>
DenyAll
</Limit>
# An upload directory that allows storing files but not retrieving
# or creating directories.
</Anonymous>
MasqueradeAddress seu.domínio.aqui
MasqueradeAddress seu.ip.aqui
PassivePorts 60000 65535
#fim
Perceba que o que está entre <Anonymous></Anonymous>, é a configuração que garante o acesso sem senha ao usuário
anonymous ou ao usuário
ftp, que é o seu apelido. Ele terá acesso apenas ao seu diretório
/home/ftp.
Porém, neste caso, não basta essa configuração para habilitar o uso do usuário
ftp, é necessário comentar tal usuário dentro do arquivo
/etc/ftpusers. Todo usuário listado nesse arquivo, será impedido de logar. Então, não esqueça de fazer isso.
As últimas três linhas do arquivo de configuração, exibido acima, são referentes aos parâmetros para acesso ao servidor fora da LAN, ou seja, pela Internet. Para isso, eu fiz um cadastro grátis no site:
...e coloquei lá em
Hosts/Redirects o meu nome de domínio associado ao meu IP externo, que pode ser obtido em sites como:
Assim, se obtém os dois primeiros parâmetros dessas últimas três linhas. Já para obter o parâmetro da última linha, o PassivePorts, eu copiei tal informação da documentação oficial do Proftpd, disponível em:
É uma página referente ao uso do Proftpd + NAT.
E, além disso, como você deve ter imaginado, eu adicionei o meu IP local nas configurações do meu roteador, em DMZ, para que o acesso externo fosse possível. Veja:
Obs.: eu não domino o assunto em questão, nem a ferramenta Proftpd, que aliás, eu só passei a conhecer recentemente. Mas eu acabei perdendo um tempinho realizando uns testes inúteis. Agora, compartilho minha experiência para, quem sabe, ajudar você a evitar o mesmo tipo de erro.
Foi o seguinte: eu tentei acessar o meu servidor FTP local usando meu IP externo, mas não conseguia. Eu só conseguia acessá-lo através do meu IP local. Pensei que isso era um erro de configuração do Proftpd e perdi tempo procurando soluções para isso. Caso isso aconteça como você, não se desespere ainda. Provavelmente, pelo que constatei, isso aconteceu apenas devido a falta de configuração do arquivo
/etc/hosts, que não estava direcionando os endereços. A causa não era uma configuração errada do Proftpd.
Com base nisso, saiba que o teste real deve ser feito com uma máquina fora da LAN. Não basta usar IP externo com uma máquina conectada na LAN. Se não, você vai ficar achando que o servidor funciona apenas localmente, quando na verdade, ele está funcionando fora da LAN, na Internet também, sem você saber.
Por exemplo, então, eu desliguei o Wi-fi do meu celular e com isso, eu saí da LAN da minha residência. Ativei a Internet 3G e acessei o meu servidor FTP. Deu certo, veja:
Também, falei com o meu amigo
slacker e ele acessou meu servidor FTP, pela Internet. Ele mora em outro estado e deu certo, tanto pela linha de comando, como pelo browser. Veja:
Se você quiser acessar o servidor pelo navegador, basta digitar na barra de endereços:
ftp://seu.endereço.ip
Mas não esqueça que o IP deve ser local, se for acessar de uma máquina dentro da LAN, e o IP deve ser externo se for acessar de fora da LAN.
Se algum usuário com mais experiência souber como contornar melhor esse detalhe, por favor, comente. Pois eu acho que deveria ser possível uma máquina da LAN acessar o servidor das duas formas: localmente e externamente.
Se eu descobrir, atualizarei este artigo. Mas, o importante é que o servidor pode ser acessado localmente e externamente, de qualquer forma.
Você também pode usar o domínio criado no
no-ip, ao invés do endereço IP:
ftp://seu.domínio.net
Mas neste caso, só funcionará localmente se configurar corretamente o
/etc/hosts.
Para acessar via linha de comando, basta:
ftp seu.endereço.ip
Aqui, é a mesma coisa. Se for fazer isso numa máquina da LAN, use o IP local. Se for fora da LAN, use o IP externo.
Se quiser acessar seu diretório pessoal, com seu usuário, pelo navegador, coloque na barra de endereços:
ftp://seuusuario@seudomínio.ou.ip
Será pedido a senha e você poderá acessar seus diretórios pessoais:
Criei até um repositório de pacotes para Slackware, compatível com
Slackpkg+, com acesso público, para testes:
Conclusão
Resolvi criar esse pequeno tutorial porque, incrivelmente, enquanto eu tentava realizar essa configuração, senti falta de um tutorial simples e direto, com o arquivo de configuração do Proftpd disponível e os passos para que o serviço se tornasse acessível fora da LAN.
O que encontrei muito nos fóruns, foram pessoas reclamando que conseguiam acessar o servidor pela rede local, mas não fora dela. E também, algumas pessoas dando respostas incompletas sobre esse problema.
Também encontrei pequenas pistas sobre a configuração e uso do Proftpd e tive que ir testando e juntando todas elas para poder criar este artigo.
Dentre os sites que visitei, entre outros, estão:
Abraço!