เปิดใช้งานเนมสเปซผู้ใช้ในเคอร์เนล Debian


28

ฉันพยายามหาวิธีเปิดใช้งานความสามารถเนมสเปซของผู้ใช้ในเคอร์เนลของฉัน (ฉันคิดว่า CAP_SYS_USER_NS) ฉันใช้ Debian Stretch, เคอร์เนล 4.6.0-1-amd64

ข้อสันนิษฐานของฉันคือมีวิธีเปิดใช้เนมสเปซผู้ใช้และคอมไพล์เคอร์เนลอีกครั้ง หลังจากผ่านไปหลายชั่วโมงการค้นหาฉันสามารถค้นหาโพสต์ของการทำเช่นนี้ใน Ubuntu ( https://blog.tutum.co/2013/12/14/enabling-the-user-namespace-in-ubuntu-13-10-saucy/) ) แต่ไม่ใช่ Debian (ปัญหาอาจเป็นเพราะฉันหลงผิดและดังนั้นการค้นหาของฉันจึงไม่เป็นไปตามหลัก)

เกมสุดท้ายของฉันคือการเปิดใช้งานสิ่งเหล่านี้เพื่อให้ทันกับ Docker และ Google sandboxing ซึ่งต้องมีการเปิดใช้งานเนมสเปซของผู้ใช้ในเคอร์เนล (เช่นคอนเทนเนอร์ Chrome ของฉันไม่ทำงาน)


1
ดูคำถามเดียวกัน: unix.stackexchange.com/q/303213/4319
imz - Ivan Zakharyaschev

คำตอบ:


38

ใน Debian userns จะถูกคอมไพล์ แต่ถูกปิดใช้งานโดยค่าเริ่มต้น มีโปรแกรมแก้ไขเฉพาะ Debian ไปยังเคอร์เนลที่เพิ่มปุ่ม sysctl นี้: kernel.unprivileged_userns_clone

ดังนั้นคุณต้องเพิ่มรายการใหม่/etc/sysctl.dและตั้งค่าเป็น 1

ด้วยตนเองซึ่งจะเป็น: echo 1 > /proc/sys/kernel/unprivileged_userns_clone(เพื่อเปิดใช้งานจนกว่าจะรีบูต)

สำหรับการแก้ปัญหาอย่างถาวร:

echo 'kernel.unprivileged_userns_clone=1' > /etc/sysctl.d/00-local-userns.conf
service procps restart

เป็นไปได้ว่ามีพารามิเตอร์ตัวเลือกการบูตเทียบเท่าฉันไม่รู้


1
4.9.0-1-amd64 #1 SMP Debian 4.9.6-3 (2017-01-28) x86_64 GNU/Linuxนี้ยังคงทำงานในยืดเคอร์เนล
เรด

1
มีเหตุผลที่ปิดใช้งานโดยค่าเริ่มต้นใน Debian หรือไม่
Melroy

2
ความปลอดภัยของ namespace ผู้ใช้ในอดีตนั้นไม่แน่นอน เช่น: lwn.net/Articles/673597 หากผู้ใช้ในฐานะที่เป็นรูทภายในเนมสเปซของเธอเองสามารถหลอกให้เคอร์เนลเข้าใช้งานการดำเนินการในโฮสต์จริงได้จึงมีการเพิ่มสิทธิพิเศษ เนมสเปซที่ไม่ใช่ของผู้ใช้ปกติต้องมีสิทธิ์รูทอย่างชัดเจน (ดังนั้นผู้ดูแลระบบ) และดำเนินการตามที่ผู้ดูแลระบบเลือก: นั่นเป็นความเสี่ยงที่รู้จัก กลไกภายหลังถูกเพิ่มในเคอร์เนลวานิลลา: user.max_user_namespaces เมื่อตั้งค่าเป็น 0 เนมสเปซผู้ใช้จะถูกปิดการใช้งาน แพทช์ Debian (จริง ๆ แล้วจาก Ubuntu) ยังคงอยู่แม้ว่าจะล้าสมัยไปแล้วก็ตาม อาจเป็นเพราะเหตุผลด้านความเข้ากันได้
AB

1
เคอร์เนล 4.18.3 ยังไม่ได้วางจำหน่ายบนเดเบียนดังนั้นเคอร์เนลของคุณจึงไม่ใช่เคอร์เนลทดสอบของเดเบียน คุณสามารถละเว้นพารามิเตอร์นี้ทั้งหมด (จนกว่าคุณจะติดตั้งเคอร์เนลจริงจาก Debian) ดูความคิดเห็นก่อนหน้าของฉันเกี่ยวกับ user.max_user_namespaces
AB

3
หรือเพียงแค่: sudo sysctl -w kernel.unprivileged_userns_clone=1.
Skippy le Grand Gourou
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.