Berechtigungen beim Zippen beibehalten

Berechtigungen beim Zippen beibehalten

Wie kann ich die Berechtigungen beim Komprimieren eines Ordners mit beibehalten zip?

Ich weiß, wie man symbolische Links beibehält. --symlinksGibt es eine ähnliche Option für Berechtigungen?

Antwort1

info-zip (das Programm, das Sie wahrscheinlich verwenden) kann Berechtigungen speichern/wiederherstellen fürUnix-ähnliche Systeme.

Es wird erwähnt fürVerzeichnisseimHandbuchseite:

Datum, Uhrzeit und Berechtigungen gespeicherter Verzeichnisse werden nur unter Unix wiederhergestellt. (Unter Windows NT und Nachfolgern werden jetzt Zeitstempel wiederhergestellt.)

Dateiberechtigungen für Lesen/Schreiben/Ausführen werden gespeichert/wiederhergestellt. Eine schnelle Überprüfung (Zip 3.0) zeigt jedoch, dass Setuid-/Setgid-Berechtigungen nicht erhalten bleiben.

Die Funktion ist nicht optional. Zip/Unzip führt dies einfach aus, wenn die Möglichkeit dazu besteht.

Auf anderen Systemen ist die Möglichkeit zum Speichern/Wiederherstellen von Berechtigungen weniger umfassend. Unter Windows verwendet die ZIP-Datei beispielsweise die Berechtigungseinstellungen aus dem%temp%Ordner.

Weiterführende Literatur:

Antwort2

Info-Zip 3.0 UNTERSTÜTZT das Beibehalten von UNIX-Berechtigungen und UID/GID-Eigentümerdaten für Dateien/Verzeichnisse. zipspeichert diese standardmäßig, aber Sie müssen unzipsie auf besondere Weise wiederherstellen:

  • unzipmuss mit der Flagge verwendet werden -X.
  • unzipmuss ausgeführt werden, um rootdie UID/GID der Dateien/Verzeichnisse festzulegen. Wenn Sie es als normaler Benutzer ausführen, ist die UID immer die des aktuellen Benutzers und die GID wird NUR wiederhergestellt, WENN der aktuelle Benutzer zu dieser Gruppe gehört.

Beispiel:

# 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

Hinweis: Sie können es auch unzipmit dem -KFlag verwenden, um auch SUID/SGID/Sticky Bits wiederherzustellen.

Antwort3

Kurze Antwort: Das geht nicht! zipDie Dateiberechtigungen bleiben nicht erhalten.

Lesen Sie mehr dazuHierUndHier.

Wenn Sie die Berechtigungen beibehalten müssen, ziehen Sie stattdessen die Verwendung tarmit dem --preserve-permissionsSchalter in Erwägung.

verwandte Informationen