[Примечание: этот похожий Q касается того же сообщения об ошибке bash. Это было отмечено дубликат этого другого Q . Но поскольку я нашел совершенно другой источник этой ошибки, я отвечу на свой вопрос ниже.]
Эта ранее работающая строка сценария bash
while ... do ... done <<< "$foo"
однажды начал производить это сообщение об ошибке:
не может создать временный файл для здесь-документа: В доступе отказано
bash
permissions
here-string
Эллиптический вид
источник
источник
ima_policy=appraise_tcb
параметр ядра) с комбинацией/tmp
не бытьtmpfs
. Но это не совсем обычный случай :).Ответы:
Я добавил
umask 777
перед строкой здесь. После удаления umask ошибка ушла. Итак, извлеченный урок: существует временный файл, созданный для строки here (<<<
), и это связано с документом here (<<
), и вы должны иметь соответствующий набор umask, чтобы они работали.источник
В моем случае я изменил
/tmp
разрешения по умолчанию для каталога (я думаю, что я по ошибке изменил на 0777).Решением было вернуть его обратно к
/tmp
разрешению по умолчанию , которое равно 1777 в восьмеричном виде (1 = бит закрепления, 7 = R + W + X).Так что в двух словах
sudo chmod -R 1777 /tmp
следует решить проблему.источник
-R
флаг. Нет причин изменять все файлы ниже,/tmp
чтобы они были доступны для чтения и записи. Некоторые из этих файлов чувствительны к безопасности ваших пользователей.Мой личный опыт с этой проблемой был с
umask
двоичной нотацией, как @ eliptical-view. Я предположил, что написание:дал бы мне доступ на чтение и запись к файлам, которые я создал, что не так
После того, как я изменил,
umask
чтобы бытьошибка исчезла.
На самом деле двоичная запись должна пониматься как двоичное дополнение.
Таким образом, в
umask
маске ниже, когда кто-то пишет0
для владельца файла, этот пользователь будет иметь полный доступ к файлам, которые он или она создает. Значение2
означает, что 2-й бит замаскирован, что означает, что в этом случае другим пользователям по умолчанию не разрешается записывать в файлы, которые создает владелец файла.источник
umask
, поскольку в разрешениях файла Posix участвуют ровно три бита - для владельца, одной из его или ее групп и всех остальных.