การใช้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
และมอบความสามารถให้กับสำเนานี้