ここで尋ねたいと思って何人か尋ねましたが、私たちは国際的な会社からzip形式のデザイン作業ファイルを受け取りました。端末でファイルを解凍するためにスクリプトを実行すると、zipエラーが発生します。ただLinuxで。私たちは一日中7zipとwinzipを使ってファイルをテストし、解凍、閲覧、修正することができます。また、7zipまたはWinzipが実行されている場合はセキュリティを示しません。
端末エラー:
compressed WinNT security missing (-7 bytes)
あちこちを見つけましたが、解決策や修正を見つけることができませんでした。同僚が提案したが、
「他の言語バージョンのUnzipを使用すると、ファイルを抽出するために必要なUnicodeが変更される可能性があります。正しいコードがないと入力できないパスワードだと思います。」
Ubuntu端末で解凍するとエラーが表示されるのはなぜですか?
答え1
私はソースコードを調べました(Ubuntu raring 60で解凍しましたが、以前のバージョンと大きな違いはないようです)。問題のエラーがTruncNTSD
呼び出され、内部的に定義されますextract.c:295
。予想通り、このメッセージのほとんどの使用はwin32/win32.c
NTFSセキュリティデータを参照していますが、win32システムの外部でこのエラーが発生する必要があるコードの場所は1つだけです(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セキュリティとはまったく関係がないでしょう。簡単に言えば、ファイルが正常に解凍された場合、無視しても全く安全です。