scp alterando permissões no diretório / tmp

4

Eu uso um script de espera para automatizar a transferência de alguns arquivos de suporte para os terminais. Os arquivos de suporte são tarballed automaticamente antes de serem scp'ed no terminal de destino. Isso é feito por um programa interno que preenche automaticamente a senha do scp, para que não tenhamos que inserir a senha. Eu posso copiar os arquivos individuais sem problemas, mas quando tento copiar o arquivo tar.gz arquivo, ele altera as permissões do diretório / tmp. Eu tenho chmodding o diretório / tmp de volta para 1777 para as permissões e chowning para root.root, que é como normalmente é configurado, mas isso nem sempre funciona. Ele está causando erros de sqlite porque o sqlite não pode gravar um arquivo temporário em / tmp, o que é muito perturbador. Como posso determinar a causa exata disso? Eu sei que tem que estar relacionado ao arquivo tar.gz, mas fiquei com a impressão de que o tar preservaria as permissões no arquivo.

as permissões no arquivo dentro do meu diretório são:

-rw-rw-r-- 1 aembree aembree  88K Oct  2 15:20 dropin.tar.gz

Antes da transferência / tmp se parece com isso em um ls -al:

drwxrwxrwt  15 root root 8.4K Oct  2 15:08 tmp

Após a transferência / tmp é assim:

drwxrwxr-x  15 10539 10539 8.4K Oct  2 15:01 tmp

O comando tar sendo executado é o seguinte:

tar -vPczf /home/aembree/bin/resources/dev/dropin.tar.gz --exclude='helperscript' -C $dropinlist . > /home/aembree/bin/resources/logs/tarlog

Quando o arquivo estiver na máquina remota, espere que execute o seguinte comando para descompactá-lo:

send "cd /tmp ; tar -xzf dropin.tar.gz ; rm dropin.tar.gz ; cd ;\n"
    
por Abby Embree 02.10.2016 / 21:08

1 resposta

7

Você incluiu . em sua coleção de origem, atribuído a tar . O problema ocorre quando você extrai o tarball e as permissões são aplicadas. Seu diretório de origem . é extraído e as permissões aplicadas. Infelizmente, no momento da extração, . é, na verdade, /tmp .

A correção é excluir . do tarball ou criar um diretório temporário dentro de /tmp para extrair tudo.

    
por 02.10.2016 / 21:34