[Nota: Esta Q similar se refiere al mismo mensaje de error bash. Se ha marcado un duplicado de este otro Q . Pero debido a que encontré una fuente muy diferente para este error, responderé mi propia Q a continuación.]
Esta línea de script bash que funcionaba anteriormente
while ... do ... done <<< "$foo"
un día comenzó a producir este mensaje de error:
no se puede crear un archivo temporal para el documento aquí: permiso denegado
bash
permissions
here-string
Vista elíptica
fuente
fuente
ima_policy=appraise_tcb
parámetro del núcleo) con combinación de/tmp
no sertmpfs
. Pero este no es realmente un caso común :).Respuestas:
Había agregado
umask 777
antes de la cadena aquí. Después de quitar la umask, el error desapareció. Lección aprendida: hay un archivo temporal creado para una cadena here (<<<
), y esto está relacionado con un documento here (<<
), y debe tener un conjunto umask apropiado para que estos funcionen.fuente
En mi caso modifiqué los
/tmp
permisos predeterminados del directorio (creo que he cambiado por error a 0777).La solución fue revertirlo al
/tmp
permiso predeterminado , que es 1777 en octal (1 = bit fijo, 7 = R + W + X).En pocas palabras,
sudo chmod -R 1777 /tmp
debería solucionar el problema.fuente
-R
bandera. No hay razón para cambiar los archivos de todos a continuación/tmp
para que sean ejecutables de lectura-escritura. Algunos de esos archivos son sensibles a la seguridad de sus usuarios.mi experiencia personal con este problema fue con la
umask
notación binaria, al igual que @ eliptical-view. Supuse que escribir:me daría acceso de lectura y escritura a los archivos que creé, lo que está mal
Después cambié el
umask
serEl error desapareció.
En realidad, la notación binaria debe entenderse como un complemento binario.
Entonces, en la
umask
máscara de abajo, cuando uno escribe0
para el propietario del archivo, este usuario tendrá acceso total a los archivos que crea. El valor2
significa que el segundo bit está enmascarado, lo que significa que en este caso, de forma predeterminada, los demás usuarios no podrán escribir en los archivos que crea el propietario del archivo.fuente
umask
, ya que precisamente tres bits están involucrados en los permisos de archivos Posix: para el propietario, uno de sus grupos y todos los demás.