[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_tcbparámetro del núcleo) con combinación de/tmpno sertmpfs. Pero este no es realmente un caso común :).Respuestas:
Había agregado
umask 777antes 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
/tmppermisos predeterminados del directorio (creo que he cambiado por error a 0777).La solución fue revertirlo al
/tmppermiso predeterminado , que es 1777 en octal (1 = bit fijo, 7 = R + W + X).En pocas palabras,
sudo chmod -R 1777 /tmpdebería solucionar el problema.fuente
-Rbandera. No hay razón para cambiar los archivos de todos a continuación/tmppara 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
umasknotació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
umaskserEl error desapareció.
En realidad, la notación binaria debe entenderse como un complemento binario.
Entonces, en la
umaskmáscara de abajo, cuando uno escribe0para el propietario del archivo, este usuario tendrá acceso total a los archivos que crea. El valor2significa 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.