Permissão negada no arquivo em / tmp

2

Eu tenho um script bash que lê nomes de arquivos, pega uma seleção de dados, cria uma tabela e adiciona o cabeçalho. Infelizmente, no ponto para adicionar o cabeçalho e dar o arquivo de saída, tenho a seguinte mensagem de erro:

./big_table_rcp.sh: line 153: /tmp/out: Permission denied

Está relacionado com a seguinte linha:

| cat - out_${scenario}.txt > /tmp/out && mv /tmp/out ${gauge}_${scenario}.txt

Alguém sabe como dar acesso ao arquivo de saída?

    
por steve 12.10.2015 / 22:07

2 respostas

8

Você pode estar recebendo erros de permissão porque não tem permissão para acessar o /tmp/out ou o diretório /tmp .

Antes da linha ofensiva, inclua algo como ls -l /tmp | grep out para ver quais permissões o arquivo /tmp/out possui.

Além disso, em vez de usar /tmp/out , use mktemp .

tmpfile='mktemp'
your code here | cat - out_${scenario}.txt > "$tmpfile" && mv "$tmpfile" ${gauge}_${scenario}.txt

De man mktemp :

Create a temporary file or directory, safely, and print its name.

    
por 12.10.2015 / 22:32
4

Não use /tmp/out , mas sim /tmp/out.$$ isso não entrará em conflito em caso de execução simultânea ou processo restante, melhor ainda, use /tmp/out.${LOGNAME}.$$ , o que permitirá uma limpeza no nível do usuário.

    
por 12.10.2015 / 22:21

Tags