tar 추출 중에 자동으로 파일을 실행할 수 없게 만들 수 있나요?

tar 추출 중에 자동으로 파일을 실행할 수 없게 만들 수 있나요?

일부 실행 파일이 포함된 tar.gz 아카이브가 있습니다. 아카이브를 추출할 때 아카이브를 자동으로 실행 불가능하게 만드는 방법이 있습니까? --mode 플래그를 사용해 보았지만 아무런 효과가 없는 것 같습니다.

tar xzf archive.tar.gz --mode 'a-x'

가능하다면 tar 자체를 이용하여 권한을 설정하고 싶습니다. tar로 생성된 폴더의 이름이 어떻게 될지 미리 알 수 없기 때문입니다. GNU tar 기능을 사용할 수 있습니다.

답변1

사용하는 경우star(포함 된힐리 도구, 통과@힐리(고인)) GNU 대신 tar다음을 수행할 수 있습니다.

star xf file.tar -find ! -type d -chmod a-x

유사한 인터페이스를 사용하여 find아카이브 구성원을 조작할 수 있습니다.

libarchive를 사용 bsdtar하고 아카이브에 다음 외에는 아무것도 포함되어 있지 않다고 가정합니다.목차그리고정기적인하드 링크 대신 파일 메타데이터 복원에 신경 쓰지 않고 zip추출하기 전에 아카이브를 동적 형식으로 변환할 수 있습니다(권한은 지원되지 않음).

bsdtar --format zip -cf - @file.tar | bsdtar xvf -

이렇게 하면 기본 권한이 있는 모든 파일이 생성되고 umask기본 권한도 적용됩니다. 따라서 를 사용하면 권한이 있는 디렉토리와 가 있는 디렉토리를 umask 022얻게 됩니다 .rwxr-xr-xrw-r--r--

GNU를 사용하면 tar비슷한 결과를 얻을 수 있습니다.

tar -xf file.tar --to-command='
  set -o noclobber
  mkdir -p -- "$(dirname -- "$TAR_FILENAME")" &&
    cat > "$TAR_FILENAME"'

추가 제한 사항은 그 아래에 일반 파일이 없으면 디렉터리를 생성하지 않으며 일부 디렉터리 이름이 개행 문자로 끝나면 실패한다는 것입니다.

답변2

추출 시 실행 가능 비트가 설정되는 것을 방지하려면 a 설정 umask과 using 인수를 결합할 수 있어야 합니다 .tar--no-same-permissions

관련 정보