لدي حاجة لإنشاء مساحات أسماء داخل حاوية عامل ميناء. وكجزء من هذا ، وسوف تحتاج إلى جبل /proc خاص بمساحة الاسم الداخلية. أدرك أنه سيتعين علي تشغيل الحاوية بامتيازات معينة لتحقيق ذلك ، لكنني أفضل تمكين الحد الأدنى من المجموعة.
لذلك ، مجرد إيقاف مرشحات سيكومب وإضافة CAP_SYS_ADMIN لا يكفي. ماذا هو يكفي?
تحديث: سيلينو هو جزء من المشكلة. إذا قمت بإيقاف تطبيق سيلينوكس على مستوى العالم ، فإنه يعمل. ولكن ، يمكنك أيضا إيقاف التنفيذ لحاوية معينة باستخدام --security-opt label:disable، وهذا موثق في قسم تكوين الأمان في دليل عامل الإرساء عبر الإنترنت:
ولكن هذا فشل إذا كان -U و -r تتم إضافة الأعلام مرة أخرى إلى unshare. وبطبيعة الحال ، مضيفا --privileged إلى الأمر تشغيل عامل الميناء يعمل على ما يرام حتى مع -U و -r الأعلام.
أحاول حاليا استخدام نواة تتبع الاشياء لمعرفة ما ، بالضبط ، هو إعطائي إبيرم. انها خطأ غير محدد غير مفيد جدا للحصول على.
sudo docker run --cap-add=sys_admin --security-opt label:disable -it fedora:rawhide /bin/sh -c 'for dir in $(awk '"'"'/\/proc\// { print $5; }'"'"' /proc/1/mountinfo ); do umount "$dir"; done; /usr/bin/unshare -Ufmp -r /bin/sh -c '"'"'mount --make-private / ; mount -t proc proc /proc ; ls /proc'"'"
لم أقسمها على أسطر متعددة لأن الاقتباس مهم حقا. في الأساس ، فإنه يزيل مجموعة كاملة من الاشياء في /proc قبل تشغيل ونشار وتصاعد /proc في مساحة اسم المستخدم التابعة.
عامل الميناء يتصاعد على مجموعة من الدلائل والملفات في /proc مع الدلائل الخاصة بها التي هي الدلائل تمفس فارغة والملفات الفارغة. ملفات مختلفة في /proc تمثل القيم التي تنطبق على النظام بأكمله. في الواقع, /proc/kcore سوف تسمح لك لقراءة ذاكرة النواة داخل الحاوية إذا كنت الجذر ، والتي ، لأن الكثير من الناس يريدون أن يصدقوا أن الحاويات هي نوع من فم خفيفة الوزن أو شيء من هذا ، من شأنه أن يفاجئ الكثير من الناس.
النواة في (اعتبارا من الإصدار 4.14 على أي حال) fs/namespace.c:mnt_already_visible يتحقق لمعرفة ما إذا كنت تقوم بتركيب نظام ملفات مثبت بالفعل ، وإذا كان نظام الملفات هذا يحتوي على أشياء مثبتة كنظم ملفات فرعية وتلك الحوامل لها علامة منت_لوكيد ، فإنه يفشل. يبدو أن العلم منت_لوكيد ليتم تطبيقها (لم أكن مطاردة حيث هذا هو في النواة) لجميع يتصاعد كلما قمت بإنشاء مساحة اسم المستخدم من أجل منعك من فك الأشياء في مساحة الاسم (لأنك تحصل على امتيازات 'داخل' مساحة اسم المستخدم) وجعل الاشياء المخفية مرئية مرة أخرى.
الأمر نشرت لي يستخدم البرنامج النصي أوك على محتويات /proc/1/mountinfo لسحب كافة الدلائل والملفات في /proc وقد شنت أن عامل الميناء على, ويفك تحميل كل منهم. هذا يجعل /proc نظام الملفات قابل للتركيب في مساحات أسماء المستخدم المتداخلة مرة أخرى.
هذا لن يساعدك ، ولكن بأمانه: أنا * حقا * مندهش هذا ليس خيار جبل ' القياسية كما يبدو شرطا شائعا جدا بالنسبة لي. أنا في حاجة إليها:)... أنا تشغيل ثنائي واحد بما في ذلك جميع مكتباتها ، لذلك ليس هناك حاجة لقاعدة س/ق في الحاوية-لذلك ليس لدي واحد ، ولكن يبدو أنها تريد /بروكلبعض الميزات. والشيء نفسه سيحدث مع الثنائيات ثابتة ، مثل تلكالذهاب` - يمكن تثبيتها دون قاعدة س/ق في حاوية. حاولت '- ت / بروك: / بروك ’ وأنها لا تساعد لسبب كنت تعطي.