!["mktemp"를 사용하여 임시 파일을 안전하고 이식 가능하게 만들려면 "X"를 몇 개 사용해야 합니까?](https://linux55.com/image/227748/%22mktemp%22%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9E%84%EC%8B%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%95%88%EC%A0%84%ED%95%98%EA%B3%A0%20%EC%9D%B4%EC%8B%9D%20%EA%B0%80%EB%8A%A5%ED%95%98%EA%B2%8C%20%EB%A7%8C%EB%93%A4%EB%A0%A4%EB%A9%B4%20%22X%22%EB%A5%BC%20%EB%AA%87%20%EA%B0%9C%20%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
답변1
이식 가능한 옵션은 6개 이상입니다. 왜냐하면 이것이 mkstemp(3)
수행되고 시뮬레이션되는 동작이기 때문입니다. 그러나 일부 시스템에서는 6보다 많이 지정하면 후행 6만 사용되고 나머지는 그대로 유지됩니다 X
. 그럼에도 불구하고 CSPRNG가 내부적으로 사용되는 경우 공격자가 프로세스를 DoS하는 것을 방지하려면 6개면 충분합니다.
일부 시스템(예: GNU 도구를 사용하는 Linux)에서는 이식 가능하지 않더라도 템플릿을 완전히 제거할 수 있습니다. 대부분의 시스템에는 템플릿이나 접두사가 붙은 파일이 필요합니다 -t
. 원하는 파일이 에 없으면 $TMPDIR
템플릿이 필요합니다. 적어도 FreeBSD와 macOS에서는요.
mktemp(1)
POSIX에서는 이를 요구하지 않기 때문에 일부 시스템에서는 이를 전혀 지원하지 않을 수도 있습니다 . 그러나 널리 사용되고 최소한 Linux, macOS, FreeBSD, NetBSD, OpenBSD, HP-UX 및 Solaris에 존재하므로 GNU coreutil이 없는 시스템에 GNU coreutil을 설치하라고 간단히 말할 수 있습니다.