mktemp -u가 "안전하지 않음"으로 간주되는 이유는 무엇입니까?

mktemp -u가 "안전하지 않음"으로 간주되는 이유는 무엇입니까?

--help최근에 텍스트 mktemp( man페이지를 사용할 수 없음)를 읽고 다음을 발견했습니다.

  -u, --dry-run       do not create anything; merely print a name (unsafe)

이것이 "안전하지 않은" 이유는 무엇입니까? 이렇게 표시하는 특별한 이유가 있나요?

답변1

mktemp매뉴얼을 인용하자면, 요점은 "임시 파일 또는 디렉터리를 안전하게 생성"입니다. 기본적으로 스크립트에서는 다음과 같이 작성할 수 있습니다.

file="$(mktemp)"

또는

dir="$(mktemp -d)"

임시 파일과 디렉터리는 명령을 실행하는 사용자(물론 대부분의 설정에서는 루트)만 액세스할 수 있고 다른 항목 등에 대한 심볼릭 링크가 아니라는 점을 알고 필요에 따라 안전하게 사용할 수 있습니다. 여전히 경고가 있습니다. 특히 종료 상태를 확인해야 하며 상위 디렉터리를 안전하게 사용해야 합니다.문서더 알아보기. )

mktemp -u는 파일 이름 구성과 스크립트 사용을 분리하기 때문에 이러한 보장을 제공하지 않습니다.이러지 마세요)

dir="$(mktemp -u)"
mkdir "$dir"
chmod 700 "$dir"

mktemp와 사이에 mkdir다른 프로세스가 다른 소유권을 가진 디렉터리를 만들 수 있습니다. 또는 파일의 경우 다른 프로세스가 해당 위치에 파일을 만들거나 심볼릭 링크를 만들 수 있습니다.

관련 정보