การเป็นเจ้าของและการอนุญาตเป็นสองสิ่งที่แตกต่างกัน -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
tar
จะไม่สามารถทำได้เช่นกัน โปรดบอกฉันว่าสิ่งนี้ได้ผล