การขยายไฟล์ในขณะที่ได้รับสิทธิ์ที่ถูกต้อง?


17

ฉันคลายซิปไฟล์บนเซิร์ฟเวอร์โดยใช้:

unzip filename

อย่างไรก็ตามเรื่องนี้ดูเหมือนว่าจะมีสาเหตุมาจากไฟล์ทั้งหมดที่มีสิทธิ์ของเจ้าของ / 0 0กลุ่ม

ไฟล์ที่ฉันอัปโหลดเป็นPHPสคริปต์ซอฟต์แวร์ดังนั้นฉันสงสัยว่าฉันจะตั้งค่าการอนุญาตอย่างถูกต้องได้อย่างไรเมื่อทำการคลายไฟล์และสิ่งที่ควรจะตั้งไว้คืออะไร?

คำตอบ:


10

Zip ไม่สนับสนุนการบันทึกการเป็นเจ้าของไฟล์ / การอนุญาตเท่าที่ฉันรู้ คุณสามารถลองตั้งค่า umask ดังนั้นการคลายซิปควรสร้างไฟล์ด้วยสิทธิ์เหล่านี้ วิ่ง

umask 644

unzipก่อนที่


จริง ๆ แล้วมันเป็นซิปหน้าต่างขออภัย
Brett

1
ไม่สำคัญว่าจะถูกสร้างขึ้นบน windows หรือ * nix Zip ยังไม่รองรับการอนุญาตไฟล์ unix ไม่ว่าจะสร้างที่ไหน
lawl0r

ใช่ฉันรู้ .... แต่คุณบอกว่าฉันสามารถลองตั้งค่าumaskดังนั้นมันจะสร้างรหัสไปรษณีย์ด้วยสิทธิ์เหล่านี้ แต่ไม่คิดว่าฉันสามารถทำได้บน windows?
Brett

ก่อนเปิดเครื่องรูด
lawl0r

8
@ lawl0r ใช่แล้ว ใช้ตัวเลือก -Z เพื่อดูพวกเขา
OrangeDog

20

ที่จริงแล้วคำตอบบางอย่างที่นี่ไม่ถูกต้อง ไฟล์ ZIP สามารถมีสิทธิ์ของไฟล์ได้ (*) คุณสามารถแสดงรายการการอนุญาตของไฟล์ในไฟล์ ZIP ของคุณด้วย:

unzip -Z

บางทีเครื่องมือที่คุณใช้สร้างไฟล์ ZIP อาจไม่ได้จัดเก็บสิทธิ์หรือไม่ได้จัดเก็บไว้อย่างถูกต้อง

ดังนั้นหากคุณสร้างไฟล์ ZIP ด้วยตัวเองให้ตรวจสอบเครื่องมือที่คุณสร้างไฟล์ ZIP ด้วย อาจมีวิธีตั้งค่าการอนุญาตก่อนที่จะซิป (เช่นกับ Maven) หรือรักษาสิทธิ์ดั้งเดิมไว้ (แต่จะใช้ได้เฉพาะกับระบบที่รองรับการอนุญาตเท่านั้น - ไม่ใช่ใน Windows)

หากคุณไม่ได้สร้างไฟล์ ZIP ด้วยตัวเองโอกาสเดียวของคุณคือการตั้งค่าการอนุญาตที่ถูกต้องหลังจากการคลายซิปตัวอย่างเช่น

chmod -R [permissions] [directory]

(*) เราใช้คุณลักษณะนั้นร่วมกับปลั๊กอินชุดประกอบ maven ซึ่งคุณสามารถระบุไฟล์โหมดสำหรับไฟล์ที่เข้าสู่ไฟล์ ZIP


1
ฉันคิดว่าคุณพูดถูก แต่วิธีที่คุณเสนอคำตอบมันไม่ถูกต้อง คุณควรมุ่งเน้นที่จะให้คำตอบที่ดีกว่าที่จะวิพากษ์วิจารณ์ในคำตอบใหม่ ...
Francisco Tapia

2
@ FranciscoTapia ฉันได้อัปเดตคำตอบของฉัน (มีบางสิ่งที่สามารถลองได้) แต่ฉันจะทิ้งคำใบ้ไว้ว่าคำตอบอื่น ๆ นั้นไม่ถูกต้อง ฉันคิดว่ามันสำคัญ
David Tanzer

1
UnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler.บน Windows / mingw ขณะนี้ฉันไม่สามารถเข้าถึงกล่อง linux ของฉันได้ แต่ที่ -Z ก็ใช้ได้เช่นกัน อย่างไรก็ตามขอบคุณสำหรับคำใบ้!
David Tanzer

3
@ David Tanzerคำตอบของคุณดีที่สุดแม้จะไม่ได้รับการตอบรับก็ตาม แน่นอนที่มาของไฟล์เก็บถาวร (เช่น Windows, Linux และอื่น ๆ ) เป็นสิ่งสำคัญ ฉันทดสอบบน Linux ( Zip 3.0 , UnZip 6.00 ) เมื่อไฟล์ถูกวางลงในไฟล์เก็บถาวรสิทธิ์จะถูกบันทึกไว้ และไฟล์เหล่านั้นจะถูกกู้คืนในไฟล์ที่คลายบีบอัด (เช่นเมื่อไฟล์ถูกแตกบน Linux) เห็นได้ชัดว่าสิทธิ์จะไม่ถูกนำมาใช้เมื่อแยกในกล่อง Windows มันจะเจ๋งจริง ๆ ที่เห็นในunzipสวิตช์เฉพาะ (เช่นtarของ--no-same-permissions) ที่ไม่รักษาสิทธิ์และเคารพumaskในขณะที่แยก
flaz14

1
@DanielF การอนุญาตจะอยู่ที่นั่นก็ต่อเมื่อโปรแกรมการสร้างวางไว้ที่นั่นดังนั้นหากการเก็บถาวรของคุณถูกสร้างขึ้นบน Windows zipinfo/ unzip -Zสามารถคาดเดาได้เท่านั้น หากต้องการดูว่ามีการอนุญาตหรือไม่ให้ใช้zipinfo -v/ unzip -Zvและค้นหา“ non-MSDOS external file attributes”; ไบต์ที่สำคัญที่สุดสองรายการคือสิทธิ์ UNIX (เป็นฐานสิบหกไม่ใช่ฐานแปด!) หากระบบไฟล์ "หรือระบบปฏิบัติการต้นทาง" เป็น UNIX
Alex Shpilkin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.