[Nota: Este Q semelhante diz respeito à mesma mensagem de erro do bash. Foi marcada uma duplicata de esta outra Q . Mas como encontrei uma fonte muito diferente para esse erro, responderei meu próprio Q abaixo.]
Essa linha de script bash anteriormente trabalhando
while ... do ... done <<< "$foo"
um dia começou a produzir esta mensagem de erro:
não é possível criar o arquivo temporário para o documento aqui: permissão negada
bash
permissions
here-string
Vista elíptica
fonte
fonte
ima_policy=appraise_tcb
parâmetro do kernel) com a combinação de/tmp
não sertmpfs
. Mas este não é realmente um caso comum :).Respostas:
Eu adicionei
umask 777
antes da string here. Depois de remover o umask, o erro desapareceu. Lição aprendida: existe um arquivo temporário criado para uma string here (<<<
), e isso está relacionado a um documento here (<<
), e você deve ter um umask apropriado definido para que eles funcionem.fonte
No meu caso, alterei as
/tmp
permissões padrão do diretório (acho que mudei por engano para 0777).A solução foi reverter para a
/tmp
permissão padrão , que é 1777 em octal (1 = bit fixo, 7 = R + W + X).Então, em poucas palavras,
sudo chmod -R 1777 /tmp
deve resolver o problema.fonte
-R
bandeira. Não há razão para alterar os arquivos de todos abaixo/tmp
para serem executáveis por leitura e gravação. Alguns desses arquivos são sensíveis à segurança de seus usuários.minha experiência pessoal com esse problema foi com
umask
notação binária, assim como @ eliptical-view. Eu supunha que escrever:me daria acesso de leitura e gravação aos arquivos que eu criei, o que há de errado
Depois que eu mudei
umask
para sero erro desapareceu.
Na verdade, a notação binária deve ser entendida como um complemento binário.
Portanto, na
umask
máscara abaixo, quando alguém escreve0
para o proprietário do arquivo, esse usuário terá acesso total aos arquivos que ele cria. O valor2
significa que o segundo bit está 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.fonte
umask
, pois precisamente três bits estão envolvidos nas permissões de arquivo Posix - para o proprietário, um de seus grupos e todos os outros.