เมื่อใช้ setcap การอนุญาตจะถูกเก็บไว้ที่ไหน?


11

การใช้setcapเพื่อให้การอนุญาตเพิ่มเติมแก่ไบนารีควรเขียนการอนุญาตใหม่ที่ใดที่หนึ่งบนที่เก็บข้อมูลหรือในหน่วยความจำที่เก็บไว้ที่ไหน

การใช้lsofตามที่ใช้ไม่ได้เนื่องจากกระบวนการหายไปเร็วเกินไป


ใช้กระบวนการอื่น ทำสำเนา/usr/bin/sleepและมอบความสามารถให้กับสำเนานี้
Hauke ​​Laging

คำตอบ:


9

สิทธิ์เพิ่มเติมเช่นรายการควบคุมการเข้าถึงที่กำหนดโดยsetfaclและความสามารถในการตั้งค่าสถานะsetcapถูกเก็บไว้ในสถานที่เดียวกันกับสิทธิ์ดั้งเดิมและตั้งค่า [ug] id id ที่กำหนดโดยchmod: ใน inode ของไฟล์

(จริง ๆ แล้วอาจถูกเก็บไว้ในบล็อกที่แยกต่างหากบนดิสก์เนื่องจาก inode มีขนาดคงที่ซึ่งมีที่ว่างสำหรับบิตการอนุญาตแบบดั้งเดิม แต่ไม่ใช่สำหรับสิทธิ์เพิ่มเติมแบบขยายที่อาจเกิดขึ้น แต่นั่นสำคัญเฉพาะในกรณีที่หายากเช่นต้อง การดูแลที่setcapอาจใช้พื้นที่ดิสก์ไม่เพียงพอ แต่ก็chmodอาจมีพื้นที่ดิสก์เหลืออยู่บนระบบที่ใช้การขจัดข้อมูลซ้ำซ้อน!)

GNU ls ไม่แสดงแอตทริบิวต์ setcap ของไฟล์ getcapคุณสามารถแสดงพวกเขาด้วย คุณสามารถแสดงรายการคุณสมบัติเพิ่มเติมทั้งหมดด้วยgetfattr -d -m -; แอ็ตทริบิวต์ setcap ถูกเรียกใช้security.capabilityและถูกเข้ารหัสในรูปแบบไบนารีซึ่งgetcapถอดรหัสให้คุณ


4

setcap ตั้งค่าความสามารถของไฟล์ที่เก็บไว้ในแอตทริบิวต์เพิ่มเติมของระบบไฟล์ สิ่งเหล่านี้จะอธิบายในman 7 capabilities:

ชุดความสามารถของไฟล์จะถูกเก็บไว้ในแอ็ตทริบิวต์ส่วนขยาย (ดูที่ setxattr (2)) ชื่อ security.capability

คุณสามารถตรวจสอบความสามารถของกระบวนการทำงานโดยการตรวจสอบCapInh / CapPrm / CapEff/proc/PID/statusฟิลด์ใน ดูคำตอบของฉันที่ " วิธีการตั้งค่าความสามารถด้วยคำสั่ง setcap? " สำหรับคำอธิบายเกี่ยวกับวิธีการใช้ความสามารถกับกระบวนการที่ exec


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