การตั้งค่าสถานะ -p (สงวนสิทธิ์) ของ tar อะไรจริง ๆ รักษา?


22

-pธงทำอะไรได้จริงเมื่อทำการสร้างและแยก tarball? มันเป็นrwxสิทธิ์ที่จะรักษา?

เมื่อฉันสร้างhtdocs/tarball ที่เป็นเจ้าของโดย root การแตกไฟล์ลงในเครื่องของฉันเปลี่ยนความเป็นเจ้าของจาก root เป็นผู้ใช้ของฉัน


5
บางทีคุณควรลองแยกไฟล์เก็บถาวรเป็นรูท ไม่สามารถตั้งค่าการอนุญาตสำหรับผู้ใช้รายอื่นในฐานะผู้ใช้ปกติดังนั้นฉันคิดว่าtarจะไม่สามารถทำได้เช่นกัน โปรดบอกฉันว่าสิ่งนี้ได้ผล
Louis Matthijssen

"เครื่องจักรท้องถิ่น" โปรดอธิบายว่าระบบปฏิบัติการนี้มีเครื่องอะไร;)
Rinzwind

บอกเราด้วยว่าระบบไฟล์ที่คุณใช้อยู่ ทั้งแหล่งที่มาและเป้าหมาย
terdon

ที่มา: Red Hat Enterprise Linux Server release 6.5 (Santiago) เป้าหมาย: Ubuntu 13.10 ใช้ทั้งสองGPT
nicoX

หมายเหตุด้านข้าง: tarสงวนสิทธิ์ -pและ--same-owner/ --no-same-owner(ตามคำตอบ) คือการแยกแฟล็ก พวกเขาไม่มีผลในขณะที่เก็บถาวร
Fr0zenFyr

คำตอบ:


19

การเป็นเจ้าของและการอนุญาตเป็นสองสิ่งที่แตกต่างกัน -pธงรักษาสิทธิ์ บนระบบ * nix ผู้ใช้ทั่วไปไม่สามารถเปลี่ยนความเป็นเจ้าของไฟล์เป็นผู้ใช้ที่ไม่ใช่ตัวเอง

ตามที่อธิบายไว้ที่นี่ :

กระบวนการที่มี ID ผู้ใช้ที่มีประสิทธิภาพเท่ากับ ID ผู้ใช้ของไฟล์หรือด้วยสิทธิ์ที่เหมาะสมอาจเปลี่ยนความเป็นเจ้าของไฟล์ได้ หาก _POSIX_CHOWN_RESTRICTED มีผลกับพา ธ :

  • การเปลี่ยน ID ผู้ใช้นั้น จำกัด เฉพาะกระบวนการที่มีสิทธิ์ที่เหมาะสม

  • การเปลี่ยน ID กลุ่มได้รับอนุญาตให้ดำเนินการด้วย ID ผู้ใช้ที่มีประสิทธิภาพเท่ากับ ID ผู้ใช้ของไฟล์ แต่ไม่มีสิทธิ์ที่เหมาะสมหากเจ้าของเท่ากับ ID ผู้ใช้ของไฟล์หรือ (uid_t) -1 และกลุ่มเท่ากับ ไม่ว่าจะเป็น ID กลุ่มที่มีประสิทธิภาพของกระบวนการโทรหรือรหัสกลุ่มเสริมอย่างใดอย่างหนึ่ง

เหตุผลที่อยู่เบื้องหลังนี้ได้รับการอธิบายอย่างชัดเจนโดยใน @Gilles นี้ Unix และ Linux คำตอบ:

เหตุผลสำหรับข้อ จำกัด นี้คือการให้ไฟล์แก่ผู้ใช้รายอื่นสามารถอนุญาตให้สิ่งที่ไม่ดีเกิดขึ้นได้ในเรื่องแปลก แต่ก็ยังเป็นสถานการณ์ที่สำคัญ ตัวอย่างเช่น:

  • หากระบบเปิดใช้งานโควต้าดิสก์อลิซสามารถสร้างไฟล์ที่เขียนได้ทั่วโลกภายใต้ไดเรกทอรีที่เธอสามารถเข้าถึงได้เท่านั้น (ดังนั้นจึงไม่มีใครสามารถเข้าถึงไดเรกทอรีที่สามารถเขียนได้ทั่วโลก) จากนั้นเรียกใช้ chown เพื่อทำให้ไฟล์นั้นเป็นของบิลผู้ใช้รายอื่น . ไฟล์จะนับรวมอยู่ในโควต้าดิสก์ของ Bill ถึงแม้ว่า Alice เท่านั้นที่สามารถใช้ไฟล์ได้
  • ถ้าอลิซมอบไฟล์ให้ Bill ไม่มีร่องรอยว่า Bill ไม่ได้สร้างไฟล์นั้น นี่อาจเป็นปัญหาหากไฟล์นั้นมีข้อมูลที่ผิดกฎหมายหรือเป็นอันตรายต่อข้อมูลอื่น
  • บางโปรแกรมต้องการให้ไฟล์อินพุตเป็นของผู้ใช้เฉพาะเพื่อตรวจสอบสิทธิ์คำขอ (เช่นไฟล์มีคำแนะนำบางอย่างที่โปรแกรมจะทำงานในนามของผู้ใช้นั้น) นี่ไม่ใช่การออกแบบที่ปลอดภัยเพราะแม้ว่า Bill จะสร้างไฟล์ที่มีคำแนะนำที่ถูกต้องทางไวยากรณ์เขาอาจไม่ได้ตั้งใจที่จะใช้มันในเวลาใดเวลาหนึ่ง อย่างไรก็ตามการอนุญาตให้อลิซสร้างไฟล์ที่มีเนื้อหาตามอำเภอใจและนำมาเป็นข้อมูลจาก Bill สามารถทำให้สิ่งเลวร้ายลงได้

ดังนั้นแม้ว่าคุณจะใช้การ--same-ownerตั้งค่าสถานะของ tar คุณจะยังคงต้องการแยกไฟล์rootเพื่อรักษาความเป็นเจ้าของ การตั้งค่าสถานะนั้นจะเป็นค่าเริ่มต้นสำหรับrootดังนั้นสิ่งที่คุณต้องการคือ:

sudo tar xpf foo.tgz

9

มีอีก 2 ตัวเลือกสำหรับน้ำมันดินที่น่าสนใจ:

--same-owner
       try extracting files with the same ownership as exists in the ar‐
       chive (default for superuser)

--no-same-owner
       extract files as yourself (**default for ordinary users**)

อันที่สองคือค่าเริ่มต้นเพื่อให้คุณสามารถเพิ่ม--same-ownerเพื่อบันทึกผู้ใช้ของคุณ sudoคุณอาจจะต้องทำเช่นนี้กับ

นอกจากนั้น: สิ่งนี้จะทำงานได้กับระบบที่รองรับ POSIX เท่านั้น และระบบปฏิบัติการอื่นที่ไม่ใช่ Ubuntu อาจไม่มีตัวเลือกเหล่านี้ 2 ตัว (ไม่ใช่มาตรฐาน)


3
การ--same-ownerไม่ทำงานสำหรับผู้ใช้ที่ไม่ใช่รูทพวกเขาไม่มีสิทธิ์ตั้งค่าความเป็นเจ้าของให้กับใครนอกจากตัวเอง ที่กำหนดโดยPOSIX
terdon

4

หากต้องการสงวนเจ้าของให้รันในฐานะรูทหรือใช้แฟล็ก --same-owner ถัดจากแฟล็ก -p เมื่อคลายบีบอัด


3
มันจะต้องถูกเรียกใช้เป็นรูทในทุกกรณี ผู้ใช้ที่ไม่ใช่รูทไม่สามารถเปลี่ยนความเป็นเจ้าของไฟล์เป็นผู้ใช้รายอื่น
terdon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.