Não é possível criar um arquivo temporário para este documento: Permissão negada

5

[Nota: Este Q similar diz respeito à mesma mensagem de erro bash. Foi marcado um duplicado de este outro Q . Mas como encontrei uma fonte muito diferente para esse erro, responderei meu próprio Q abaixo.]

Esta linha de script bash que funcionava anteriormente

while ... do ... done <<< "$foo"

um dia começou a produzir esta mensagem de erro:

cannot create temp file for here-document: Permission denied

    
por Eliptical view 09.03.2018 / 17:22

3 respostas

7

Eu adicionei umask 777 antes da string aqui. Depois de remover o umask, o erro desapareceu. Então, lições aprendidas: Existe um arquivo temporário criado para uma string aqui ( <<< ), e isso está relacionado a um documento aqui ( << ), e você deve ter um conjunto de umask apropriado para que isso funcione.

    
por 09.03.2018 / 17:30
1

No meu caso, alterei as permissões padrão do diretório /tmp (acho que mudei por engano para 0777).

A solução foi revertê-lo de volta à permissão padrão /tmp , que é 1777 em octal (1 = bit pegajoso, 7 = R + W + X).

Então, em poucas palavras sudo chmod -R 1777 /tmp deve resolver o problema.

    
por 07.04.2018 / 12:58
0

minha experiência pessoal com esse problema foi com a notação binária umask , assim como @ eliptical-view. Eu supus que escrevendo:

umask 644 

me daria acesso de leitura e gravação aos arquivos que eu criei, o que está errado

Depois que eu mudei o umask para ser

umask 022

o erro desapareceu.

Na verdade, a notação binária deve ser entendida como um complemento binário.

Portanto, na máscara de umask abaixo quando alguém escreve 0 para o proprietário do arquivo, esse usuário terá acesso total aos arquivos criados por ele. O valor 2 significa que o segundo bit é mascarado, o que significa que, nesse caso, por padrão, os outros usuários não poderão gravar nos arquivos criados pelo proprietário do arquivo.

    
por 19.03.2018 / 16:45