여기 물어보고 싶어서 몇명한테 물어봤는데.. 우리는 국제적인 회사로부터 zip 형식의 디자인 작업 파일을 받았습니다. 터미널에서 파일의 압축을 풀기 위해 스크립트를 실행할 때 zip 오류가 발생합니다.오직리눅스에서. 우리는 하루 종일 7zip과 winzip을 사용하여 파일을 테스트하고, 압축을 풀고, 탐색하고, 수정할 수 있습니다. 또한 7zip 또는 Winzip이 실행 중일 때는 보안을 나타내지 않습니다.
터미널 오류:
compressed WinNT security missing (-7 bytes)
여기저기 찾아보았지만 해결책이나 수정 사항을 찾지 못했습니다. 동료가 제안했는데,
"다른 언어 버전의 Unzip을 사용하면 파일을 추출하는 데 필요한 유니코드가 변경될 수 있습니다. 올바른 코드가 없으면 들어갈 수 없는 비밀번호라고 생각하세요."
Ubuntu 터미널에서 압축을 풀 때 오류가 나타나는 이유는 무엇입니까?
답변1
나는 소스 코드를 조사했습니다(Ubuntu raring 60에서 압축을 풀었지만 이전 버전과 큰 차이는 없을 것 같습니다). 문제의 오류가 TruncNTSD
호출되어 내부적으로 정의됩니다 extract.c:295
. 예상한 대로 이 메시지의 대부분의 사용은 win32/win32.c
NTFS 보안 데이터를 참조하지만, win32 시스템 외부에서 이 오류가 발생해야 하는 코드 위치는 단 한 곳뿐입니다(Ubuntu에서 보고된 대로).
문제가 되는 영역( extract.c:2118
)은 이라는 함수에 있습니다 TestExtraField
. Wikipedia에서는 다음과 같이 설명합니다.
.ZIP 파일 형식에는 파일 헤더에 추가 필드 기능이 포함되어 있습니다. 이 기능은 기존 .ZIP 사양에 의해 정의되지 않은 추가 데이터를 저장하는 데 사용할 수 있으며 필드를 인식하지 못하는 규정 준수 아카이버가 이러한 필드를 안전하게 건너뛸 수 있도록 해줍니다.
이는 실제로 NT가 보안 정보를 저장하는 방법입니다. 중요한 것은 이 함수가 오류 설명을 인쇄한다는 것입니다.
/* we know the regular compressed file data tested out OK, or else we
* wouldn't be here ==> print filename if any extra-field errors found
*/
따라서 파일 자체의 압축을 풀 수 있다면 이 오류는 무시해도 무방할 것 같습니다. 더 자세히 살펴보면 이 오류가 발생하는 win32 코드 외부의 유일한 위치(압축 해제 시 끔찍한 오류가 아니라고 가정)는 test_compr_eb:extract.c:2227
코드를 보면 다음과 같은 경우에 발생하는 것으로 보입니다.압축된 파일에는 압축됨으로 표시된 관련 추가 필드가 있지만 필드 데이터의 길이는 0바이트입니다.
어떻게 이런 일이 일어났는지 모르겠습니다. zip 파일을 생성한 프로그램이 실수로 이 작업을 수행했을 수도 있고, 추가 필드가 보안 소프트웨어에 의해 필터링되었을 수도 있습니다. 그럼에도 불구하고 이는 무해해 보이며 아마도 NT 보안과 전혀 관련이 없을 것입니다. 간단히 말해서, 파일이 정상적으로 압축 해제된다면,무시해도 전혀 안전합니다.