Este capítulo trata o protocolo FTP, o protocolo de transferência de arquivos, um dos protocolos mais antigos do UNIX e ainda largamente utilizado na Internet.
O FTP é acrônimo de File Transfer Protocol [Protocolo de Transferência de Arquivos ] e está entre os mais antigos serviços do UNIX , sendo até hoje um dos protocolos de maior utilização na Internet. Sua principal finalidade é transferir arquivos entre estações, tanto enviando quanto recebendo arquivos.
De certa forma, o FTP compete com o serviço HTTP (Web) em disponibilizar arquivos de acesso público na Internet, porém possui funcionalidades mais peculiares que um servidor HTTP não possui, dentre as principais:
O protocolo FTP é definido por várias RFCs, mas a principal e mais atual é a RFC959 (veja a seção de links indicados, onde acessar esta RFC). O protocolo ftp caracteriza-se por utilizar duas portas para conexão, uma porta é utilizada para autenticação do cliente e a outra é utilizada para transferência de dados, ou seja, ao cliente solicitar uma conexão a um servidor de ftp, primeiramente ele utilizará a porta de autenticação do cliente, somente depois da autenticação o cliente passará a utilizar a porta de transferência de dados e então poderá enviar e receber arquivos.
na verdade a porta de autenticação do cliente é uma porta para controle, nesta porta você pode enviar comandos e receber os resultados dos comandos, em que um dos principais controles é a autenticação do cliente. Existem dois canais distintos de comunicação para proporcionar um melhor controle. Por exemplo, se no canal de dados estiver baixando um arquivo, sem nenhuma interferência é possível cancelar esta operação de download, através do canal de controle.
Através do arquivo /etc/services podemos verificar as portas do serviço ftp, veja o exemplo relativo ao ftp neste arquivo:
ftp-data 20/tcp ftp 21/tcp
A primeira entrada é a porta ftp-data responsável pela transferência de dados. A segunda é a porta de autenticação de usuários. Os números das portas são 20 e 21 respectivamente.
O serviço ftp é geralmente controlado pelo super-daemon inetd. Ou seja, o inetd é um serviço que controla a execução de outros serviços, de forma que quando um cliente solicita uma conexão com a porta 21, o inetd automaticamente cria uma nova instância do daemon ftp para atender a solicitação do cliente.
Os principais servidores FTP disponíveis para o Linux são: wu-ftp e proftp. O wu-ftp é o servidor desenvolvido inicialmente pela Universidade de Washington e que a partir da versão 2.6.0 (abril de 1999) é mantida por um grupo de desenvolvedores independentes (WU-ftpd development group) e é utilizado por padrão em um bom número das distribuições do Linux e pode ser encontrado no endereço http://www.wu-ftpd.org/.
Alternativamente, o proftpd é um servidor ftp com configuração bem mais flexível que o wu-ftpd e que, apesar de não ser o mais popular, tem ganhado terreno na disputa de servidor padrão nas distribuições linux. O proftpd pode ser encontrado em seu site oficial http://www.proftpd.org/.
Para nosso estudo estaremos utilizando o servidor wu-ftpd.
O FTP trabalha com 3 tipos de usuários: anonymous [anônimo], real e guest [convidado]. A diferença entre estes três usuários está relacionado aos seus privilégios. Abaixo estaremos apresentando as características de cada usuário.
Este é um caso especial de abertura de sessão ftp, pois não requer senha. Para se habilitar usuários anônimos no seu servidor FTP, você deve instalar o pacote anonftp, disponível no cd1 da distribuição Conectiva.
No entanto, se você desejar configurar o FTP anônimo manualmente, verifique se existe a seguinte entrada no arquivo /etc/passwd:
ftp:x:14:50:FTP User:/home/ftp:
Note no sexto campo desta linha que o usuário ftp por padrão terá como diretório home o diretório /home/ftp. O usuário anônimo tem uma característica de não poder acessar um diretório que esteja acima deste, ou seja, o usuário anonymous fica confinado ao diretório /home/ftp. Esta característica é muito importante, pois não seria seguro deixar que um usuário qualquer (anônimo) pudesse efetuar logon em seu servidor e que tivesse permissão de acesso para vasculhar todo o seu sistema de arquivo.
Diz-se que esta propriedade de confinamento que o usuário anônimo possui um ambiente chrooted, referente ao comando chroot (veja as páginas de manual do comando chroot, que altera o diretório raiz do usuário atual por um outro).
Veja também se existe também uma entrada no arquivo /etc/shadow similar à apresentada abaixo:
ftp:*:11779:0:99999:7:::
Caso não exista estas entradas, o primeiro passo para configurar o ftp anonymous é adicionar estas linhas nos seus devidos arquivos. O segundo é criar o diretório /home/ftp,e seguir os mesmos procedimentos de forma análoga aos utilizados para configurar o usuário do tipo convidado que será visto adiante.
Para servir arquivos de acesso público, basta colocar arquivos no diretório anonymous, geralmente no diretório pub, onde por padrão se colocam arquivos com acesso público. Para solicitar uma sessão ftp anônima você deve digitar ftp ou anonymous no campo de requerimento do login, no campo de senha você deve digitar o seu endereço de email.
Em certas situações, onde não há necessidade de servir nenhum arquivo para público, é necessário não liberar o ftp para usuário anônimo. Para fazer isto, basta retirar ou comentar a linha do arquivo /etc/passwd referente ao usuário ftp.
Este usuário é caracterizado por ter uma conta normal no sistema Linux, ou seja, possui um login e uma senha para acessar o sistema. Este usuário, quando efetua logon no serviço ftp, não fica confinado a nenhum diretório e portanto pode navegar por toda a árvore de diretório do Linux desde que tenha permissão para isto. Por padrão, quando o usuário é criado no sistema ele terá imediatamente acesso ao servidor FTP.
Tome um cuidado especial com os usuários reais que acessam o seu servidor, pois por padrão o ftp não utiliza criptografia para proteger as senhas que trafegam pela rede. Portanto, é recomendável que usuários como o super-usuário nunca possam acessar o serviço FTP como cliente (veja o arquivo /etc/ftpusers como fazer isto). Em alguns casos, é necessário até desabilitar o acesso à usuários reais por padrão, para não correr este risco; para isto, utilize o arquivo /etc/ftphosts, que será visto mais adiante.
O usuário guest [convidado] tem uma característica similar a do usuário anonymous [anônimo], pois ambos ficam confinados em seu diretório home [casa]. Ou seja, ambos caem em um ambiente chrooted. Este usuário também é exemplo de uma conta normal de usuário do Linux.
Este tipo de usuário garante maior segurança no servidor FTP, pois não permite ao usuário um acesso a toda árvore de diretórios do Linux. Este tipo de usuário é muito utilizado em provedores que hospedam páginas de clientes, permitindo que administrem seus próprios arquivos de seus sites, de forma que você garante que a conta será utilizada somente para atualizar suas páginas web.
Segue as instruções para configurar um login de convidado [guest]:
Defina um grupo de usuários convidados ftp_conv.
groupadd ftp_conv
Crie um usuário para ser convidado ftp, incluindo-o no grupo de convidados de ftp e também definindo o seu diretório pessoal.
adduser -g ftp_conv -d /home/httpd/html/ftp1 ftp1 passwd ftp1
O usuário ftp1 criado acima terá como diretório home [pessoal] o diretório /home/httpd/html/ftp1. Utilizamos este diretório para enfatizar o uso deste tipo de usuário em provedores que hospedam páginas web. Pois na configuração padrão do servidor web Apache, o diretório raiz do Apache é o /home/httpd/html. Para melhor compreensão disto, veja o capítulo sobre o serviço web.
Edite /etc/passwd, incluindo '/./' no final do diretório pessoal. O sinal de ponto tem uma função especial aqui: ele indica qual diretório o usuário convidado irá cair logo depois de efetuar logon. É óbvio que o diretório indicado depois do sinal '.' será relativo ao novo diretório raiz, que será para este usuário /home/httpd/html/ftp1.
# vi /etc/passwd ... ftp2:x:505:506::/home/httpd/html/ftp2/./:/bin/bash ...
Edite /etc/ftpacess(Este arquivo será estudado mais adiante) e defina o grupo ftp_conv como grupo convidado (guestgroup).
# vi /etc/ftpaccess ... compress yes all tar yes all chmod no anonymous delete no anonymous overwrite no anonymous rename no anonymous ... guestgroup ftp_conv
Crie os diretórios bin, etc e lib no diretório pessoal do ftp convidado. O diretório bin é necessário pois é a partir dele que os comandos ls, gzip e tar podem ser executados remotamente. No diretório lib são armazenados bibliotecas compartilhadas utilizadas pelos executáveis armazenados em bin. No diretório etc é criado os arquivos passwd e group necessários para mapear os UIDs - Números de Identificação de Usuário - e GIDs - Números de Identificação de Grupo - aos respectivos nomes dos usuários e grupos associados aos arquivos.
Criando o diretório bin: Os diretórios e arquivos deverão ter as permissões corretas e os utilitários tar e gzip poderão ser utilizados para compressão instantânea.
# cd /home/httpd/html/ftp1 # mkdir bin # chown root.daemon bin # chmod 111 bin # cd bin # cp /bin/ls . # cp /bin/gzip . # cp /bin/tar . # chown root.bin * # chmod 111 *
Criando o diretório lib: para criar o diretório lib, é necessário saber quais bibliotecas os executáveis de bin depende. Para fazer isto é necessário utilizar o comando ldd.
# cd /home/httpd/html/ftp1 # mkdir lib # chmod 111 lib # cd lib # ldd ../bin/* ... ../bin/gzip: libc.so.6 => /lib/libc.so.6 (0x40021000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) ../bin/ls: libc.so.6 => /lib/libc.so.6 (0x40021000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) ../bin/tar: libc.so.6 => /lib/libc.so.6 (0x40021000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) ... # cp /lib/libc.so.6 . # cp /lib/ld-linux.so.2 . # chmod 555 *
as bibliotecas compartilhadas do Linux, geralmente de extensão .so (referente à shared object - código-objeto compartilhável), são análogas às bibliotecas “dll” do Windows (extensão .dll, de dinamic linked library, ou seja, biblioteca dinamicamente ligada) .
Criando o diretório etc: O arquivo passwd pode ser copiado de /etc/passwd, e em seguida, retira-se todos os usuários, exceto root e ftp1 O arquivo group também é semelhante, porém retira-se todos os grupos, exceto ftp_conv, root, bin e daemon.
# cd /home/httpd/html/ftp1 # mkdir etc # chmod 111 etc # cd etc # cp /etc/passwd . # vi passwd ... root:x:0:0:root:/root:/bin/bash ftp1:x:505:506::/home/httpd/html/ftp1:/bin/bash ... # cp /etc/group . # vi group ... root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon ftp_conv:x:506: ...
Para testar, execute:
# ftp localhost usuário: ftp1 senha: xxx ftp>ls ftp>pwd
Você deve notar neste teste, que no comando pwd, que o usuário ftp1 deverá estar confinado em seu diretório pessoal, listando o caminho do diretório atual como sendo '/', uma vez que o usuário caiu em um ambiente chrooted.
O serviço ftp contém principalmente dois arquivos de configurações que permitem fazer restrições de segurança. Estes dois arquivos estão apresentados a seguir:
Este arquivo permite você impedir o acesso do serviço ftp a determinados usuários. Mesmo que um usuário tenha uma entrada no arquivo /etc/passwd, se seu nome estiver neste arquivo o seu acesso será negado. Em uma instalação via código-fonte, este arquivo nem é criado, sendo necessário você criá-lo e editá-lo manualmente. No entanto, ao instalar o pacote wu-ftpd, este arquivo é criado e tem a configuração apresentada:
root bin daemon adm lp sync shutdown halt mail news uucp operator games nobody
O serviço ftpd ao ser inicializado lê este arquivo. Para restringir um usuário ao serviço ftp, basta acrescentar seu nome neste arquivo.
o nome deste arquivo é de certa forma inapropriado, uma vez que engloba os usuários não permitidos, portanto, um nome mais apropriado seria algo como /etc/ftpusersdeny.
Segue abaixo um exemplo deste arquivo:
class all real,guest,anonymous * email root@localhost loginfails 5 readme README* login readme README* cwd=* message /welcome.msg login message .message cwd=* compress yes all tar yes all chmod no guest,anonymous delete no guest,anonymous overwrite no guest,anonymous rename no guest,anonymous log transfers anonymous,real inbound,outbound shutdown /etc/shutmsg passwd-check rfc822 warn
Este arquivo permite ao ftp fazer vários tipos de configurações, de forma bem flexível e possui uma sintaxe como segue:
<opcao> <parâmetros>
A seguir estaremos analisando as entradas do exemplo anterior:
class classes tipos aglob [aglob....]
email endereço
loginfails número
readme nomearquivo quando [classe...]
230-Please read the file LEIAME.TXT....230- it was last modified on Thu Apr 18 03:24:47 2002 - 0 days ago
message nomearquivo quando [classe....]
message .mensagem cwd=*
Se criarmos um arquivo em um diretório, de nome .mensagem, este arquivo será listado toda vez que entrar neste diretório.
compress yes|no classe [classe...]
tar yes|no classe [classe...]
delete yes|no tipos
overwrite yes|no tipos
rename yes|no tipos
log transfers tipos sentido
shutdown nomearquivo
passwd-check nível ação
Vejamos um novo exemplo do arquivo /etc/ftpaccess:
#-----------------inicio classe usuarioanonimo------------ class usuarioanonimo anonymous * emails root@localhost loginfails 5 readme README* login readme README* cwd=* message /welcome.msg login message .message cwd=* compress yes usuarioanonimo tar yes usuarioanonimo chmod no usuarioanonimo delete no usuarioanonimo overwrite no usuarioanonimo rename no usuarioanonimo log transfers anonymous inbound,outbound shutdown /etc/shutmsg passwd-check rfc822 warn #-------------------inicio segunda classe----------------- class usuarioreal real *.sistemasabertos.com.br emails root@localhost loginfails 5 readme README* login readme README* cwd=* message /welcome.msg login message .message cwd=* compress yes usuarioreal tar yes usuarioreal chmod yes usuarioreal delete yes usuarioreal overwrite yes usuarioreal rename yes usuarioreal log transfers real inbound,outbound shutdown /etc/shutmsg passwd-check rfc822 warn
Neste exemplo a primeira classe definida é a classe usuarioanonimo. Observe que existe apenas um tipo de usuário pertinente a esta classe, o usuário anônimo. Portanto todos parâmetro relacionados a esta classe é atribuído diretamente a este usuário. Observe que o campo aglob está configurado com o caractere curinga "*", logo o usuário anônimo poderá acessar o servidor ftp a partir de qualquer hospedeiro.
A segunda classe definida é a classe usuarioreal. O tipo de usuário pertinente a esta classe são os usuário reais - os usuário que possuem conta no servidor ftp. Observe que estes usuários só poderão acessar o servidor a partir do domínio sistemasabertos.com.br.
O tipo de usuário guest não poderá acessar o servidor, pois ele não esta definido em nenhuma classe.
Concluindo, a partir da instrução class é possível dividir as configuração entre usuários reais, anônimo e convidado de forma totalmente independente.
Este arquivo é usado para limitar o acesso ao Serviço FTP. Estas limitações são atribuídas através das entradas allow e deny. Veja um exemplo do uso do allow
allow jpaulo lab1
Esta entrada permite que o usuário jpaulo abra uma sessão a partir do hospedeiro lab1 e de nenhum outro equipamento. Pode haver mais de um hospedeiro, assim como o uso de curingas. O exemplo abaixo mostra o uso da instrução deny junto com curingas.
deny carta *.sistemasabertos.com.br *dominio.org
Esta entrada não permitirá o acesso do usuário carta a partir dos domínios sistemasabertos.com.br e dominio.org. Você pode limitar também os acessos através de números IP ao invés de domínios.
Estes são os principais arquivos de configuração do serviço ftp.
Existem vários programas para controle das conexões FTP. Os principais estão apresentados abaixo:
ftpcount
Mostra a quantidade de usuários com sessão aberta. Esta quantidade é informada através da relação usuários por classe.
ftpwho
Mostra uma lista de usuários atualmente com sessão aberta. A saída deste comando é a mesma do comando
ps aux |grep ftpd
ftpshut
Permite desativar o ftpd. Você pode programar este desligamento. Veja man ftpshut para maiores informações.
O Principal arquivo de log do FTP é o /var/log/xferlog. Vejamos um exemplo deste arquivo:
#cat /var/log/xferlog Thu Mar 28 00:32:11 2002 1 10.1.0.118 79 /home/ftp/etc/passwd b _ o a [none_given] ftp 0 * c Thu Apr 11 01:00:16 2002 1 10.1.0.110 15 /home/main/doc.txt b _ o r main ftp 0 * c
Neste arquivo você obtêm informações como: usuário que acessou o servidor, data e hora de acesso, arquivo que este enviou ou pegou. Observe que a primeira linha desta saída é referente ao usuário anonymous. A segunda linha é referente ao usuário main.
Os logs do FTP também são observados no arquivo /var/log/messages que é utilizado pelo syslogd. Vejamos um exemplo:
#tail -n6 /var/log/messages Apr 11 00:34:18 lab19 ftpd[1511]: FTP LOGIN FROM lab10.sistemasabertos.com.br [10.1.0.110], main Apr 11 00:37:28 lab19 ftpd[1511]: FTP session closed Apr 11 00:53:35 lab19 ftpd[1567]: FTP LOGIN FROM lab13.sistemasabertos.com.br [10.1.0.113], jeca Apr 11 00:59:52 lab19 ftpd[1575]: FTP LOGIN FROM lab10.sistemasabertos.com.br[10.1.0.110], joana Apr 11 01:00:19 lab19 ftpd[1575]: FTP session closed Apr 11 01:07:15 lab19 ftpd[1567]: FTP session closed
A ferramenta last também guarda logs do FTP. Vejamos uma possível saída deste comando:
#last | grep main main ftpd1575 lab10.sistemasabertos.com.br Thu Apr 11 00:59 - 01:00 (00:00) main ftpd1567 lab13.sistemasabertos.com.br Thu Apr 11 00:53 - 01:07 (00:13) main ftpd1511 lab10.sistemasabertos.com.br Thu Apr 11 00:34 - 00:37 (00:03)
Observe que este comando também fornece a data e a hora de acesso ao servidor FTP.
Os comando disponíveis para o cliente pode ser obtido digitando help no prompt do ftp. Abaixo se encontram os principais comandos:
cd diretório-remoto
chmod modo nome-do-arquivo
close
delete arquivo-remoto
hash
mget nomearquivo
mput
size nome-do-arquivo
system
Como foi dito anteriormente, alguns servidores FTP suportam compressão sob demanda [on-the-fly], de forma que os clientes podem solicitar que arquivos no servidor remoto sejam compactados antes de serem enviados para o cliente, evitando que arquivos ou diretórios muito grandes sejam transportados pela rede. Vejamos este exemplo:
... ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 492 -rw-r--r-- 1 root ftp 495977 Apr 25 02:34 CIFS_Explained.pdf 226 Transfer complete. ftp> get CIFS_Explained.pdf.gz local: CIFS_Explained.pdf.gz remoto: CIFS_Explained.pdf.gz 200 PORT command successful. 150 Opening BINARY mode data connection for /bin/gzip. 226 Transfer complete. 261487 bytes received em 2.97 segundos (86 Kbytes/segundo) ftp> ! ls -l CIFS_Explained.pdf.gz -rw-r--r-- 1 root root 261487 Apr 24 23:47 CIFS_Explained.pdf.gz ...
Neste exemplo, ao listar um diretório, percebemos que estava disponível um arquivo de 495Kb, de nome CIFS_Explained.pdf. Na sequência, executamos o comando get CIFS_Explained.pdf.gz e como resposta, obtivemos o arquivo CIFS_Explained.pdf.gz, de tamanho 261Kb, como mostrado no comando ! ls -l CIFS_Explained.pdf.gz (o comando exclamação '!' significa executar localmente, ou seja, executar localmente: ls -l CIFS_Explained.pdf.gz) .
Note neste exemplo: *1) O arquivo CIFS_Explained.pdf.gz não existia remotamente: quando foi executado o comando get CIFS_Explained.pdf.gz, o servidor FTP interpretou o comando e também percebeu isto, então executou o utilitário gzip no arquivo CIFS_Explained.pdf, antes de enviar o arquivo para o cliente. *2) Como o servidor sabia que era para executar o comando gzip para este arquivo? A resposta está contida no arquivo /etc/ftpconversions, o qual será explicado mais adiante.
O arquivo /etc/ftpconversions é o arquivo de configuração utilizado pelo servidor para determinar qual programa deve ser executado para executar uma conversão (geralmente compressão) antes de ser enviado para o cliente, quando encontra uma solicitação de download de um arquivo com conversão. O nome do arquivo solicitado deve ter um nome formado assim: .<extensão a ser convertida>, ou seja, caso o arquivo tenha o nome CIFS_Explained.pdf, para que o arquivo venha compactado com a extensão .gz, tipicamente extensão de arquivos compactados pelo utilitário gzip, então solicitamos o arquivo da seguinte forma: get CIFS_Explained.pdf.gz.
Vejamos o /etc/ftpconversions fornecido como padrão:
:.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
Segundo a documentação das páginas de manual (comando: man ftpconversions), o arquivo /etc/ftpconversions tem a seguinte sintaxe:
%s:%s:%s:%s:%s:%s:%s:%s 1 2 3 4 5 6 7 8
Note que o campo 1 e 3 ainda não são suportados, portanto eles deverão estar preenchidos em branco. Veja a quarta linha da listagem do /etc/ftpconversions padrão - veja a linha:
: : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP
Note nesta linha de exemplo:
ambiente chrooted: ambiente onde um usuário é confinado em seu diretório pessoal, não podendo acessar os diretórios superiores. O termo chrooted tem origem no comando chroot, somente executado pelo super-usuário e que quando executado, faz com que o diretório raiz seja modificado. Classes de usuários: Define o tipo de usuários com determinados privilégios. No wu-ftp existem os usuários real, convidado e anônimo. compactação sob demanda [on-the-fly]: vários servidores ftp suportam a compactação de arquivos sob demanda, permitindo que clientes possam solicitar a compactação de arquivos no servidor antes de serem enviados para o cliente. Isto é muito útil para baixar arquivos ou diretórios muito grandes.
curinga
um caractere geralmente utilizado em uma opção de comando, com valor sintático significando “qualquer caractere” ou “qualquer valor”.
daemon
Definido como serviço. Exemplo: quando se fala em daemon ftpd é o mesmo que serviço ftpd. ftp real: Usuário que possui conta no servidor ftp e uma vez com logon efetuado no servidor ftp, tem acesso à toda árvore de diretórios. ftp anônimo: Usuário que não precisa de senha para acessar o Servidor FTP. ftp convidado: Similar a um usuário real, porém quando acessa o servidor FTP fica limitado a seu diretório home (pessoal).
Inet
É o super-serviço, que gerencia vários outros serviços, entre eles o ftp.
1. Qual é a diferença entre os usuários real, convidado e anônimo?
2. Quais são as portas que um servidor FTP utiliza e qual a função delas?
3. Quais seriam os passos necessários para se habilitar o acesso anônimo ao servidor FTP? Qual seria o(s) possível(is) procedimento(s) para desabilitar ftp anônimo?
4. Descreva resumidamente quais seriam os passos necessários para se configurar um usuário convidado em um servidor wu-ftpd.
5. Como eu poderia impedir que determinados usuários pudessem efetuar logon no servidor ftp? Qual seria um possível motivo para impedir algum usuário de efetuar logon no servidor ftp?
6. Suponha que você deseje que todos usuários reais tenham acesso negado, mas liberando somente usuários anônimos. Mostre pelo menos duas formas de implementar esta opção. Qual seria a forma mais simples? Cite uma situação onde este tipo de configuração seria conveniente.
7. Como eu habilitaria que um usuário anônimo pudesse fazer envio [upload] de arquivos em um diretório específico? Quais riscos de segurança poderia ter esta permissão e o quais medidas de segurança poderiam ser feitas tornar essa permissão mais segura?
8. Qual é a utilidade dos executáveis geralmente disponíveis no diretório bin, dentro do diretório pessoal do usuário anônimo ou de usuários convidados?
9. Suponha que eu tenha um diretório chamado html em um servidor remoto, contendo internamente vários arquivos e subdiretórios, totalizando um tamanho considerável. Como eu poderia baixar este diretório, de forma que fosse compactado no servidor, antes de ser enviado pelo servidor? O que deveria estar habilitado e configurado no servidor FTP para que isto fosse realizado?