Wie kann ich die Berechtigungen beim Komprimieren eines Ordners mit beibehalten zip
?
Ich weiß, wie man symbolische Links beibehält. --symlinks
Gibt 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. zip
speichert diese standardmäßig, aber Sie müssen unzip
sie auf besondere Weise wiederherstellen:
unzip
muss mit der Flagge verwendet werden-X
.unzip
muss ausgeführt werden, umroot
die 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 unzip
mit dem -K
Flag verwenden, um auch SUID/SGID/Sticky Bits wiederherzustellen.