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

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

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

Um colega me disse que o FTP era completamente agnóstico em relação às permissões de arquivo e simplesmente transferia 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-me sugerido que o cliente provavelmente está executando um chmod via SSH, ou seja, definindo as permissões após o fato.

Responder1

O seu colega tem razão, no sentido de que o relatório de Outubro de 1985RFC 959não parece fornecer um comando projetado especificamente para alterações de permissão. RFC 959 fornece especificações de comandos para fazer upload de arquivos (RFC 959 página 30possui o comando “STOR” para armazenar arquivos), baixar arquivos (a página 30 possui o comando “RETR” para recuperar arquivos) e extensões opcionais como MKD (criar diretório) e RMD (remover diretório). A RFC observa: "É prerrogativa de um processo servidor-FTP invocar" "controles" de acesso. (No entanto, pela minha leitura da RFC, acredito que os "controles de acesso" mencionados têm mais a ver com o suporte à capacidade de fazer login com um nome de usuário, e não com a intenção de se referir à ideia de usar FTP para alterar as permissões de arquivos.)

RFC 959 página 47contém uma lista dos comandos incorporados à especificação FTP da RFC 959. Por um tempo, fiquei pensando em criar um servidor FTP para uma plataforma específica e li cada um desses comandos. Eu também dei uma olhadaRegistro de “comandos e extensões FTP” da IANA, que é referido em março de 2010RFC 5797. Não me lembro de nenhum desses comandos fornecendo uma maneira de alterar as permissões, exceto um:

RFC 959 página 33tem 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 seja enviado ao servidor FTP, e o O servidor FTP decide o que fazer com ele. O uso deste comando pode fazer coisas como alterar permissões de arquivo, pesquisar arquivos em um site ou reinicializar o servidor FTP. Em teoria, o envio do comando “HELP SITE” mostrará detalhes de algumas funcionalidades disponibilizadas através do comando site. RFC 959 página 33 ainda especifica isso:

“A natureza destes serviços e a
especificação da sua sintaxe podem ser declaradas numa resposta ao
comando HELP SITE.”

O desafio para esta teoria é apenas que o comando “HELP SITE” realmente resulta na exibição de texto do servidor FTP, e a documentação incompleta pode não documentar todas as possibilidades disponíveis.

Baseado emA resposta de Jonathan Leffler à pergunta de knoti99 sobre “sintaxe chmod em FTP”, podemos ver que o programa clássico “ncftp” usou o comando “SITE CHMOD” para implementar o comando “chmod” do ncftp e que esse recurso não era suportado por todos os servidores FTP.

Mais uma observação ao concluir a parte FTP desta resposta: FTP é muito detectável. Basicamente, o que quero dizer com isso é que o FTP executa ações usando "texto não criptografado". Se você usar software de "sniffing de pacotes" ("captura de pacotes") como tcpdump ou Wireshark, poderá ver o que acontece com o FTP. Se você tentar transferir um arquivo que é um pequeno arquivo de texto e ver como ocorre o tráfego de rede, os resultados provavelmente serão muito 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 levar um pouco mais de tempo para configurar, e é por isso que esta resposta forneceu muitos detalhes mais fáceis de obter, mas saber sobre esse processo pode ser útil se você começar a se perguntar quaisquer outros detalhes sobre o que acontece durante o FTP comunicações.

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

Foi-me sugerido que o cliente provavelmente está executando um chmod via SSH, ou seja, definindo as permissões após o fato.

Acho que é um bom palpite, embora não ache que seja preciso quando se trata de FTP. Na verdade, essa suposição provavelmente descreve com precisão o processo preciso usado sempre que os protocolos SFTP e SCP são usados. Como ambos os protocolos são baseados em SSH, o comando “chmod” pode ser enviado usando a mesma conexão SSH usada como o restante da conexão criptografada. Pela minha leitura desses protocolos, acredito que é exatamente assim que as permissões de arquivo normalmente são definidas ao usar SFTP (e SCP, se isso também suportar a configuração de permissões de arquivo).

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

informação relacionada