압축을 풀지 않고 zip 파일에 대한 권한 변경

압축을 풀지 않고 zip 파일에 대한 권한 변경

파일의 압축을 풀지 않고 zip에 있는 파일의 권한을 수정하는 방법이 있습니까? 명확히 하자면, 파일 내용을 변경하라는 것이 아니라 파일에 설정된 Unix 권한을 변경하라는 것입니다. 파일을 추출하고 업데이트하는 것 외에는 답을 찾지 못했습니다.

답변1

네, 가끔요. 세부 사항을 너무 깊이 다루지 않고도 Zip 파일에는 각 파일에 대한 항목 목록이 있고 마지막에는 이를 요약하는 또 다른 항목이 있습니다. 이러한 항목은 도구(및 해당 버전), 파일 시스템, Zip 형식 등에 따라 파일 권한이 있을 수도 있고 없을 수도 있지만, 파일 권한이 있는 경우 수정할 수 있습니다.

다음 단계는 Debian 10에서 테스트되었습니다.

zip 파일을 만들어 보겠습니다.

$ echo "This is file 1" > file1.txt
$ chmod 777 file1.txt
$ echo "This is file 2" > file2.txt
$ chmod 555 file2.txt
$ zip files file?.txt

그런 다음 파일과 권한을 나열합니다.

$ zipinfo files.zip

Archive:  files.zip
Zip file size: 344 bytes, number of entries: 2
-rwxrwxrwx  3.0 unx       15 tx stor 20-Jun-08 18:35 file1.txt
-r-xr-xr-x  3.0 unx       15 tx stor 20-Jun-08 18:30 file2.txt
2 files, 30 bytes uncompressed, 30 bytes compressed:  0.0%

이제 항목을 수동으로 반복할 수 있지만 이미 이 작업을 수행하고 결과를 인쇄하는 프로그램이 있습니다.

$ zipdetail files.zip

이는 많은 정보를 출력합니다. 왼쪽에는 오프셋이 있고 그 옆에는 각 필드의 이름과 내용이 있습니다.

우리는 단지 각 파일을 원합니다 Ext File Attributes:

$ zipdetails files.zip | egrep "Ext File Attributes|Filename"

001A Filename Length       0009
001E Filename              'file1.txt'
006C Filename Length       0009
0070 Filename              'file2.txt'
00C0 Filename Length       0009
00CA Ext File Attributes   81FF0000
00D2 Filename              'file1.txt'
010F Filename Length       0009
0119 Ext File Attributes   816D0001
0121 Filename              'file2.txt'

이제 ( 오프셋 (십진수 281, 파일 속성 ) 에 대한 파일 속성 ) 을 쓰고 file2.txt바이트 순서를 고려하여 권한을 수정해 보겠습니다 .7770x81FF0000file1.txt0x0119file2.txt

$ printf "\x00\x00\xff\x81" | dd of=files.zip bs=1 seek=281 count=4 conv=notrunc

내용을 다시 나열하십시오.

$ zipinfo files.zip
Archive:  files.zip
Zip file size: 344 bytes, number of entries: 2
-rwxrwxrwx  3.0 unx       15 tx stor 20-Jun-08 18:35 file1.txt
-rwxrwxrwx  3.0 unx       15 tx stor 20-Jun-08 18:30 file2.txt
2 files, 30 bytes uncompressed, 30 bytes compressed:  0.0%

이제 두 파일 모두 동일한 권한을 공유합니다.

자신만의 권한을 설정하고 싶다면 Zip에 있는 기존 파일에서 복사하거나 확인할 수 있습니다.여기.

답변2

그것은 불가능합니다.

ZIP 파일 형식UNIX 시스템에서 파생되지 않으므로 UNIX 관련 권한 지원이 없습니다.

관련 정보