GNU tar를 사용하면 간단합니다.
tar -xvf untrusted_file.tar
빈 디렉토리에. GNU tar /
는 --absolute-names
옵션으로 달리 명시하지 않는 한 추출시 자동으로 주요 멤버 이름을 제거합니다 . GNU tar는 또한 언제 사용 ../
하면 최상위 디렉토리 외부에서 파일이 추출 되는지를 감지 하고 대신 해당 파일을 최상위 디렉토리에 넣습니다. 예를 들어 컴포넌트 foo/../../bar/qux
는 bar/qux
최상위 디렉토리 bar/qux
의 상위가 아닌 최상위 디렉토리에서 추출됩니다 . . GNU 타르는 예를 들어 최상위 디렉토리, 외부 가리키는 기호 연결을 담당 foo -> ../..
하고 foo/bar
발생하지 않습니다 bar
최상위 디렉토리 밖에 추출 할 수 있습니다.
이는 GNU tar (충분히 최신 버전) GNU tar (* BSD tar 및 BusyBox tar와 같은 일부 다른 구현)에만 적용됩니다. 다른 구현에는 그러한 보호 기능이 없습니다.
심볼릭 링크 때문에 사용하는 보호로는 충분하지 않습니다. 아카이브에는 트리 외부의 디렉토리를 가리키는 심볼릭 링크가 포함되어 있으며 해당 디렉토리의 파일을 추출 할 수 있습니다. 순전히 멤버 이름을 기반으로 문제를 해결할 수있는 방법이 없으므로 기호 링크의 대상을 검사해야합니다.
이미 심볼릭 링크가 포함 된 디렉토리로 추출하는 경우 보증이 더 이상 유지되지 않을 수 있습니다.