Giải nén tập tin trong khi nhận được quyền chính xác?


17

Tôi đã giải nén một tập tin trên máy chủ của mình bằng cách sử dụng:

unzip filename

Tuy nhiên, điều này dường như đã gây ra tất cả các tệp có quyền của chủ sở hữu / nhóm 0 0.

Các tệp tôi đã tải lên là một PHPtập lệnh phần mềm, vì vậy tôi tự hỏi làm thế nào để tôi đặt quyền đúng khi giải nén các tệp và chúng nên được đặt thành gì?

Câu trả lời:


10

Zip không hỗ trợ lưu quyền sở hữu / quyền theo như tôi biết. Bạn có thể thử cài đặt umask để giải nén sẽ tạo các tệp có các quyền này. Chạy

umask 644

trước unzip.


Nó thực sự được nén với cửa sổ, xin lỗi.
Brett

1
Không thành vấn đề nếu nó được tạo trên windows hoặc * nix. Zip vẫn không hỗ trợ quyền unix tập tin. Bất kể nơi nào nó đã được tạo ra.
lawl0r

Vâng, tôi biết .... nhưng bạn nói tôi có thể thử thiết lập umaskđể nó sẽ tạo ra zip với các quyền này; Nhưng đừng nghĩ rằng tôi có thể làm điều đó trên windows?
Brett

Trước khi giải nén
lawl0r

8
@ lawl0r đúng vậy. Sử dụng tùy chọn -Z để xem chúng.
OrangeDog

20

Trên thực tế, một số câu trả lời ở đây là không chính xác. Tệp ZIP cũng có thể có quyền truy cập tệp. (*) Bạn có thể liệt kê các quyền của các tệp trong tệp ZIP của mình với:

unzip -Z

Có thể công cụ bạn đã sử dụng để tạo tệp ZIP không lưu trữ quyền hoặc không lưu trữ chúng chính xác.

Vì vậy, nếu bạn tự tạo tệp ZIP , hãy kiểm tra công cụ bạn đã tạo tệp ZIP. Có thể có một cách để đặt quyền trước khi nén (như với maven) hoặc nó giữ nguyên các quyền ban đầu (nhưng điều đó chỉ hoạt động trên một hệ thống hỗ trợ quyền - tức là không có trên Windows).

Nếu bạn không tự tạo tệp ZIP , cơ hội duy nhất của bạn là đặt quyền chính xác sau khi giải nén, ví dụ như với

chmod -R [permissions] [directory]

(*) Chúng tôi sử dụng tính năng đó kết hợp với plugin lắp ráp maven, nơi bạn có thể chỉ định tệpMode cho các tệp đi vào tệp ZIP.


1
Tôi nghĩ bạn đúng, nhưng cách bạn đề xuất câu trả lời thì không đúng. bạn nên tập trung để đưa ra một câu trả lời tốt hơn là chỉ trích trong một câu hỏi mới ...
Francisco Tapia

2
@FranciscoTapia Tôi đã cập nhật câu trả lời của mình (với một số điều người ta có thể thử), nhưng tôi sẽ để lại gợi ý rằng các câu trả lời khác không chính xác trong đó. Tôi nghĩ nó quan trọng.
David Tanzer

1
UnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler.trên Windows / mingw. Tôi hiện không có quyền truy cập vào hộp linux của mình, nhưng ở đó -Z cũng hoạt động. Dù sao, cảm ơn cho gợi ý!
David Tanzer

3
@David Tanzer , câu trả lời của bạn là tốt nhất ngay cả khi nó không được chấp nhận. Thật vậy, nguồn gốc của một kho lưu trữ (ví dụ Windows, Linux, v.v.) rất quan trọng. Tôi đã thử nghiệm trên Linux ( Zip 3.0 , UnZip 6,00 ). Khi một tập tin được đưa vào một kho lưu trữ, các quyền được lưu. Và chúng đang được khôi phục trên tệp được trích xuất (ví dụ: khi tệp được giải nén trên Linux). Rõ ràng, các quyền sẽ không được áp dụng khi giải nén trên hộp Windows. Nó sẽ được thực sự mát mẻ để xem trong unzip một công tắc cụ thể (như tar 's --no-same-permissions) mà không giữ gìn quyền và tôn trọng umask khi giải nén.
flaz14

1
@DanielF Quyền chỉ ở đó nếu chương trình tạo đặt chúng ở đó, vì vậy nếu kho lưu trữ của bạn được tạo trên Windows, zipinfo/ unzip -Zchỉ có thể đoán. Để xem các quyền có ở đó hay không, hãy sử dụng zipinfo -v/ unzip -Zvvà tìm kiếm các thuộc tính tệp bên ngoài không phải là MSDOS. hai byte quan trọng nhất là các quyền UNIX (ở dạng hex, không phải bát phân!) được cung cấp cho hệ thống tập tin hoặc hệ điều hành của bản gốc là UNIX.
Alex Shpilkin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.