การใช้setcapเพื่อให้การอนุญาตเพิ่มเติมแก่ไบนารีควรเขียนการอนุญาตใหม่ที่ใดที่หนึ่งบนที่เก็บข้อมูลหรือในหน่วยความจำที่เก็บไว้ที่ไหน
การใช้lsofตามที่ใช้ไม่ได้เนื่องจากกระบวนการหายไปเร็วเกินไป
การใช้setcapเพื่อให้การอนุญาตเพิ่มเติมแก่ไบนารีควรเขียนการอนุญาตใหม่ที่ใดที่หนึ่งบนที่เก็บข้อมูลหรือในหน่วยความจำที่เก็บไว้ที่ไหน
การใช้lsofตามที่ใช้ไม่ได้เนื่องจากกระบวนการหายไปเร็วเกินไป
คำตอบ:
สิทธิ์เพิ่มเติมเช่นรายการควบคุมการเข้าถึงที่กำหนดโดยsetfaclและความสามารถในการตั้งค่าสถานะsetcapถูกเก็บไว้ในสถานที่เดียวกันกับสิทธิ์ดั้งเดิมและตั้งค่า [ug] id id ที่กำหนดโดยchmod: ใน inode ของไฟล์
(จริง ๆ แล้วอาจถูกเก็บไว้ในบล็อกที่แยกต่างหากบนดิสก์เนื่องจาก inode มีขนาดคงที่ซึ่งมีที่ว่างสำหรับบิตการอนุญาตแบบดั้งเดิม แต่ไม่ใช่สำหรับสิทธิ์เพิ่มเติมแบบขยายที่อาจเกิดขึ้น แต่นั่นสำคัญเฉพาะในกรณีที่หายากเช่นต้อง การดูแลที่setcapอาจใช้พื้นที่ดิสก์ไม่เพียงพอ แต่ก็chmodอาจมีพื้นที่ดิสก์เหลืออยู่บนระบบที่ใช้การขจัดข้อมูลซ้ำซ้อน!)
GNU ls ไม่แสดงแอตทริบิวต์ setcap ของไฟล์ getcapคุณสามารถแสดงพวกเขาด้วย คุณสามารถแสดงรายการคุณสมบัติเพิ่มเติมทั้งหมดด้วยgetfattr -d -m -; แอ็ตทริบิวต์ setcap ถูกเรียกใช้security.capabilityและถูกเข้ารหัสในรูปแบบไบนารีซึ่งgetcapถอดรหัสให้คุณ
setcap ตั้งค่าความสามารถของไฟล์ที่เก็บไว้ในแอตทริบิวต์เพิ่มเติมของระบบไฟล์ สิ่งเหล่านี้จะอธิบายในman 7 capabilities:
ชุดความสามารถของไฟล์จะถูกเก็บไว้ในแอ็ตทริบิวต์ส่วนขยาย (ดูที่ setxattr (2)) ชื่อ security.capability
คุณสามารถตรวจสอบความสามารถของกระบวนการทำงานโดยการตรวจสอบCapInh / CapPrm / CapEff/proc/PID/statusฟิลด์ใน ดูคำตอบของฉันที่ " วิธีการตั้งค่าความสามารถด้วยคำสั่ง setcap? " สำหรับคำอธิบายเกี่ยวกับวิธีการใช้ความสามารถกับกระบวนการที่ exec
/usr/bin/sleepและมอบความสามารถให้กับสำเนานี้