ผู้ใช้ที่ไม่มีสิทธิใช้งาน (ไม่ใช่รูท) ไม่สามารถchown
ไฟล์ไปยังชื่อผู้ใช้อื่น หากต้องการใช้chown
ผู้ใช้จะต้องมีสิทธิ์ของผู้ใช้เป้าหมาย กล่าวอีกนัยหนึ่งroot
สามารถให้ไฟล์กับผู้ใช้รายอื่นเท่านั้น
ตามที่อธิบายไว้ที่นี่ (ขอบคุณ @slhck):
กระบวนการที่มี ID ผู้ใช้ที่มีประสิทธิภาพเท่ากับ ID ผู้ใช้ของไฟล์หรือด้วยสิทธิ์ที่เหมาะสมอาจเปลี่ยนความเป็นเจ้าของไฟล์ได้ หาก _POSIX_CHOWN_RESTRICTED มีผลกับพา ธ :
การเปลี่ยน ID ผู้ใช้นั้น จำกัด เฉพาะกระบวนการที่มีสิทธิ์ที่เหมาะสม
การเปลี่ยน ID กลุ่มได้รับอนุญาตให้ดำเนินการด้วย ID ผู้ใช้ที่มีประสิทธิภาพเท่ากับ ID ผู้ใช้ของไฟล์ แต่ไม่มีสิทธิ์ที่เหมาะสมหากเจ้าของเท่ากับ ID ผู้ใช้ของไฟล์หรือ (uid_t) -1 และกลุ่มเท่ากับ ไม่ว่าจะเป็น ID กลุ่มที่มีประสิทธิภาพของกระบวนการโทรหรือรหัสกลุ่มเสริมอย่างใดอย่างหนึ่ง
เหตุผลที่อยู่เบื้องหลังนี้ได้รับการอธิบายอย่างชัดเจนโดย@Gillesในนี้ Unix และ Linux คำตอบ:
เหตุผลสำหรับข้อ จำกัด นี้คือการให้ไฟล์แก่ผู้ใช้รายอื่นสามารถอนุญาตให้สิ่งที่ไม่ดีเกิดขึ้นได้ในเรื่องแปลก แต่ก็ยังเป็นสถานการณ์ที่สำคัญ ตัวอย่างเช่น:
- หากระบบเปิดใช้งานโควต้าดิสก์อลิซสามารถสร้างไฟล์ที่เขียนได้ทั่วโลกภายใต้ไดเรกทอรีที่เธอสามารถเข้าถึงได้เท่านั้น (ดังนั้นไม่มีใครสามารถเข้าถึงไฟล์ที่สามารถเขียนได้ในไดเรกทอรี) จากนั้นเรียกใช้ chown เพื่อทำให้ไฟล์นั้นเป็นของ บิลผู้ใช้รายอื่น ไฟล์จะนับรวมอยู่ในโควต้าดิสก์ของ Bill ถึงแม้ว่า Alice เท่านั้นที่สามารถใช้ไฟล์ได้
- ถ้าอลิซมอบไฟล์ให้ Bill ไม่มีร่องรอยว่า Bill ไม่ได้สร้างไฟล์นั้น นี่อาจเป็นปัญหาหากไฟล์นั้นมีข้อมูลที่ผิดกฎหมายหรือเป็นอันตรายต่อข้อมูลอื่น
- บางโปรแกรมต้องการให้ไฟล์อินพุตเป็นของผู้ใช้เฉพาะเพื่อตรวจสอบสิทธิ์คำขอ (เช่นไฟล์มีคำแนะนำบางอย่างที่โปรแกรมจะทำงานในนามของผู้ใช้นั้น) นี่ไม่ใช่การออกแบบที่ปลอดภัยเพราะแม้ว่า Bill จะสร้างไฟล์ที่มีคำแนะนำที่ถูกต้องทางไวยากรณ์เขาอาจไม่ได้ตั้งใจที่จะใช้มันในเวลาใดเวลาหนึ่ง อย่างไรก็ตามการอนุญาตให้อลิซสร้างไฟล์ที่มีเนื้อหาตามอำเภอใจและนำมาเป็นข้อมูลจาก Bill สามารถทำให้สิ่งเลวร้ายลงได้