圧縮中に権限を保持する

圧縮中に権限を保持する

を使用してフォルダーを圧縮しながら権限を保持するにはどうすればよいですかzip?

シンボリックリンクを保存する方法は知っていますが、--symlinks権限に関しても同様のオプションがありますか?

答え1

info-zip(おそらくあなたが使用しているプログラム)は、権限を保存/復元することができます。ユニックスのようなシステム。

それは、ディレクトリの中にマニュアルページ:

保存されたディレクトリの日付、時刻、および権限は、Unix 以外では復元されません。(Windows NT および後継システムでは、タイムスタンプが復元されるようになりました。)

読み取り/書き込み/実行のファイル権限は保存/復元されます。ただし、簡単なチェック (zip 3.0) では、setuid/setgid 権限は保持されないことがわかります。

この機能はオプションではありません。zip/unzip は、可能な場合にこれを実行します。

他のシステムでは、権限の保存/復元機能は完全ではありません。たとえば、Windowsでは、ZIPファイルは%temp%フォルダ。

参考文献:

答え2

Info-Zip 3.0 は、ファイル/ディレクトリの UNIX 権限と UID/GID 所有権データの保存をサポートします。zipこれらはデフォルトで保存されますが、復元するには特別な方法を使用する必要がありますunzip

  • unzipフラグと一緒に使用する必要があります-X
  • unzipファイル/ディレクトリの UID/GID を設定するには、として実行する必要がありますroot。通常のユーザーとして実行すると、UID は常に現在のユーザーのものになり、GID は現在のユーザーがそのグループに属している場合にのみ復元されます。

例:

# zip -v | head -2 | tail -1
This is Zip 3.0 (July 5th 2008), by Info-ZIP.

# unzip -v | head -1
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.

# touch file1
# mkdir dir1
# chmod 000 file1
# chown 1111 dir1
# ls -ld file1 dir1
drwxr-xr-x 2 1111 root 40 mar 28 20:12 dir1
---------- 1 root root  0 mar 28 20:12 file1

# zip files.zip file1 dir1
  adding: file1 (stored 0%)
  adding: dir1/ (stored 0%)

# unzip -X files.zip -d extracted
Archive:  files.zip
 extracting: extracted/file1         
   creating: extracted/dir1/

# ls -l extracted
total 0
drwxr-xr-x 2 1111 root 40 mar 28 20:12 dir1
---------- 1 root root  0 mar 28 20:12 file1

注: フラグと一緒unzipに使用して-K、SUID/SGID/スティッキー ビットも復元できます。

答え3

短い答え: できません!zipファイルのアクセス許可は保持されません。

これについてもっと読むここそしてここ

権限を保持する必要がある場合は、代わりにスイッチtarを使用することを検討してください--preserve-permissions

関連情報