Przeczytałem, że przekierowanie danych wyjściowych do pliku o stałej nazwie /tmp
może stanowić zagrożenie bezpieczeństwa, ponieważ jeśli atakujący (lub malkontent) zauważy, że plik /tmp/tmpfileformyscript.tmp
jest 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.tmp
które spowoduje, że zniszczę .bashrc
plik 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ś, /tmp
a jeśli tak, użyj tego pliku zamiast tworzyć nowy. Niestety, test
o [ -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
?
$TMPDIR
i~/.cache
jest 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ć,/tmp
był podział na partycje - więc pamięć podręczna nie mogła zapełnić/home
partycji. Ale w tym przypadku użycia jest to kompletny problem, więc podkatalog~/.cache
idealnie pasuje do moich potrzeb i pozwala uniknąć problemu z bezpieczeństwem.