Przeczytałem, że przekierowanie danych wyjściowych do pliku o stałej nazwie /tmpmoże stanowić zagrożenie bezpieczeństwa, ponieważ jeśli atakujący (lub malkontent) zauważy, że plik /tmp/tmpfileformyscript.tmpjest tworzony po uruchomieniu skryptu (nawet jeśli nie ma on dostępu do odczytu skrypt), może na przykład utworzyć dowiązanie symboliczne, ln -s ~wildcard/.bashrc /tmp/tmpfileformyscript.tmpktóre spowoduje, że zniszczę .bashrcplik po uruchomieniu skryptu.
Zamiast tego mogę użyć czegoś takiego filename="tmpfile.tmp.$RANDOM" ; echo outputtext > "$filename".
Chciałbym jednak czasami użyć pliku tmp do buforowania, w którym to przypadku chciałbym wiedzieć, czy „tmpfile.tmp. *” Pasuje do czegoś, /tmpa jeśli tak, użyj tego pliku zamiast tworzyć nowy. Niestety, testo [ -f filename ]ile mi wiadomo, odpowiednik nie obsługuje globowania plików.
Zatem moje pytanie jest dwojakie:
- Jak mogę bezpiecznie utworzyć plik tymczasowy? Czy
"predictablename.$RANDOM"możliwa jest do przyjęcia praktyka lub czy istnieje lepszy (bezpieczniejszy, łatwiejszy) sposób? - Jak mogę łatwo uzyskać dostęp do pliku i / lub ustalić jego istnienie później, sprawdzając go
predictablename?
$TMPDIRi~/.cachejest dokładnie tym, czego potrzebowałem. Po kilku dalszych myślach zdałem sobie sprawę, że jedynym powodem, dla którego chciałem to zrobić,/tmpbył podział na partycje - więc pamięć podręczna nie mogła zapełnić/homepartycji. Ale w tym przypadku użycia jest to kompletny problem, więc podkatalog~/.cacheidealnie pasuje do moich potrzeb i pozwala uniknąć problemu z bezpieczeństwem.