Como um cliente FTP define permissões de arquivo no servidor?

6

Atualmente estou tendo que usar um cliente / adaptador de FTP muito limitado para carregar alguns arquivos em um servidor remoto. Eu digo limitado, porque os arquivos resultantes acabam no servidor remoto com permissões 000 e parece não haver nenhuma maneira de configurar o que as permissões devem ser, ao contrário de alguns outros clientes. (Eu sei WinSCP pode fazer isso.)

Foi-me dito por um colega que o FTP era completamente agnóstico no que diz respeito às permissões de arquivo e simplesmente transfere os dados do arquivo. Supondo que isso esteja correto, como um cliente como o WinSCP define as permissões do arquivo no servidor remoto? Foi sugerido para mim que o cliente provavelmente está executando um chmod via SSH, ou seja, definindo as permissões após o fato.

    
por Scott Oliver 31.01.2017 / 13:36

1 resposta

8

Seu colega está certo, no sentido de que a RFC 959 de outubro de 1985 não parece fornecer um comando especificamente projetado para alterações de permissão. O RFC 959 fornece especificações de comandos para carregar arquivos ( RFC 959 página 30 tem o comando “STOR” para armazenar arquivos), baixar arquivos (página 30 tem o comando “RETR” para recuperar arquivos) e extensões opcionais como MKD (criar diretório) e RMD (remover diretório). O RFC observa: "É uma prerrogativa de um processo de servidor FTP invocar controles de acesso" ". (No entanto, a partir da minha leitura do RFC, acredito que os "controles de acesso" referidos são mais sobre o suporte à capacidade de efetuar login com um nome de usuário e não pretendem se referir à idéia de usar o FTP para alterar as permissões de arquivos.)

RFC 959 página 47 contém uma lista dos comandos que são construídos na especificação FTP do RFC 959. Por um tempo, eu estava pensando em criar um servidor FTP para uma plataforma específica, e eu li cada um desses comandos. Também dei uma olhada no registro de "Comandos e extensões de FTP" da IANA , que é referido pelo RFC 5797 de março de 2010. Não me lembro de nenhum desses comandos fornecendo uma maneira de alterar as permissões, exceto uma:

RFC 959 página 33 tem o comando “SITE”. (Alguns clientes FTP possuem um comando local chamado “QUOT” ou “quote”, que acaba enviando um comando SITE para o servidor FTP.) Basicamente, o padrão do comando SITE é que o texto é enviado para o servidor FTP, e o Servidor FTP decide o que fazer com isso. O uso desse comando pode fazer coisas como alterar permissões de arquivo, pesquisar um site por arquivos ou reinicializar o servidor FTP. Em teoria, o envio do comando “HELP SITE” mostrará detalhes de algumas funcionalidades fornecidas pelo comando do site. RFC 959 página 33 ainda especifica isso:

“The nature of these services and the
specification of their syntax can be stated in a reply to
the HELP SITE command.”

O desafio para essa teoria é que o comando “HELP SITE” realmente resulta em mostrar texto do servidor FTP, e documentação incompleta pode não documentar todas as possibilidades disponíveis.

Com base na resposta de Jonathan Leffler à pergunta de knoti99 sobre a “sintaxe chmod no FTP” , podemos ver que o clássico “ncftp O programa utilizou o comando “SITE CHMOD” para implementar o comando “chmod” do ncftp e que esta funcionalidade não era suportada por todos os servidores FTP.

Mais uma observação enquanto concluo a parte FTP desta resposta: o FTP é muito sniffable. Basicamente, o que quero dizer com isso é que o FTP executa ações usando "texto não criptografado". Se você usar o software "sniffing de pacotes" ("captura de pacotes") como o tcpdump ou o Wireshark, você poderá ver o que acontece com o FTP. Se você tentar transferir um arquivo que é um pequeno arquivo de texto e ver qual tráfego de rede acontece, os resultados provavelmente serão bem fáceis de compreender. Usando essa abordagem, você pode alterar as permissões e ver quais comandos o software está realmente usando. Eu sei que isso pode ser um pouco mais demorado para configurar, e é por isso que essa resposta forneceu muitos detalhes mais fáceis de obter, mas saber sobre esse processo pode ser útil se você começar a pensar em outros detalhes sobre o que acontece durante o FTP. comunicações.

(Eu editei esta resposta para adicionar uma resposta a outra parte da pergunta.)

It was suggested to me that the client is likely executing a chmod via SSH i.e. setting the permissions after the fact.

Eu acho que é um bom palpite, embora eu não ache isso exato quando se trata de FTP. Na verdade, esse palpite provavelmente descreve com precisão o processo exato que é usado sempre que os protocolos SFTP e SCP são usados. Como esses dois protocolos são baseados em SSH, o comando "chmod" pode ser enviado usando a mesma conexão SSH que é usada como o restante da conexão criptografada. A partir da minha leitura desses protocolos, acredito que, na verdade, é exatamente como as permissões de arquivo normalmente são definidas ao usar o SFTP (e o SCP, se isso também permitir a configuração das permissões do arquivo).

No entanto, a maneira como isso é normalmente tratado com o protocolo FTP é uma história bem diferente, como acabei de descrever anteriormente. Se você estiver usando o protocolo FTP, que é texto simples, então é tecnicamente possível, mas pouco provável que o SSH esteja sendo usado para acompanhamento. (Se o software é capaz o suficiente para suportar SSH, então geralmente também suporta SFTP ou SCP ou ambos. Como resultado, o suporte ao protocolo FTP antigo é normalmente projetado de forma que a complexidade das comunicações criptografadas não seja usada como parte do SSH. processo.)

    
por 31.01.2017 / 14:32