Rozpakowanie pliku podczas uzyskiwania poprawnych uprawnień?

17

Rozpakowałem plik na moim serwerze, używając:

unzip filename

Wydaje się jednak, że spowodowało to, że wszystkie pliki mają uprawnienia właściciela / grupy 0 0.

Przesłane przeze mnie pliki były PHPskryptem oprogramowania, więc zastanawiam się, jak prawidłowo ustawiłem uprawnienia podczas rozpakowywania plików i jakie powinny być ustawione?

Brett
źródło

Odpowiedzi:

10

O ile wiem, Zip nie obsługuje zapisywania własności / uprawnień do plików. Możesz spróbować ustawić umask, aby rozpakować pliki z tymi uprawnieniami. Biegać

umask 644

przed unzip.

lawl0r
źródło
Przykro mi, to było spakowane.
Brett,
1
Nie ma znaczenia, czy został stworzony w systemie Windows, czy w * nix. Zip nadal nie obsługuje uprawnień do plików uniksowych. Bez względu na to, gdzie został stworzony.
lawl0r
Tak, wiem .... ale powiedziałeś, że mogę spróbować ustawić umasktak, aby utworzył zip z tymi uprawnieniami; ale nie sądzę, że mogę to zrobić w systemie Windows?
Brett,
Przed rozpakowaniem
lawl0r
8
@ lawl0r tak to robi. Użyj opcji -Z, aby je zobaczyć.
OrangeDog
20

W rzeczywistości niektóre odpowiedzi tutaj są nieprawidłowe. Pliki ZIP mogą mieć również uprawnienia do plików. (*) Możesz wymienić uprawnienia plików w pliku ZIP za pomocą:

unzip -Z

Być może narzędzie użyte do utworzenia pliku ZIP nie zapisało uprawnień lub nie zapisało ich poprawnie.

Jeśli więc sam utworzyłeś plik ZIP , sprawdź narzędzie, w którym utworzyłeś plik ZIP. Być może istnieje sposób na ustawienie uprawnień przed skompresowaniem (jak w przypadku maven) lub zachowuje oryginalne uprawnienia (ale działałoby to tylko w systemie, który obsługuje uprawnienia - tj. Nie w systemie Windows).

Jeśli sam nie utworzyłeś pliku ZIP , jedyną szansą jest ustawienie poprawnych uprawnień po rozpakowaniu, na przykład za pomocą

chmod -R [permissions] [directory]

(*) Używamy tej funkcji w połączeniu z wtyczką montażu maven, w której możesz określić tryb pliku dla plików, które trafiają do pliku ZIP.

David Tanzer
źródło
1
Myślę, że masz rację, ale sposób, w jaki proponujesz odpowiedź, nie jest właściwy. powinieneś skupić się na zapewnieniu dobrej odpowiedzi niż krytykowaniu w nowej ...
Francisco Tapia,
2
@FranciscoTapia Zaktualizowałem swoją odpowiedź (niektóre rzeczy można spróbować), ale zostawię podpowiedź, że inne odpowiedzi są tam niepoprawne. Myślę, że to ważne.
David Tanzer
1
UnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler.w systemie Windows / mingw. Obecnie nie mam dostępu do mojego Linux-a, ale tam też działa -Z. W każdym razie dzięki za podpowiedź!
David Tanzer,
3
@David Tanzer , Twoja odpowiedź jest najlepsza, nawet jeśli nie jest akceptowana. Rzeczywiście, pochodzenie archiwum (np. Windows, Linux itp.) Jest ważne. Testowałem na Linuksie ( Zip 3.0 , UnZip 6.00 ). Po umieszczeniu pliku w archiwum uprawnienia są zapisywane. I są przywracane na rozpakowanym pliku (np. Kiedy plik jest rozpakowywany w systemie Linux). Oczywiście uprawnienia nie zostaną zastosowane podczas rozpakowywania w oknie Windows. To będzie naprawdę fajne widzieć w rozpakuj przełącznika specyficznego (jak smoła „s --no-same-permissions), które nie zachowują uprawnienia i szanuje umask podczas ekstrakcji.
flaz14
1
@DanielF Uprawnienia są dostępne tylko wtedy, gdy program je tam umieszcza, więc jeśli twoje archiwum zostało utworzone w systemie Windows, zipinfo/ unzip -Zmożna tylko zgadywać. Aby sprawdzić, czy uprawnienia istnieją, użyj zipinfo -v/ unzip -Zvi poszukaj „atrybutów plików zewnętrznych innych niż MSDOS”; dwa najbardziej znaczące bajty to uprawnienia UNIX (szesnastkowe, nie ósemkowe!) pod warunkiem, że „system plików lub system operacyjny pochodzenia” to UNIX.
Alex Shpilkin