/tmp가 존재하는 것이 보장됩니까?

/tmp가 존재하는 것이 보장됩니까?

/tmp파일에 쓰기 전에 파일을 확인하고 생성해야 합니까? sudo rm -rf /tmp이는 매우 드물기 때문에 누구도 탈출하지 못한다고 가정합니다.

답변1

이것FHS기존 명령 /tmpPOSIX따라서 그 존재에 의존할 수 있습니다(적어도 호환 가능한 시스템에서는 가능하지만 실제로는 Unix 계열 시스템에서는 거의 보장됩니다). 그러나 이렇게 해서는 안 됩니다. 시스템 관리자나 사용자는 임시 파일을 위해 다른 위치를 사용하는 것을 선호할 수 있습니다. 바라보다여러 플랫폼에서 올바른 tmp 디렉토리 찾기자세한 내용은.

답변2

실제로는 /tmp거의 확실히 그렇습니다. 그러나 존재한다고 해서 거기에 임시 파일을 넣어야 한다는 의미는 아닙니다.

이것기준관례는 TMPDIR환경 변수를 사용하는 것입니다. 존재하는 경우 임시 파일용 디렉터리를 가리킵니다. 존재하지 않는 경우 임시 파일이 /tmp.

쉘 스크립트에서는 이를 임시 파일 위치로 사용할 수 있습니다. 설정하면 "${TMPDIR:-/tmp}"해당 값으로 확장되고, 그렇지 않으면 해당 값으로 확장됩니다. 또는 설정되어 있지 않은 경우에는 다음 명령을 사용하여 조건부로 설정할 수 있습니다.TMPDIR/tmpTMPDIR

: "${TMPDIR:=/tmp}"

그런 다음 그 안에 임시 파일을 만듭니다 "$TMPDIR".

모든 응용 프로그램은 /tmp또는 아래에 파일을 만들 수 있습니다 $TMPDIR. 또한 디렉터리는 사용자 간에 공유될 수 있으므로 파일 생성 시 권한에 대해 알고 있어야 합니다. 많은 시스템(Linux, *BSD)에는 다음 명령이 있습니다.mktemp올바른 디렉터리에 파일을 안전하게 생성합니다. 일반적으로 이를 사용하여 임시 파일 및 디렉토리를 생성하는 것이 좋습니다 mktemp. 특히 공유 디렉토리에 파일을 생성하는 것이 가능한 심볼릭 링크 공격으로 인해 안전하게 수행될 수 없는 쉘 스크립트에서 그렇습니다( mkdir오류가 올바르게 처리되면 괜찮습니다).

비어 있지 않은 경우 - 변수가 비어 있으면 어쨌든 사용할 수 없습니다. 빈 변수나 설정되지 않은 변수에 파일 이름이 포함되어야 하는 경우 일반적으로 동일한 방식으로 처리하는 것이 가장 좋습니다.

답변3

존재할 가능성이 매우 높지만 확인해야 할 또 다른 이유가 있습니다. 존재한다는 보장은 없습니다.. 많은 시스템에서 /tmp이는 디스크가 아닌 RAM으로 지원되며 몇 GB로 제한될 수 있습니다. (Fedora 시스템에서는 기본적으로 RAM의 절반입니다.) 그러므로 RAM이 존재하는지 확인해야 할 뿐만 아니라 무엇을 넣을 공간이 있는지도 확인해야 합니다.

더 큰 것이 있으면 를 사용하십시오 /var/tmp/.

관련 정보