Como capturar um arquivo criado temporariamente?

3

Eu tenho um programa que gera um script de shell, depois o executa e exclui. Existe alguma chance de obter um conteúdo deste script sem intrusão no programa que o gera?

    
por Serge Roussak 24.11.2016 / 08:23

3 respostas

3

Você pode substituir temporariamente seu interpretador de scripts por um programa de sua escolha (por exemplo, cat ), o que permite examinar o script na tela ou armazená-lo em algum lugar. Por definição, não há como esconder o script do interpretador.

Se o programa em questão não foi projetado para manter o script em segredo, você provavelmente será capaz de encontrá-lo em seu disco com extundelete ou uma ferramenta semelhante para o sistema de arquivos que estiver usando.

    
por 24.11.2016 / 08:40
3

Eu encontrei esta solução não trivial:

#!/bin/sh

file_path=$1/script-file-name

while inotifywait -e create "$1"; test ! -f "$file_path"
do
  :
done

chmod g+rw "$file_path"
chown root "$file_path"

Este script deve ser executado com os privilégios de root :

sudo <catch-script> /dir/where/the/target/will/be/generated

Anteriormente, um diretório em que o script seria gerado deveria ter a seguinte restrição:

chown root /dir/where/the/target/will/be/generated
chmod 1775 /dir/where/the/target/will/be/generated

Ou seja. nós colocamos o bit pegajoso no diretório onde o script será colocado. Em seguida, o script especificado (captura) aguarda enquanto o script de destino será criado, define a permissão de gravação para ele (para permitir que o programa de geração trabalhe com ele) e altera o proprietário para root (para desativar uma exclusão).

    
por 24.11.2016 / 09:40
0

Organize o arquivo temporário em um sistema de arquivos que mantenha todas as versões dos arquivos, como copyfs . Uso de amostra:

mkdir /tmp/backend /tmp/recorded
copyfs-mount /tmp/backend /tmp/recorded
TMPDIR=/tmp/recorded myprogram
ls /tmp/backend
cat /tmp/backend/metadata.
…
fusermount -u /tmp/recorded
    
por 25.11.2016 / 01:47

Tags