나는 당신이 모르는 변경을 할 수 있기 때문에 타르볼을 조심스럽게 추출해야한다고 말하는 동료가 있습니다. 나는 항상 tarball이 압축 파일의 계층 구조라고 생각했기 때문에 / tmp / example /에 압축을 풀면 / etc / 등으로 파일을 몰래 넣을 수 없습니다.
답변
다른 tar 유틸리티는 이와 관련하여 다르게 작동하므로주의를 기울이는 것이 좋습니다. 작성하지 않은 tar 파일의 경우, 추출하기 전에 항상 목차를 나열하십시오.
솔라리스 tar :
이름이 지정된 파일은 tarfile에서 추출되어 현재 디렉토리를 기준으로 tarfile에 지정된 디렉토리에 기록됩니다. 추출 할 파일 및 디렉토리의 상대 경로 이름을 사용하십시오.
tar 아카이브에 포함 된 절대 경로 이름은 절대 경로 이름을 사용하여 압축이 풀립니다. 즉 선행 슬래시 (/)가 제거되지 않습니다.
전체 (절대) 경로 이름을 가진 tar 파일의 경우 :
/tmp/real-file
/etc/sneaky-file-here
… 그러한 파일을 추출하면 두 파일로 끝납니다.
GNU 타르 :
기본적으로 GNU tar
/
는 입력 또는 출력에서 선행 을 삭제 하고..
구성 요소를 포함하는 파일 이름에 대해 불평 합니다. 이 동작을 해제하는 옵션이 있습니다.
--absolute-names
-P
파일 이름에서 슬래시를 제거하지 말고
..
파일 이름 구성 요소를 포함하는 파일 이름을 허용하십시오 .
… 옵션 을 사용 하지 않고 GNU tar 를 사용 하여 완전히 경로가 지정된 tar 파일을 추출 -P
하면 다음과 같이 알려줍니다.
tar :
/
멤버 이름에서 행간 제거
파일을 현재 디렉토리의 하위 디렉토리로 추출합니다.
AIX tar :
그것에 대해 아무 말도하지 않고 Solaris tar로 작동합니다-전체 / 절대 경로 이름을 가진 tar 파일을 만들고 추출합니다.
HP-UX tar :
(더 나은 온라인 참조 환영)
경고
절대 경로 이름을 상대 위치로 복원 할 방법이 없습니다.
-P
/
경로 이름에서 선행 슬래시 ( )를 제거하지 마십시오 . 기본값은 선행 슬래시를 제거하는 것입니다.
있다 -P
구현 옵션 tar
것을 추가와 동일한 의미를 가진뿐만 아니라 맥 OS, FreeBSD의와 NetBSD의에, tar
에 FreeBSD의 와 맥 OS “쓰레기는 경로 이름이 포함 아카이브 항목을 추출하는 것 ..
없이 또는 그 대상 디렉토리 심볼릭 링크에 의해 변경 될 것이다”는 -P
.
-/
아카이브를 추출 할 때 파일 이름에서 선행 슬래시를 제거하지 마십시오. 절대 경로 이름을 포함하는 Tar 아카이브는 일반적으로 나쁜 생각입니다. 다른 tar 구현의 경우 기존 파일을 방해하지 않으면 추출 할 수 없습니다. 이러한 이유로 별표를 지정하면 기본적으로 추출 모드에있을 때 파일 이름에서 슬래시를 제거합니다.
답변
타르 폭탄으로 발생하는 재미있는 일 중 하나 현재 디렉토리의 권한을 타르볼에 포함 된 권한으로 변경한다는 것입니다.
예를 들어, tarball에 ‘.’이 포함 된 경우 디렉토리를 루트로 / tmp에 압축 해제하면 루트 이외의 다른 사람이 / tmp를 쓸 수 없도록하여 시스템이 손상됩니다.