Instalar os pacotes:
wu-ftpd:
wu-ftpd é o daemon que serve arquivos FTP para clientes ftp. Ele é útil se você deseja transferir programas entre computadores sem rodar um sistema de arquivos de rede como o NFS; ou se você deseja ter um site de FTP anônimo (neste caso, você necessita instalar o pacote anonftp).
anonftp (depende de um servidor de ftp qualquer):
Contém os arquivos necessários para permitir acesso ftp anônimo a sua máquina. Isso deixa qualquer usuário pegar arquivos de sua máquina sem ter uma conta, o que é um meio popular de tornar programas disponíveis na Internet.
Após instalar, verifique se existe a linha :
ftp 21/tcp no arquivo /etc/services, pois é onde está sendo definida a porta de<htmlurl url=" ftp." name=" ftp."> E também, verificar se a linha abaixo, do arquivo /etc/inetd.conf está descomentada/habilitada. ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a Caso não esteja, basta descomentar e reinicializar o serviço inet : [root@localhost]# /etc/rc.d/init.d/inet stop [root@localhost]# /etc/rc.d/init.d/inet startPronto, seu servidor de ftp está em funcionamento, com as configurações básicas (padrões).
--------------------------------------------------------------------------
Aqui vão as descrições de algumas opções mais relevantes que são adicionadas ao arquivo /etc/ftpaccess (arquivo mais importante) que podem ser encontradas na documentação (man ftpaccess).
Para maiores configurações, deve-se utilizar-se dos seguintes arquivos :
/etc/ftpaccess < -------- Configurações gerais do servidor. Exemplo: # Define uma classe de usuários: reais, convidados e anônimos class all real,guest,anonymous * class rmtusers guest,anonymous * class local real *
# Para restringir o acesso de usuários reais, basta retirar o real da linha anterior # Para restringir o acesso de usuários convidados, basta retirar o guest da linha anterior # Para restringir o acesso de usuários anônimos, basta retirar o anonymous da linha anterior # É possível restringir o acesso de tipos de usuários de um certo domínio : class renegados real !*.domínio.com.br # O "!" funciona como negação e renegados = o nome da classe # Proíbe qualquer máquina do domínio conectiva.com.br de efetuar login e # exibe o arquivo /etc/wu-ftpd/access_deny_msg deny *.conectiva.com.br /etc/wu-ftpd/access_deny_msg # Proíbe que as máquinas/domínios listados no arquivo # /etc/wu-ftpd/deny_hosts efetuem login e exibe a mensagem contida no # arquivo /etc/wu-ftpd/access_deny_msg deny /etc/wu-ftpd/deny_hosts /etc/wu-ftpd/access_deny_msg # Definição de grupos de convidados, mesmo sendo um usuário real, caso o # grupo do mesmo esteja na lista de guestgroup a sessão de ftp dele será # automaticamente passada para uma sessão anônima guestgroup users # Define um usuário convidado. No /etc/passwd deve estar definido o seu # diretório root e também o $HOME deste usuário ao utilizar o<htmlurl url=" ftp." name=" ftp."> Esses # diretórios devem ser separados por "/./", por exemplo: # convidado:senha:id:gid:Conta de FTP - convidado:/ftp/./incoming:/etc/ftponly guestuser convidado # Definição de grupos/usuários reais, por exemplo, caso se tenha utiizado a # opção guestgroup * mas ainda deseja-se que os usuários do grupo suporte # queiram acessar como reais: realgroup suporte realuser usuario # Toda vez que um usuário da classe abaixo acessar o ftp, o processo do # servidor ftp irá ter prioridade = valor nice nice <valor nice> [<classe que se logar>] # Define o valor de umask para cada classe ou geral defumask 011 rmtusers defumask 022 local # Segundos que o serviço espera pela vinda de uma conexão PASV timeout accept 120 # Segundos que o serviço espera para realizar a conexão de dados com a porta timeout connect 120 # Segundos que o serviço espera por atividades na conexão de dados timeout data 1200 # Segundos que o serviço espera pelo próximo comando timeout idle 900 # Segundos que o serviço espera pelo próximo comando (valor máximo, não pode # ultrapassar). Caso o timeout idle ultrapasse o valor do maxidle, é sempre # válido o maxidle timeout maxidle 1200 # Segundos que o serviço disponibiliza para toda a conversação RFC931: # <htmlurl url="http://andrew2.andrew.cmu.edu/rfc/rfc931.html" name="http://andrew2.andrew.cmu.edu/rfc/rfc931.html"> timeout RFC931 10 # Quantidade de arquivos máxima que um usuário da classe pode transferir # raw total: total de arquivos: entrada + saída # raw out: saída # raw in: entrada file-limit raw total 50 rmtusers # Quantidade de bytes máxima que um usuário da classe pode transferir # raw total: total de arquivos: entrada + saída # raw out: saída # raw in: entrada byte-limit # Tempo máximo (em minutos) da conexão para usuários convidados, anônimos e ou os dois: # limit-time guest 60 # limit-time anonymous 60 # limit-time * 60 # Por esta opção, usuários reais não possuem tempo máximo de conexão limit-time guest 10 # Não permite a transferência de arquivos. # Sintaxe: noretrieve [absolute|relative] [class=<classname>] ... [-] <filename> <filename> noretrieve class=rmtusers /home/*/.bashrc # Após 3 tentativas de acesso sem sucesso, é guardado no log informações de # que após 3 tentativas não foi possível o acesso e é terminada a conexão loginfails 3 # Define o modo da mensagem de "boas-vindas" ao se conectar: # full: exibe o nome do servidor e qual serviço utiliza # (proftpd/wu-ftpd/etc) # brief: exibe apenas o nome da máquina # terse: exibe apenas a mensagem: "FTP server ready" greeting full # Define uma mensagem padrão de conexão - NOTE: caso seja definido o tipo de # mensagem (acima), o texto abaixo não irá aparecer greeting text Servidor de FTP # Logo após entrar com usuário e senha (com sucesso) será mostrado o # conteúdo do arquivo. banner /etc/ftp/banner # Define o nome padrão do servidor ftp - pode ser acessado através de %L, # caso seja um servidor virtual, este valor não é utilizado hostname lilica # Define o email do administrador do servidor - pode ser acessado por %E email administrador@servidorftp.com.br # Exibe o conteúdo do arquivo <path> quando o usuário acessar o servidor # <LOGIN> ou quando entrar em algum diretório <CWD> # message <path> {<when> {<class> ...}} message /etc/ftp/message CWD=/home/ftp/pub all # No arquivo de mensagens, podem haver os seguintes "atalhos": # %T tempo (formato Thu Nov 15 17:12:42 1990) # %F espaço livre na partição (kbytes) [não suportado em todos] # %C diretório local (equivale ao pwd) # %E email do administrador # %R nome da máquina que está acessando o servidor # %L nome do servidor # %u nome do usuário determinado via autenticação RFC931 # %U nome do usuário que está logado (que foi digitado) # %M número máximo de usuários permitidos nesta classe # %N número de usuários correntes desta classe ...... Daqui prá baixo complicou a tradução ........ # %B absolute limit on disk blocks allocated # # %b preferred limit on disk blocks # # %Q current block count # # %I maximum number of allocated inodes (+1) # # %i preferred inode limit # # %q current number of allocated inodes # # %H time limit for excessive disk use # # %h time limit for excessive files # .................................................... # readme <path> {<when> {<class>}} # Exibe uma indicação de que o usuário deve verificar um certo arquivo # <path> readme /home/ftp/README LOGIN all # Guarda o log dos comandos dos usuários, dividido por tipos, real, guest, # anonymous e separados por vírgulas log commands guest,anonymous # Guarda o log das transferências de arquivos de usuários anônimos, # convidados e/ou reais. # inbound = arquivos enviados ao servidor # oubound = arquivos baixados do servidor log transfers real,anonymous,guest inbound # Guarda o log das violações das regras de segurança para usuários reais, # anônimos ou convidados. log security anonymous,guest # Redireciona os avisos de transferências de arquivos para o syslog, sem isso, # irá para xferlog log syslog # Redireciona os avisos de transferências de arquivos para o syslog e # xferlog log syslog+xferlog # Permite utilizar-se de apelidos para diretórios alias atualizacoes /pub/conectiva/atualizacoes # Isto define um diretório de busca que seja usado ao mudar diretórios. cdpath /pub/conectiva/atualizacoes cdpath /pub/conectiva/beta # O sistema irá verificar todo o tempo se o servidor será desligado, caso # sim, o usuário que estiver acessando o servidor será avisado, novos # acessos não serão permitidos antes de certo tempo (definido no arquivo de # configuração) de o servidor ser desligado. shutdown /etc/ftp_shutdown # Parâmetros para o arquivo: # <ano> <mês> <dia> <hora> <minuto> <hora1> <hora2> # <texto> # onde # <ano> qualquer ano > 1970 # <mês> 0-11 # <hora> 0-23 # <minuto> 0-59 # <hora1> e <hora2> no formato HHMM, definem a hora em que os usuários serão # avisados do desligamento do servidor e quando será realizado o # desligamento automático de usuários. # <texto> Segue o mesmo padrão da tag "message" com as opções : # %s hora em que o servidor será desligado # %r hora em que conexões não serão mais permitidas # %d hora em que as conexões serão desligadas # Para a criação de domínios virtuais (Virtual hosts) é necessário que o seu # servidor deve estar com seu nome cadastrado como válido no servidor de # nomes : # virtual <address> <root|banner|logfile> <path> virtual<htmlurl url=" ftp.suporte" name=" ftp.suporte"> root /home/ftp/suporte banner /etc/ftp/sup_banner logfile xferlog_suporte # Define os usuários que podem ou não ter acesso ao servidor virtual de<htmlurl url=" ftp." name=" ftp."> # virtual <address> allow <username> [<username> ...] # virtual <address> deny <username> [<username> ...] virtual<htmlurl url=" ftp.suporte" name=" ftp.suporte"> allow * virtual<htmlurl url=" ftp.suporte" name=" ftp.suporte"> deny usuario # Geralmente, é permitido o acesso de usuários anônimos em domínios # virtuais, com a opção a seguir, é retirada esta permissão. virtual<htmlurl url=" ftp.suporte" name=" ftp.suporte"> private # Define os usuários que podem ou não ter acesso ao servidor de<htmlurl url=" ftp." name=" ftp."> defaultserver allow usuario defaultserver deny * # Geralmente, é permitido o acesso de usuários anônimos em servidores ftp, # com a opção a seguir, é retirada esta permissão. defaultserver private # passive address <externalip> <cidr> # Permite que certos intervalos de ip's acessem um certo servidor ao invés # do padrão. passive address 10.0.1.15 10.0.0.0/8 passive address 192.168.1.5 0.0.0.0/0 # Especifica o nome de um servidor de email, para onde será enviada as # mensagens de notificação de "uploads". São aceitos vários servidores, onde # o serviço de ftp irá mandar mensagens até que um dos servidores definidos # aceite a mensagem. mailserver mail.conectiva.com.br mailserver mail.domínio.com.br mailserver<htmlurl url=" www.emails.com" name=" www.emails.com"> # Define o email de quem irá receber informações sobre os "uploads" # anônimos. Pode-se definir mais de um email, todos serão notificados. Caso # não seja definido nenhum email, não haverá avisos. incmail usuario@conectiva.com.br incmail usuario@hotmail.com # Define o email de quem irá receber informações sobre os "uploads" anônimos # do domínio virtual. Caso não seja definido, serão enviadas notificações # para o email geral. virtual<htmlurl url=" ftp.suporte" name=" ftp.suporte"> incmail usuario@ftp.suporte # Define o email de quem irá receber informações sobre os "uploads" # anônimos no servidor padrão (excluindo os virtuais). defaultserver incmail usuario@conectiva.com.br # Define o email do usuário que enviará a mensagem mailfrom anonftp@conectiva.com.br # Define o email do usuário que enviará a mensagem para o servidor virtual virtual<htmlurl url=" ftp.suporte" name=" ftp.suporte"> mailfrom anonftp@ftp.suporte # Define o email geral do usuário que enviará a mensagem (apenas do servidor # padrão) defaultserver mailfrom anonftp@conectiva.com.br # Permite ou não executar a especificada função. Por padrão, todas são # permitidas. Pode-se utilizar classes de usuários, bastando seguir a # sintaxe class=nome_da_classe # chmod <yes|no> <typelist> chmod no anonymous # delete <yes|no> <typelist> delete yes real,guest,anonymous # overwrite <yes|no> <typelist> overwrite yes real,guest,anonymous # rename <yes|no> <typelist> rename no guest # umask <yes|no> <typelist> umask no real # Define o nível de checagem das senhas do usuário anônimo. # passwd-check <none|trivial|rfc822> (<enforce|warn>) # none, não realiza checagem alguma # trivial, deve haver "@" # rfc822, a senha deve ser compatível com a regra rfc822: # <htmlurl url="http://www.faqs.org/rfcs/rfc822.html" name="http://www.faqs.org/rfcs/rfc822.html"> # enforce, caso a senha não seja aceita, não realiza o acesso # warn, caso a senha não seja aceita, apenas avisa o usuário e então acessa passwd-check rfc822 enforce # Define as senhas que não serão aceitas (dependerá da configuração acima se # o usuário poderá ou não acessar o servidor) deny-email usuario@conectiva.com.br deny-email info@conectiva.com.br deny-email suporte@conectiva.com.br # Define se um diretório tem ou não permissão para realizar "uploads" # upload [absolute|relative] [class=<classname>]... [-] <root-dir> <dirglob> # <yes|no> <owner> <group> <mode> ["dirs"|"nodirs"] [<d_mode>] # Não permitir upload upload /var/ftp * no # Permitir upload no diretório incoming upload /var/ftp /incoming yes ftp daemon 0666 # Permitir upload e criação de subdiretórios no diretório incoming/gifs upload /var/ftp /incoming/gifs yes jlc guest 0600 nodirs # Define a taxa máxima de transferência para determinados arquivos, caso # utilize-se "*" é válido como todos os arquivos do diretório definido throughput /e/ftp * * oo - * # Taxa de transferência máxima para todos os arquivos localizados no # diretório /e/ftp throughput /e/ftp /sw* * 1024 0.5 * # Taxa de transferência máxima = 1024 bps para todos os arquivos localizados # em /e/ftp/sw throughput /e/ftp /sw* README oo - * # Taxa de transferência máxima para arquivos chamados README throughput /e/ftp /sw* * oo - *.foo.com # Taxa de transferência máxima para usuários do domínio foo.com # Os caraceteres "oo" significam que não há restrição e "-","0.5" são os # fatores por qual será multiplicado o valor de bps definido para cada nova # transferência realizada no diretório indicado # Define o diretório raiz (/) de usuários anônimos, onde real e rmtusers são # classes de usuários anonymous-root /home/ftp/uploads real anonymous-root /home/ftp/pub rmtusers # Define o diretório raiz de usuários convidados, pode ser passado o # parâmetro de um intervalo de id's dos usuários guest-root /home/users # Define para todos os usuários o diretório raiz = /home/users guest-root /home/staff %100-999 usuario # Define para os usuários com id >= 100 e <= 900 e o usuário usuario a raiz # = /home/staff guest-root /home/users/barea/ftp barea # Define para o usuário barea o diretório raiz = /home/users/barea # Permite ou não o acesso de usuários através de seus id's, gid's ou nome # (usuário e grupo) deny-gid %-99 %65535 deny-uid %-99 %65535 allow-gid ftp allow-uid ftp # Permite ou não o acesso de usuários além de seu home restricted-uid usuario unrestricted-gid root------------------------------------------------------------------------------------------
/etc/ftpconversions < -------- É a "base de dados" do serviço ftpd :.Z: : :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS : : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS :.gz: : :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP : : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP : : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR : : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS : : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP Sintaxe do arquivo: Campo Descrição 1 strip prefix 2 strip postfix 3 addon prefix 4 addon postfix 5 external command 6 types 7 options 8 description ------------------------------------------------------------------------------------------ /etc/ftpgroups # test:ENCRYPTED PASSWORD HERE:archive ------------------------------------------------------------------------------------------ /etc/ftphosts < ----- Arquivo que contém regras para o login de usuários/máquinas # Example host access file # Everything after a '#' is treated as comment, # empty lines are ignored # Habilita o login das máquinas addrglob com apenas o usuário X # allow <username> <addrglob> [<addrglob> ...] allow gonzalez 192.168.255.0:255.255.255.0 # Desabilita o login de qualquer máquina que utilize-se do usuário X # deny <username> <addrglob> [<addrglob> ...] deny luciano 192.168.255.0:255.255.255.0 ------------------------------------------------------------------------------------------ /etc/ftpusers < -------- Arquivo que contém o nome dos usuários que não podem realizar ftp root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody ------------------------------------------------------------------------------------------ /etc/logrotate.d/ftpd /var/log/xferlog { # ftpd doesn't handle SIGHUP properly nocompress } ------------------------------------------------------------------------------------------ /etc/pam.d/ftp < ------- Arquivo utilizado para a autenticação dos usuários via ftp ? #%PAM-1.0 auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib/security/pam_pwdb.so shadow nullok auth required /lib/security/pam_shells.so account required /lib/security/pam_pwdb.so session required /lib/security/pam_pwdb.so