คำถามติดแท็ก capabilities

3
คำสั่งให้เรียกใช้กระบวนการลูก "ออฟไลน์" (ไม่มีเครือข่ายภายนอก) บน Linux
ฉันมีโปรแกรมที่ฉันต้องการทดสอบในโหมดออฟไลน์โดยไม่ต้องถอดเครือข่ายจริงของฉัน โปรแกรมนี้จะยังคงต้องเชื่อมต่อกับซ็อกเก็ตท้องถิ่นรวมถึงซ็อกเก็ตโดเมนยูนิกซ์และลูปแบ็ค นอกจากนี้ยังต้องฟังลูปแบ็คและสามารถมองเห็นแอปอื่น ๆ ได้ แต่ความพยายามเชื่อมต่อกับเครื่องระยะไกลควรล้มเหลว ฉันต้องการที่จะมียูทิลิตี้ที่ทำงานเหมือนstrace/ unshare/ sudoและเพียงแค่เรียกใช้คำสั่งกับอินเทอร์เน็ต (และ LAN) ที่ซ่อนอยู่และทุกอย่างอื่นยังคงทำงาน: $ offline my-program-to-test คำถามนี้มีคำแนะนำที่คำตอบ: ปิดกั้นการเข้าถึงกระบวนการหรือไม่ มีคู่ของข้อเสนอแนะที่มีเช่นการทำงานเป็นผู้ใช้อื่นแล้วจัดการ iptables unshare -nหรือ แต่ในทั้งสองกรณีฉันไม่รู้ว่าคาถาที่จะได้รับซ็อกเก็ตโดเมนยูนิกซ์และลูปแบ็คเพื่อใช้ร่วมกับระบบหลัก - คำตอบสำหรับคำถามนั้นเพียงบอกฉันว่าจะแบ่งเครือข่ายทั้งหมดอย่างไร โปรแกรมที่ฉันกำลังทดสอบยังต้องเชื่อมต่อกับเซิร์ฟเวอร์ X และ dbus ของฉันและยังสามารถฟังลูปแบ็คสำหรับการเชื่อมต่อจากแอพอื่น ๆ ในระบบ เป็นการดีที่ฉันต้องการหลีกเลี่ยงการสร้าง chroots หรือผู้ใช้หรือ VM หรือสิ่งที่คล้ายกันเนื่องจากมันกลายเป็นเรื่องที่น่ารำคาญเหมือนการถอดสายเคเบิลเครือข่าย sudoคือจุดของคำถามคือวิธีที่ฉันสามารถทำให้เป็นง่ายๆเป็น ฉันชอบกระบวนการที่จะเรียกใช้ 100% ตามปกติยกเว้นการโทรผ่านเครือข่ายที่ระบุที่อยู่นอกพื้นที่จะล้มเหลว เป็นการดีที่จะรักษา uid เดียวกัน homedir เดียวกัน pwd เดียวกันทุกอย่างเดียวกันยกเว้น ... ออฟไลน์ ฉันใช้ …

2
Unset `setcap` ความสามารถเพิ่มเติมเกี่ยวกับการจ่ายได้
คำตอบให้กับลินุกซ์: ช่วยให้ผู้ใช้เพื่อฟังพอร์ตด้านล่าง 1024ที่ระบุให้สิทธิ์เพิ่มเติมปฏิบัติการใช้setcapดังกล่าวว่าโปรแกรมที่สามารถผูกกับพอร์ต <1024: setcap 'cap_net_bind_service=+ep' /path/to/program วิธีที่ถูกต้องในการยกเลิกการอนุญาตเหล่านี้คืออะไร?

1
ความสามารถในการใช้งานในสคริปต์โดยไม่ต้อง setcap'ing ล่ามไบนารี?
ตอนนี้ฉันกำลังใช้cap_net_bind_service MY_USERNAMEใน /etc/security/capability.conf ตอนนี้ผมก็ต้องชุดcap_net_bind_service+iล่ามภาษาสคริปต์ที่ชื่นชอบเพื่อให้สามารถที่จะเพิ่มCAP_NET_BIND_SERVICEไปที่มีประสิทธิภาพชุดผ่าน libcap [-ng] ใช้งานได้ดี แต่ฉันสงสัยว่ามีวิธีการที่จะบรรลุสิ่งเดียวกันโดยไม่ต้องตั้งค่าตัวพิมพ์ใหญ่ใด ๆ ให้เป็นล่ามไบนารี ในขณะที่มันไม่ใช่ปัญหาใหญ่ (บัญชีผู้ใช้อื่นไม่มีขีด จำกัด ดังนั้นพวกเขาจึงไม่สามารถใช้งานได้แม้จะมีการตั้งค่าบิตในตัวแปลไบนารี่) มันค่อนข้างน่ารำคาญเนื่องจากฉันต้องตั้งค่าสถานะใหม่ทุกครั้งที่ล่ามเป็น อัปเดต

3
ฉันจะใช้ capsh ได้อย่างไร: ฉันกำลังพยายามเรียกใช้ ping ที่ไม่มีสิทธิพิเศษด้วยความสามารถที่น้อยที่สุด
ฉันกำลังทดลองกับความสามารถบน Debian Gnu / Linux ฉันได้คัดลอก / bin / ping ไปยังไดเรกทอรีการทำงานปัจจุบันของฉัน ตามที่คาดไว้มันไม่ทำงาน แต่เดิมเป็น setuid root จากนั้นฉันก็ให้ความสามารถในการ ping น้อยที่สุด (ไม่ใช่รูท) ด้วยการทำsudo /sbin/setcap cap_net_raw=ep ./pingและการ ping ของฉันก็เป็นไปตามที่คาดไว้ จากนั้นsudo /sbin/setcap -r ./pingให้ยกเลิกความสามารถนั้น ตอนนี้ไม่ทำงานตามที่คาดไว้ ตอนนี้ผมพยายามที่จะได้รับการทำงาน ping capshใช้ capsh ไม่มีสิทธิ์ดังนั้นฉันต้องเรียกใช้เป็นรูท แต่จากนั้นดร็อปรูทและใช้สิทธิ์อื่น ๆ ทั้งหมด ฉันคิดว่าฉันต้องการsecure-keep-capsเช่นกันนี่ไม่ได้จัดทำเป็นเอกสารcapshแต่อยู่ในคู่มือความสามารถ /usr/include/linux/securebits.hผมได้หมายเลขบิตจาก ดูเหมือนว่าถูกต้องเนื่องจากผลลัพธ์ของการ--printแสดงบิตเหล่านี้จะถูกต้อง ฉันเล่นซอเป็นเวลาหลายชั่วโมงจนฉันมีสิ่งนี้ sudo /sbin/capsh --keep=1 --secbits=0x10 --caps="cap_net_raw+epi" == --secbits=0x10 --user=${USER} …

8
วิธีป้องกันไม่ให้กระบวนการเขียนไฟล์
ฉันต้องการเรียกใช้คำสั่งบน Linux ด้วยวิธีที่ไม่สามารถสร้างหรือเปิดไฟล์ใด ๆ เพื่อเขียน มันควรจะสามารถอ่านไฟล์ได้ตามปกติ (ดังนั้น chroot ที่ว่างเปล่าไม่ใช่ตัวเลือก) และยังสามารถเขียนไปยังไฟล์ที่เปิดอยู่แล้ว (โดยเฉพาะ stdout) คะแนนโบนัสหากการเขียนไฟล์ไปยังไดเรกทอรีที่แน่นอน (เช่นไดเรกทอรีปัจจุบัน) ยังคงเป็นไปได้ ฉันกำลังมองหาวิธีแก้ปัญหาที่เป็นกระบวนการในท้องถิ่นนั่นคือไม่เกี่ยวข้องกับการกำหนดค่าสิ่งต่าง ๆ เช่น AppArmor หรือ SELinux สำหรับทั้งระบบหรือสิทธิพิเศษระดับราก มันอาจเกี่ยวข้องกับการติดตั้งโมดูลเคอร์เนลของพวกเขาแม้ว่า ฉันกำลังดูความสามารถและสิ่งเหล่านี้จะดีและง่ายถ้ามีความสามารถในการสร้างไฟล์ ulimit เป็นอีกวิธีหนึ่งที่สะดวกถ้าครอบคลุมกรณีการใช้งานนี้

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

1
'setcap' เขียนทับความสามารถล่าสุด ฉันจะตั้งค่าความสามารถหลายอย่างได้อย่างไร
ฉันต้องการให้ node.js ความสามารถในการฟังบนพอร์ต 80 และปิดเครื่องคอมพิวเตอร์ ตอนแรกฉันลองทั้งสองคำสั่งตามลำดับ: setcap cap_net_bind_service=+ep /usr/bin/nodejs setcap cap_sys_boot=+ep /usr/bin/nodejs จากนั้นแอพของฉันไม่สามารถเชื่อมกับพอร์ต 80 ได้ฉันตรวจสอบด้วย getcap: # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_sys_boot+ep ถ้าฉันรัน setcap อีกครั้งสำหรับ cap_net_bind_service: # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_net_bind_service+ep ฉันไม่เห็นอะไรเลยในหน้า man http://linux.die.net/man/8/setcapเกี่ยวกับการตั้งค่าความสามารถหลายอย่างและลองทำบางสิ่งด้วยความสิ้นหวัง: # setcap cap_net_bind_service=+ep /usr/bin/nodejs cap_sys_boot=+ep /usr/bin/nodejs # getcap /usr/bin/nodejs /usr/bin/nodejs = cap_sys_boot+ep # setcap cap_net_bind_service=+ep …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.