Como gerenciar / preservar privilégios de arquivo durante uma transferência de arquivos online?

4

Eu estava pensando se é possível fazer um script para enviar a um amigo para corrigir alguns problemas em seu computador. Eu quero dar permissões executáveis para um arquivo para que meu amigo tenha que clicar duas vezes no arquivo, algo assim:

link

Mas quando eu uso o chmod a+x com o meu arquivo e envio o arquivo para o meu amigo (neste caso eu o envio para mim), ele (I) não pode executar porque o arquivo perdeu as permissões +x .

Existe uma maneira (existe, o homem do link é capaz de fazer isso) para enviar um script bash com permissões executáveis apenas para clicar duas vezes e executá-lo?

    
por Jorge Martínez Carracedo 21.04.2015 / 01:22

1 resposta

8

  

NOTA: A pergunta no momento foi enviada para transferência de e-mail (por comentários do OP sobre a questão). Essa resposta foi escrita para responder a essa pergunta, pois o email é o método de transferência disponível aqui.

Ao usar o email para transferir arquivos entre os sistemas, você não pode "preservar" todas as permissões de arquivo como deseja, apenas enviando o arquivo. Isso ocorre porque é um 'novo download' que é um 'novo arquivo' criado de acordo com os termos e requisitos da política do sistema para 'novas permissões de criação de arquivo' no local de download, no sistema de download, etc. os protocolos não possuem nenhum mecanismo para preservar as permissões do sistema de origem.

O exemplo do GitHub que você mostra "salvará" os estados de permissão dos arquivos como parte do sistema de controle de versão. E-mail não tem esse mecanismo.

Como já definimos que o E-mail não permite preservar as permissões de arquivo, você precisa avaliar outros métodos.

  1. Use um tarball . Você pode criar um diretório com o arquivo e criar um tarball para manter o sistema. Quando extraído em um sistema Linux, ele tentará e 'preservará' essas permissões como as coisas estavam quando você compactou os arquivos. tar -pczf name_of_your_archive.tar.gz /path/to/directory é a estrutura geral de comando a ser usada. No entanto, se eles não puderem executar tar xzf ou similar no outro lado, isso não funcionará.

  2. Use um sistema de controle de versão para armazenar os dados, como um repositório do GitHub. Você pode criar um repositório github para conter o shell script e fazer com que a outra pessoa o copie para seu sistema. Isso deve preservar o bit executável, mas sem garantias.

  3. Instrua o outro usuário sobre como definir o bit executável através da linha de comando . Se eles fizerem o download do arquivo para /home/USERNAME/Downloads , onde USERNAME é seu nome de usuário, você poderá instruí-los a fazer o login no terminal e executar chmod a+x /home/USERNAME/Downloads/FileName.sh , e eles poderão executá-lo com um clique duplo ou pela linha de comando. / p>

  4. Se o email for a única opção de transferência , executará o script com a linguagem shell na qual você o escreveu (provavelmente Bash, é meu palpite) . Isso não precisará de nenhuma alteração nas permissões ou no bit de execução em qualquer lugar. Supondo que este seja um script Bash , basta fazer com que o usuário remoto que baixou o script execute o seguinte (na linha de comando): bash /path/to/script.sh (e substitua /path/to/script.sh pelo caminho real do arquivo , provável /home/USERNAME/Downloads ou um local de download de e-mail padrão ou se baixado via webmail em um navegador da web em que USERNAME é o nome de usuário do usuário)

Diferentemente dos três primeiros métodos, dos quais estou ciente, não acredito que você possa 'preservar' as permissões ao enviar o arquivo para o outro usuário. Essa é uma limitação do E-mail - ele não pode preservar as permissões dessa forma, porque não há como salvar as permissões como parte desse arquivo de forma preservada durante o transporte por e-mail. A quarta opção fornece um método para nem mesmo precisar do bit executável e não mexer nas permissões.

    
por Thomas Ward 21.04.2015 / 01:38