Розпакуйте файл, отримуючи правильні дозволи?


16

Я розпакував файл на своєму сервері, використовуючи:

unzip filename

Однак це, мабуть, спричинило всі файли, що мають права власника / групи 0 0.

Файли, які я завантажував, були PHPпрограмним сценарієм, тому мені цікаво, як я правильно встановив дозволи при розпакуванні файлів і на що їх слід встановити?

Відповіді:


9

Наскільки я знаю, Zip не підтримує збереження власності / дозволу на файл. Ви можете спробувати встановити umask, щоб розпакувати слід створити файли з цими дозволами. Біжи

umask 644

раніше unzip.


Це насправді було застебнено з вікном, вибачте.
Бретт

1
Не має значення, чи створено він на windows або * nix. Zip досі не підтримує права доступу до файлу unix. Незалежно від того, де він створений.
lawl0r

Так, я знаю .... але ви сказали, що я можу спробувати встановити umaskтак, що це створить блискавку з цими дозволами; але не думаю, що я можу це зробити на Windows?
Бретт

До розпакування
lawl0r

8
@ lawl0r так, це так. Використовуйте опцію -Z, щоб побачити їх.
OrangeDog

20

Насправді деякі відповіді тут невірні. ZIP-файли також можуть мати дозволи на файли. (*) Ви можете перелічити дозволи для файлів у вашому ZIP-файлі за допомогою:

unzip -Z

Можливо, інструмент, який ви використовували для створення ZIP-файлу, не зберігав дозволи або неправильно зберігав їх.

Отже, якщо ви створили ZIP-файл самостійно , перевірте інструмент, з яким ви створили ZIP-файл. Можливо, існує спосіб встановлення дозволів перед завантаженням (наприклад, з maven), або він зберігає оригінальні дозволи (але це працює лише в системі, яка підтримує дозволи - тобто не в Windows).

Якщо ви не створили ZIP-файл самостійно , ваш єдиний шанс - встановити правильні дозволи після розпакування, наприклад, за допомогою

chmod -R [permissions] [directory]

(*) Ми використовуємо цю функцію в поєднанні з плагіном збірки Maven, де ви можете вказати fileMode для файлів, що входять у файл ZIP.


1
я думаю, ти маєш рацію, але спосіб, як ти пропонуєш відповідь, невірний. вам слід зосередитись на тому, щоб дати кращу відповідь, ніж критикувати нову ...
Франциско Тапія

2
@FranciscoTapia Я оновив свою відповідь (з деякими речами можна було б спробувати), але залишу натяк, що інші відповіді є невірними. Я думаю, що це важливо.
Девід Танзер

1
UnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler.на Windows / mingw. Наразі у мене немає доступу до моєї скриньки linux, але там також працює -Z. У будь-якому випадку, дякую за підказку!
Девід Танзер

3
@David Tanzer , ваша відповідь найкраща навіть тоді, коли вона не прийнята. Дійсно, важливим є походження архіву (наприклад, Windows, Linux тощо). Я тестував на Linux ( Zip 3.0 , UnZip 6.00 ). Після того, як файл поміщено в архів, дозволи зберігаються. І вони відновлюються на вилученому файлі (наприклад, коли файл витягується в Linux). Очевидно, дозволи не застосовуватимуться під час вилучення у вікні Windows. Це буде дійсно здорово бачити в розпакувати конкретний перемикач (наприклад , дьоготь «s --no-same-permissions) , яка зберігає права і поважає UMASK при добуванні.
flaz14

1
@DanielF Дозволи мають лише те, якщо програма, що створює, розмістила їх там, тож якщо ваш архів створений у Windows, zipinfo/ unzip -Zможна лише здогадуватися. Щоб дізнатись, чи існують дозволи, використовуйте zipinfo -v/ unzip -Zvта шукайте "атрибути зовнішнього файлу, що не MSDOS"; два найзначніші байти - це дозволи UNIX (у шістнадцятковому, а не восьмім!) за умови, що "файлова система або операційна система походження" є UNIX.
Олексій Шпілкін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.