Поддерживать разрешения файлов и папок внутри архивов
Я занимаюсь упаковкой и распространением программы, созданной для Windows, Linux и Mac. Я планирую поместить файлы и папки в архивы zip.
Если я задаю правильные права доступа к папке и файлу, а затем сжимаю их в zip и перераспределяю их, будут ли поддерживаться эти разрешения, когда пользователь извлекает их в системах Linux или Mac? Или они должны сами устанавливать разрешения?
Ответы
Ответ 1
zip
не сохраняет права доступа к файлам в архиве.
Архивы tar
сохранят права доступа к файлам в Linux и OS X. Я понятия не имею, что происходит в Windows. Если вы можете проверить что-то в Windows, и это работает, это, вероятно, лучший выбор. Вероятно, это зависит от того, какой инструмент люди используют для распаковки архивов.
Другой вариант - создать установщик, хотя существует несколько некоммерческих возможностей для создания кросс-платформенных установщиков. Википедия имеет список.
Ответ 2
Установщик - ваш лучший вариант здесь.
Позволяет мне объяснить немного лучше, почему.
Windows имеет следующие разрешения:
Modify
Read & Execute
Read
Write
которые назначены группам или именам пользователей,
Системы на базе Unix имеют:
Read
Write
Execute
Что может быть назначено владельцу, группе и другим пользователям.
Вы можете видеть, что трудно сопоставить права доступа от одной системы к другой, поскольку файловые системы обрабатывают разрешения по-разному.
Однако некоторые zip-утилиты, такие как Info-Zip, поддерживают функции файловой системы на основе Unix, такие как идентификаторы пользователей и групп, разрешения файлов и поддержку символических ссылок. Он также поддерживает разрешения файловой системы NTFS и будет пытаться перевести с разрешения NTFS на разрешения Unix или наоборот при извлечении файлов. Это может привести к потенциально непреднамеренным сочетаниям, например..exe, создаваемые на томах NTFS, с запрещенным разрешением на выполнение. *
Если вы планируете распространять свою программу, установщик действительно является вашим лучшим решением.
* Из википедии: Zip (формат файла)