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

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

/tmp내부의 파일에 쓰기 전에 확인하고 생성해야 합니까 ? sudo rm -rf /tmp매우 드문 경우이기 때문에 아무도 도망치지 않았다고 가정합니다.

답변1

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

답변2

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

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

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

: "${TMPDIR:=/tmp}"

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

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

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

답변3

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

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

관련 정보