"mktemp"를 사용하여 임시 파일을 안전하고 이식 가능하게 만들려면 "X"를 몇 개 사용해야 합니까?

"mktemp"를 사용하여 임시 파일을 안전하고 이식 가능하게 만들려면 "X"를 몇 개 사용해야 합니까?

때로는 mktemp6개 이상의 인수가 포함된 명령을 호출하여 쉘 스크립트에서 임시 파일을 생성합니다. 그러나 다른 숫자를 가진 명령을 찾았기 때문에 이 숫자가 다른 구현에 적용되는지 확실하지 않습니다(예:XTEMPLATEmktemp여기,여기, 그리고여기).

나는 몇 가지 조사를 했고 다음과 같은 사실을 발견했습니다.

  • GNU 구현에는 mktemp세 개 이상의 X.

  • OpenBSD의 구현에는 mktemp6 이 필요한 것 같습니다 X. 그러나 나는 거의 알지 못한다.기본 코드하다.

  • FreeBSD 구현 매뉴얼mktemp명령과기능X얼마나 많은 템플릿이 있어야 하는지는 매우 모호합니다.

답변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을 설치하라고 간단히 말할 수 있습니다.

관련 정보