스크립트를 실행할 때 /tmp
공격자 (또는 악의적 인 내용)가 파일 /tmp/tmpfileformyscript.tmp
을 생성 한 것으로 확인한 경우 (파일 에 대한 읽기 권한이없는 경우에도 ) 고정 된 이름 파일로 출력을 리디렉션 하면 보안 위험이 발생할 수 있음 을 읽었습니다. 예를 들어 스크립트를 실행할 때 파일 ln -s ~wildcard/.bashrc /tmp/tmpfileformyscript.tmp
을 손상 시키는 심볼릭 링크 를 만들 수 있습니다 .bashrc
.
대신에 다음과 같은 것을 사용할 수 있습니다 filename="tmpfile.tmp.$RANDOM" ; echo outputtext > "$filename"
.
그러나 캐싱을 위해 tmp 파일을 사용하고 싶을 때가 있습니다.이 경우 "tmpfile.tmp. *"가 일치하는 항목이 있는지 알고 싶은 경우 /tmp
새 파일을 만드는 대신 해당 파일을 사용하십시오. 불행히도 test
이에 상응하는 [ -f filename ]
것은 내가 말할 수있는 한 파일 글 로빙을 지원하지 않습니다.
따라서 내 질문은 두 가지입니다.
- 임시 파일을 안전하게 만드는 방법은 무엇입니까? 가
"predictablename.$RANDOM"
허용 연습이나 더 나은 (더 안전한, 쉬운) 방법은 무엇입니까? - 파일을 쉽게 액세스하고 나중에 확인하여 파일의 존재를 확인하려면
predictablename
어떻게해야합니까?
$TMPDIR
과~/.cache
내가 필요한 것입니다. 좀 더 생각한 후에/tmp
는 내가 원하는 유일한 이유 는 파티셔닝 이라는 것을 깨달았습니다. 따라서 캐시가/home
파티션을 채울 수 없었습니다 . 그러나이 유스 케이스의 경우 실제로 완전한 비 이슈이므로 하위 디렉토리는~/.cache
필자의 요구에 완벽하게 부합하며 보안 문제를 피합니다.