Linux / PHP / Java / Designer

As melhores dicas estão aqui.

Montando Servidor FTP No Linux UBUNTU

| 6 Comentários

Bom passei um tempo na internet procurando e enfim achei um tutorial coompleto de como montar um servidor ftp no seu Linux o tutorial foi retirado de

http://www.guiadohardware.net/tutoriais/instalando-servidor-ftp-linux/

Bom espero que ajudem a todos

Durante a instalação do pacote do Proftpd geralmente serão feitas algumas perguntas. A primeira é se você deseja deixar o servidor FTP ativo em modo standalone ou em modo inetd. O standalone é mais seguro e mais rápido, enquanto o inetd faz com que ele fique ativo apenas quando acessado, economizando cerca de 400 KB de memória RAM (que fazem pouca diferença hoje em dia). Recomendo o modo standalone.

Você terá também a opção de ativar o acesso anônimo, que permite acessos anônimos (somente leitura) na pasta /home/ftp, onde você pode disponibilizar alguns arquivos para acesso público. Neste caso os usuários se logan no seu servidor usando a conta “anonymous” e um endereço de mail como senha. Caso prefira desativar o acesso anônimo, apenas usuários com login válido na máquina poderão acessar o FTP.

No caso do Kurumin, outra opção dada pelo ícone mágico durante a instalação é a de restringir o acesso dos usuários (com excessão dos anônimos que já são restritos) a seus diretórios home. Assim o kurumin ficará preso na pasta /home/kurumin por exemplo, sem ter como ver nem alterar outros arquivos do sistema. Esta opção é bastante útil para melhorar a segurança do servidor.

Você poderá também ativar a limitação de banda, que permite limitar o upload de cada usuário a 10 KB/s por exemplo, para que o FTP não sature o link do servidor.

Depois de concluída a instalação o servidor fica ativo por default e é inicializado automaticamente durante o boot. Para parar isso basta usar a opção “Parar: Parar o servidor Proftpd”. Isso desabilita também a inicialização automática durante o boot, removendo o link /etc/rc5.d/S50proftpd.

Você pode acessar outras máquinas da rede com servidores FTP ativos usando o Gftp incluído no Kurumin. O FTP é uma boa opção para transferência de arquivos na rede local, é mais prático e fácil do que ficar compartilhando arquivos através do Samba. Uma das vantagens do FTP é que existem clientes para todas as plataformas, você pode baixar um servidor e cliente de FTP for Windows no:

http://sourceforge.net/project/showfiles.php?group_id=21558&release_id=126385

A configuração manual do servidor FTP é feita através do arquivo /etc/proftpd.conf. Este arquivo pode ser usado em qualquer distribuição, afinal independentemente de estar usando o Debian, Fedora ou o Mandrake, o proftpd será sempre o mesmo. Você pode inclusive transportar um arquivo gerado no Kurumin para outra distribuição se for o caso.

Sempre que fizer alterações no arquivo, reinicie o servidor para que elas entrem em vigor. Para isso use o comando:

# service proftpd restart

ou:

# /etc/init.d/proftpd restart

(no caso do Debian)

Uma das primeiras opções do arquivo é a opção Port, que permite alterar a porta usada pelo FTP. O padrão é usar a porta 21, mas muitos serviços de banda larga bloqueiam a porta 21 e a 80 para que os usuários não rodem servidores. Neste caso, você pode mudar para a porta 2121 por exemplo:

# Port 21 is the standard FTP port.
Port 2121

Ao mudar a porta padrão do servidor, os usuários precisarão indicar manualmente a porta no cliente de ftp ou navegador, como em: ftp://200.234.213.23:2100

Em seguida vem a opção MaxInstances, que limita o número de conexões simultâneas ao servidor FTP. Esta opção trabalha em conjunto com a limitação de banda (veja a seguir), você pode limitar os downloads de cada usuário a um máximo de 10 KB/s e limitar o servidor a 3 usuários simultâneos, assim o FTP consumirá um máximo de 30 KB/s do link do servidor.

MaxInstances 30

Se você quiser limitar o acesso dos usuários à seus diretórios home, adicione a linha “DefaultRoot ~” no final do arquivo. Lembre-se que no Linux o “~” é um coringa, que é automaticamente substituído pela pasta home do usuário que está logado. Esta linha é adicionada pelo ícone mágico:

# Restringe os usuários a seus diretórios home
DefaultRoot ~

Para ativar a limitação de banda, adicione a linha “TransferRate RETR 8:10″, onde o “8″ pode ser substituído pela taxa desejada, em KB/s. Esta linha também é adicionada pelo ícone mágico ao ativar a opção:

# Limita a taxa de upload do servidor FTP
TransferRate RETR 8:10

A princípio apenas os usuários que tiverem logins válidos no servidor poderão acessar o FTP. Caso você queira abrir um FTP público, adicione estas linhas no arquivo de configuração. Elas ficam comentadas no arquivo original:

<Anonymous ~ftp>
User ftp
Group nogroup
UserAlias anonymous ftp
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell off
MaxClients 20
DisplayLogin welcome.msg

DisplayFirstChdir .message
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
<Directory incoming>
Umask 022 022
<Limit READ WRITE>
DenyAll
</Limit>
<Limit STOR>
AllowAll
</Limit>
</Directory>

</Anonymous>

A linha “MaxClients” determina o número máximo de anônimos que poderão se logar no servidor. Esta opção é separada da Maxclients principal, que limita o número de usuários com login válido. Você pode permitir 30 usuários válidos e mais 20 anônimos por exemplo.

A opção “DisplayLogin welcome.msg” indica o a mensagem de boas vindas que é mostrada quando os usuários logam no FTP. Por padrão é o arquivo /home/ftp/welcome.msg.

Os usuários anônimos têm acesso apenas aos arquivos dentro da pasta /home/ftp. Este é o diretório raiz para eles, eles não tem como ver muito menos alterar outros arquivos do sistema.

A seção “Directory incoming” mais abaixo cria uma pasta de upload (por padrão a /home/ftp/incoming) onde os anônimos poderão dar upload de arquivos. A idéia é que você veja periodicamente o conteúdo da pasta e mova o que for útil para a pasta /home/ftp para que o arquivo fique disponível para download.

Por padrão os anônimos não podem ver o conteúdo da pasta incoming, podem apenas dar upload. Se necessário, crie a pasta incoming com os comandos:

# mkdir /home/ftp/incoming
# chown nobody.nogroup /home/ftp/incoming

Para acessar o seu servidor, os clientes devem usar o login “anonymous” ou “ftp”, usando um endereço de e-mail qualquer como senha.

Uma medida comum ao ativar o upload dos usuários anônimos é usar uma partição separada para o FTP, para evitar que algum engraçadinho fique dando upload durante a madrugada até lotar o HD do servidor. Neste caso você precisa apenas adicionar uma linha no arquivo /etc/fstab, para que a partição desejada seja montada durante o boot.

Esta linha de exemplo montaria a partição /dev/hda3, formatada em reiserfs na pasta /home/ftp:
/dev/hda3 /home/ftp reiserfs defaults 0 0

Criando usuários

Imagine agora que você quer uma configuração um pouco mais complexa, com vários usuários, cada tendo acesso a apenas uma pasta específica.

Imagine por exemplo que você resolveu criar repositório para os arquivos de vários projetos. O mantenedor do projeto1 pode dar upload para a pasta /home/ftp/projeto1 (por exemplo), mas não deve ter acesso a outras pastas nem a outros arquivos do sistema. Os usuários anônimos terão acesso às pastas de todos os projetos, mas naturalmente apenas para leitura.

A forma mais simples de fazer isso é criar os usuários que terão acesso ao FTP, colocando a pasta a que terão acesso como seu diretório home e bloqueando o uso do shell, para que eles não possam acessar o servidor remotamente através de outros meios, via ssh por exemplo.

Vamos começar adicionando no arquivo a opção que prende os usuários nos seus diretórios home:

DefaultRoot ~

Você vai precisar adicionar também a seção para liberar o acesso anônimo ao ftp, que vimos acima. Como queremos apenas que os mantenedores dos projetos possam dar upload de arquivos, remova a seção “”.

A seção vai ficar:

<Anonymous ~ftp>
User ftp
Group nogroup
UserAlias anonymous ftp
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell off
MaxClients 20
DisplayLogin welcome.msg

DisplayFirstChdir .message
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Anonymous>

O diretório padrão do FTP, onde os visitantes terão acesso aos arquivos é a /home/ftp. Em outras distribuições pode ser a pasta /var/ftp, dê uma olhada em como o arquivo vem configurado por padrão.

Vamos começar criando subpastas para cada projeto:

# mkdir /home/ftp/projeto1
# mkdir /home/ftp/projeto2
# mkdir /home/ftp/projeto3

etc…O próximo passo é ir adicionando os usuários no sistema, tendo o cuidado de fazer as alterações no diretório home e no shell padrão, para que eles tenham acesso via FTP e apenas à pasta desejada.

Para adicionar os usuários, use o comando “adduser”, como se estivesse criando uma conta normal:

# adduser projeto1

Acrescentando usuário projeto1…
Acrescentando novo grupo projeto1 (1005).
Acrescentando novo usuário projeto1 (1005) com grupo projeto1.
Criando diretório pessoal /home/projeto1.
Copiando arquivos de /etc/skel
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Veja que por padrão ele cria a pasta /home/projeto1, que fica sendo o diretório home do usuário criado. Mas, neste caso queremos que o home seja a pasta /home/ftp/projeto1 onde ele irá dar upload dos arquivos.

Para alterar isso, vamos no arquivo /etc/passwd onde ficam guardadas as informações dos usuários:

# kedit /etc/passwd

Na última linha do arquivo você verá:

projeto1:x:1005:1005:,,,:/home/projeto1:/bin/bash

Vamos alterar o “/home/projeto1″ para “/home/ftp/projeto1″ para trocar o home e o “/bin/bash” para “/bin/false” para travar o usuário e impedir que ele fique fazendo o que não deve no servidor. Se você preferir que além do acesso via ftp, os usuários tenham acesso via ssh, então mantenha o “/bin/bash”.

Depois das alterações, a linha ficará:

projeto1:x:1005:1005:,,,:/home/ftp/projeto1:/bin/false

Você pode aproveitar para remover a pasta /home/projeto1, já que não precisaremos mais dela:

# rm -rf /home/projeto1/

Na verdade, este processo serve para que você entenda melhor o processo de criação deste usuários “falsos” no Linux. Estas alterações podem ser especificadas ao criar o usuário. Não é preciso sair editando todos estes arquivos manualmente.

O comando para criar o usuário “projeto1″ usando a pasta /home/ftp/projeto1 como home e o /bin/false como shell, seria:

# adduser –home /home/ftp/projeto1 –shell /bin/false –no-create-home projeto1

Não se esqueça de acertar as permissões da pasta /home/ftp/projeto1:

# chown -R projeto1 /home/ftp/projeto1/

Agora falta só reiniciar o servidor FTP para que as configurações entrem em vigor:

# service proftpd restart

Em distribuições derivadas do Debian você vai precisar adicionar a linha “/bin/false” no final do arquivo /etc/shells para que ele possa ser usado:

# echo “/bin/false” >> /etc/shells

Feito isso, você já conseguirá logar-se no servidor usando o login criado. O usuário não enxerga nada fora da pasta “/home/ftp/projeto1″ e todos os arquivos que der upload vão para lá:

02

A senha de acesso ao FTP é a mesma definida na hora de criar o usuário. O proftpd simplesmente aproveita o sistema de autenticação do sistema. Se você precisar alterar a senha do usuário, use o comando “passwd projeto1″.

Esta configuração é muito usada em servidores Web, que hospedam vários sites num sistema de hosting compartilhado. O mais comum nestes casos é que cada site tenha uma conta no sistema e uma pasta onde vão os arquivos do site, como por exemplo /var/www/site1/. Esta pasta fica acessível via FTP para o dono possa atualizar o site.

By: Rodrigo Martins

e-mail: rodrigo@hospedagemsegura.com.br

6 Comments

  1. ler todo o blog, muito bom

  2. Ola, sabe como eu faço para incluir outros diretorios (existentes) ao acesso ftp? Tipo, eu tenho um diretorio chamada /web e gostaria q alguns usuarios pudessem acessar alem do /var/ftp/usuario pudesse acessar tbm o /web é possível?

    Obrigado

  3. Crie um um link simbólico e dê permissão na pasta /web

  4. Da um ln e cria um link virtual dentro da pasta do FTP por exemplo, são não esqueça de setar as permissões para o usuário ter acesso aos arquivos.

  5. fiz tudo conforme o tutorial mas aparece o erro:
    530 Login incorrect.

    Tem alguma solução?

  6. Estou a procura, faz dias, de um tutorial de como criar um servidor de hospedagem de site. Não uso muito o linux, mas uso um pouco e gostaria de aprender a criar esse servidor de hospedagem para que eu possa tocar pra frente o projeto de um site meu que Eu mesmo possa ter domínio total e por experiencia tmb.

    OBG.

Deixe uma resposta

Campos requeridos estão marcados *.