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

คำถามเกี่ยวกับเนมสเปซของ Linux รวมถึงคำสั่งเช่น: unshare และ ip netns เนมสเปซรองรับการแยกระบบไฟล์ชื่อระบบ IPC กระบวนการเครือข่ายและผู้ใช้ เกี่ยวข้องอย่างใกล้ชิดกับแท็ก Docker และ lxc; ใช้แท็กเหล่านั้นแทนแท็กนี้หากคุณใช้ docker หรือ lxc เพื่อใช้เนมสเปซ


5
วิธีค้นหาเนมสเปซของกระบวนการเฉพาะ
ฉันได้ถามคำถามเกี่ยวกับวิธีการแสดงรายการ namespaces ทั้งหมดใน Linuxแต่ไม่มีคำตอบที่ถูกต้องและแน่นอนดังนั้นฉันต้องการค้นหาวิธีที่สามารถช่วยฉันค้นหา namespace ของ PID ของกระบวนการหรือกลุ่มของ กระบวนการ จะทำอย่างไรใน Linux?

2
ต่อจุดเมานต์ระบบไฟล์ส่วนตัวของกระบวนการ
ฉันกำลังตรวจสอบunshareคำสั่งและเป็นไปตามหน้า man unshare - run program with some namespaces unshared from parent ฉันยังเห็นว่ามีเนมสเปซประเภทหนึ่งที่ระบุว่าเป็น mount namespace mounting and unmounting filesystems will not affect rest of the system. อะไรคือวัตถุประสงค์ของเนมสเปซเมานต์นี้? ฉันพยายามที่จะเข้าใจแนวคิดนี้ด้วยความช่วยเหลือของตัวอย่าง

4
วิธีการแสดงรายการเนมสเปซใน Linux
คำถามนี้ถูกโยกย้ายจาก Server Fault เนื่องจากสามารถตอบได้ใน Unix & Linux Stack Exchange อพยพ 5 ปีที่ผ่านมา มีวิธีใดบ้างใน Linux ที่จะแสดงรายการเนมสเปซทั้งหมดในโฮสต์ที่ทำงานอยู่? ฉันต้องการตรวจสอบ namespaces สำหรับกระบวนการเฉพาะ (เช่นกระบวนการที่ทำงานใน LXC-container และกระบวนการอื่น ๆ ทั้งหมดบนโฮสต์) จากนั้นหากลุ่ม cg ของพวกเขา
24 linux  lxc  namespace 

1
วิธีที่เชื่อถือได้สำหรับกระบวนการเด็กในคุกโดยใช้ 'nsenter:'
ฉันรู้ว่า namespaces ลินุกซ์ในหมู่สิ่งอื่น ๆ อีกมากมายสามารถ leveraged ที่จะจัดการกับการ จำกัด และงูกระบวนการที่เด็กได้อย่างปลอดภัยโดยไม่ต้องมีโอกาสของพวกเขาใด ๆ ถูก zombied initและทิ้งบน แต่ฉันไม่ชัดเจนในรายละเอียดการใช้งาน ฉันจะใช้เครื่องมือที่จัดเตรียมโดยutil-linuxเช่นmountและnsenterเพื่อดูตรวจสอบและตรวจสอบให้แน่ใจว่ากระบวนการทั้งหมดที่เปิดใช้เป็นลูกหลานของเนมสเปซโดยตรงของกระบวนการอื่นได้อย่างไร

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

3
เคอร์เนล: การสนับสนุน Namespaces
ฉันสงสัยว่าคุณสมบัติ“ Namespaces support” ในเคอร์เนลหมายถึงอะไร ฉันใช้เคอร์เนล 3.11.1 (เคอร์เนลที่เสถียรที่สุดในขณะนี้) หากฉันตัดสินใจที่จะปิดการใช้งานฉันจะสังเกตเห็นการเปลี่ยนแปลงในระบบของฉันหรือไม่? และในกรณีที่มีใครบางคนตัดสินใจที่จะใช้ประโยชน์จากเนมสเปซมันก็เพียงพอแล้วที่จะรวบรวมNAMESPACES=Yในเคอร์เนลหรือว่าเขาต้องการเครื่องมือ userspace เช่นกัน?

1
วิธีการดำเนินการ chroot กับ namespaces Linux?
หลังจากอ่านเกี่ยวกับเนมสเปซลินุกซ์ฉันก็รู้สึกว่ามันมีคุณสมบัติอื่น ๆ มากมายซึ่งเป็นทางเลือกสำหรับ chroot ตัวอย่างเช่นในบทความนี้ : การใช้งานอื่น ๆ [ของ namespaces] รวมถึง [... ] chroot () - การแยกลักษณะของกระบวนการเป็นส่วนหนึ่งของลำดับชั้นไดเรกทอรีเดียว อย่างไรก็ตามเมื่อฉันโคลนเนมสเปซ Mount ตัวอย่างเช่นด้วยคำสั่งต่อไปนี้ฉันยังคงเห็นต้นไม้รากเดิมทั้งหมด unshare --mount -- /bin/bash ฉันเข้าใจว่าตอนนี้ฉันสามารถทำการเมาท์เพิ่มเติมในเนมสเปซใหม่ที่ไม่ได้ใช้ร่วมกับเนมสเปซดั้งเดิมได้ดังนั้นจึงให้การแยก แต่ก็ยังคงเป็นรูทเดียวกันเช่น/etcจะยังคงเหมือนเดิมสำหรับเนมสเปซทั้งสอง ฉันยังต้องchrootเปลี่ยนรูทหรือมีทางเลือกอื่นหรือไม่? ฉันคาดหวังว่าคำถามนี้จะให้คำตอบ แต่คำตอบนั้นใช้chrootอีกครั้งเท่านั้น แก้ไข # 1 pivot_rootมีความคิดเห็นที่ถูกลบในขณะนี้ว่าเป็นที่กล่าวถึง เนื่องจากนี่เป็นส่วนหนึ่งของlinux/fs/namespace.cความเป็นจริงมันเป็นส่วนหนึ่งของการติดตั้งเนมสเปซ นี้แสดงให้เห็นว่าการเปลี่ยนไดเรกทอรีรากเท่านั้นที่มีunshareและmountเป็นไปไม่ได้ แต่ namespaces ให้ตัวเอง - ฉลาดมากขึ้น - chrootรุ่นของ ถึงกระนั้นฉันก็ยังไม่ได้รับแนวคิดหลักของวิธีการนี้ที่ทำให้มันแตกต่างจากchrootเดิมแม้หลังจากอ่านซอร์สโค้ด (ในแง่ของความปลอดภัยและการแยกที่ดีกว่า) แก้ไข # 2 นี้ไม่ซ้ำกับคำถามนี้ หลังจากรันคำสั่งทั้งหมดจากคำตอบฉันมี /tmp/tmp.vyM9IwnKuY …
14 chroot  namespace 

1
ทำไมฉันไม่สามารถผูก“ /” ในเนมสเปซของผู้ใช้ไม่ได้
ทำไมมันไม่ทำงาน $ unshare -rm mount --bind / /mnt mount: /mnt: wrong fs type, bad option, bad superblock on /, missing codepage or helper program, or other error. งานเหล่านี้ตกลง: $ unshare -rm mount --bind /tmp /mnt $ unshare -rm mount --bind /root /mnt $ $ uname -r # Linux kernel version …

2
จำลอง chroot ด้วย unshare
ฉันพยายามเขียน bootstrapper เพื่อแจกจ่ายลินุกซ์จากแหล่งที่น้อยที่สุด ฉันต้องการที่จะสร้างในสภาพแวดล้อมที่เหมือน chroot สิ่งนี้ควรทำให้บรรจุภัณฑ์ง่ายขึ้น ฉันไม่สนใจเกี่ยวกับความปลอดภัย ณ จุดนี้ bootstrapper ไม่ควรต้องการคำสั่งของบุคคลที่สามที่ไม่ได้มาตรฐาน มันจะดีมากถ้าไม่จำเป็นต้องรูทเช่นกัน นี่คือเหตุผลที่ fakechroot (1) fakeroot (1) chroot (1) ไม่ใช่สิ่งที่ฉันกำลังมองหา เป็นไปได้หรือไม่ที่จะปลอม / ใช้ unshare (1) และ / bin / sh?

2
เหตุใดการเชื่อมโยงของฉันจึงมองเห็นได้นอกเนมสเปซการเมานท์
ดังนั้นฉันจึงพยายามที่จะจัดการกับ mount namespace ของ Linux ว่าทำงานอย่างไร ดังนั้นฉันจึงทำการทดลองเล็กน้อยและเปิดเทอร์มินัลสองเครื่องและวิ่งต่อไปนี้: อาคาร 1 root@goliath:~# mkdir a b root@goliath:~# touch a/foo.txt root@goliath:~# unshare --mount -- /bin/bash root@goliath:~# mount --bind a b root@goliath:~# ls b foo.txt อาคาร 2 root@goliath:~# ls b foo.txt ทำไมการมองเห็นการติดตั้งจึงปรากฏในเทอร์มินัล 2 เนื่องจากมันไม่ได้เป็นส่วนหนึ่งของเมานต์เนมสเปซฉันจึงคาดว่าไดเรกทอรีจะว่างเปล่าที่นี่ ฉันพยายามผ่าน-o shared=noและใช้--make-privateตัวเลือกด้วยmountแต่ฉันก็ได้ผลลัพธ์เดียวกัน ฉันพลาดอะไรไปบ้างและฉันจะทำให้เป็นส่วนตัวได้อย่างไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.