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?

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.


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.