mktemp — 안전한 임시 파일·디렉토리 생성
Linux / 파일 및 디스크 관리 / mktemp.html
충돌과 예측 공격을 피하도록 무작위 이름으로 임시 파일이나 디렉토리를 만드는 도구.
기본 정보
| 명령어 이름 | mktemp |
|---|---|
| 한 줄 소개 | 충돌과 예측 공격을 피하도록 무작위 이름으로 임시 파일이나 디렉토리를 만드는 도구. |
| 제공 | GNU coreutils (모든 Linux 배포판 기본 탑재) |
| 공식 문서 | https://man7.org/linux/man-pages/man1/mktemp.1.html |
| 지원 운영체제 | Linux, macOS, BSD, WSL |
| 설치 여부 | 기본 탑재 (별도 설치 불필요) |
| 분류 | 리눅스 파일·디스크 관리 (태그: 임시 파일, 보안, 스크립트, coreutils) |
이 명령어는 무엇인가?
mktemp는 중복되지 않는 이름으로 임시 파일이나 디렉토리를 만들고 경로를 출력합니다. 스크립트에서 고정된 이름을 쓰면 다른 프로세스와 충돌하거나 심볼릭 링크 공격에 노출될 수 있습니다.
생성된 경로를 변수에 담아 사용하고, 작업이 끝나면 trap으로 정리하는 패턴이 일반적입니다.
어떤 문제를 해결하는가?
- 스크립트에서 안전한 임시 파일이 필요할 때
- 동시에 실행되는 작업끼리 파일명이 충돌할 때
- 임시 디렉토리를 만들고 자동 정리하고 싶을 때
- 예측 가능한 이름으로 인한 보안 문제를 피할 때
주요 기능
임시 파일 생성
템플릿을 주면 그 뒤에 무작위 문자가 붙은 경로를 만듭니다.
- 활용 상황: 중간 결과를 잠시 저장할 때
- 얻는 결과: 안전하게 생성된 파일과 경로
- 제한 사항: 기본 위치는 /tmp이며 재부팅 시 사라질 수 있습니다.
임시 디렉토리 생성
-d 옵션은 파일 대신 디렉토리를 만듭니다.
- 활용 상황: 여러 임시 파일을 한곳에 모을 때
- 얻는 결과: 무작위 이름의 디렉토리
- 제한 사항: 하위 파일은 직접 정리해야 합니다.
지정 위치에 생성
-p 옵션으로 기준 디렉토리를 지정합니다.
- 활용 상황: /tmp가 아닌 다른 볼륨을 써야 할 때
- 얻는 결과: 지정한 위치의 임시 항목
- 제한 사항: 해당 디렉토리에 쓰기 권한이 필요합니다.
설치 및 실행
설치 여부 확인
mktemp --version
sudo apt install coreutils # Debian/Ubuntu sudo dnf install coreutils # Fedora
실제 사용 예제
임시 파일 경로 얻기
변수에 경로를 담아 이후 명령에서 사용합니다.
tmp=$(mktemp)
echo "data" > "$tmp"
rm -f "$tmp"
임시 디렉토리와 정리
trap으로 스크립트 종료 시 자동 삭제합니다.
workdir=$(mktemp -d)
trap 'rm -rf "$workdir"' EXIT
echo "$workdir"