[Uwaga: Ten podobny Q dotyczy tego samego komunikatu o błędzie bash. To zostało oznaczone duplikat tej drugiej Q . Ale ponieważ znalazłem zupełnie inne źródło tego błędu, poniżej odpowiem na moje własne pytanie.]
Ta wcześniej działająca linia skryptu bash
while ... do ... done <<< "$foo"
pewnego dnia zaczęto wyświetlać ten komunikat o błędzie:
nie można utworzyć pliku tymczasowego dla dokumentu tutaj: Odmowa dostępu
bash
permissions
here-string
Widok eliptyczny
źródło
źródło
ima_policy=appraise_tcb
parametr jądra) z kombinacją/tmp
nieistnieniatmpfs
. Ale to nie jest tak naprawdę częsty przypadek :).Odpowiedzi:
Dodałem
umask 777
przed ciągiem tutaj. Po usunięciu umask błąd zniknął. Więc wyciągnięto naukę: Dla pliku here (<<<
) utworzono plik tymczasowy , który jest powiązany z dokumentem here (<<
) i musisz mieć odpowiedni zestaw umask, aby działały.źródło
W moim przypadku
/tmp
zmieniłem domyślne uprawnienia do katalogu (myślę, że przez pomyłkę zmieniłem na 0777).Rozwiązaniem było przywrócenie domyślnego
/tmp
uprawnienia, które ma wartość 1777 w liczbie ósemkowej (1 = lepki bit, 7 = R + W + X).Więc w skrócie
sudo chmod -R 1777 /tmp
powinien rozwiązać problem.źródło
-R
flagi. Nie ma powodu, aby zmieniać poniższe pliki wszystkich użytkowników, aby każdy/tmp
mógł je odczytać i zapisać. Niektóre z tych plików są wrażliwe na bezpieczeństwo użytkowników.moje osobiste doświadczenia z tym problemem
umask
dotyczyły zapisu binarnego, podobnie jak @ eliptical-view. Przypuszczałem, że pisanie:dałby mi dostęp do odczytu i zapisu do plików, które utworzyłem, co jest nie tak
Po tym, jak zmienił
umask
siębłąd zniknął.
W rzeczywistości zapis binarny należy rozumieć jako uzupełnienie binarne.
Tak więc, w
umask
poniższej masce, gdy pisze się0
dla właściciela pliku, ten użytkownik będzie miał pełny dostęp do plików, które tworzy. Wartość2
oznacza, że drugi bit jest maskowany, co oznacza, że w tym przypadku domyślnie inni użytkownicy nie będą mogli zapisywać plików utworzonych przez właściciela pliku.źródło
umask
, ponieważ dokładnie trzy bity są zaangażowane w uprawnienia do plików Posix - dla właściciela, jednej z jego grup i wszystkich innych.