كيف يمكنني استخدام عامل الميناء دون سودو?

في صفحات وثائق عامل الميناء ، يتم عرض جميع أوامر الأمثلة بدون sudo، مثل هذا:

docker ps

على أوبونتو ، يسمى الثنائي docker.io. كما أنه لا يعمل بدون سودو:

sudo docker.io ps

كيف يمكنني تكوين عامل الميناء لدرجة أنني لست بحاجة إلى بادئة كل أمر عامل الميناء مع سودو?

أخبار جيدة: عامل الميناء الجديد (الإصدار 19.03 (التجريبي حاليا)) سوف تكون قادرة على تشغيل بلا جذور ينفي المشاكل التي يمكن أن تحدث باستخدام مستخدم الجذر. لا مزيد من العبث بأذونات مرتفعة وجذر وأي شيء قد يفتح جهازك عندما لا ترغب في ذلك.

فيديو عن هذا من [دوكيركون 2019] تصلب عامل الميناء الخفي مع وضع بلا جذور

بعض المحاذير إلى وضع عامل الميناء بلا جذور

يقول مهندسو عامل الميناء إن الوضع بدون جذور لا يمكن اعتباره بديلا لمجموعة كاملة من ميزات محرك عامل الميناء. تتضمن بعض القيود على الوضع بدون جذور ما يلي:

  • كغروبس ضوابط الموارد ، ملامح الأمن أبارمور ، نقطة تفتيش / استعادة ، شبكات تراكب الخ. لا تعمل على وضع بلا جذور.
  • تعريض المنافذ من الحاويات يتطلب حاليا عملية مساعد سوكات اليدوية.
  • فقط توزيعات على أساس أوبونتو دعم أنظمة الملفات تراكب في وضع بلا جذور.
  • يتم حاليا توفير وضع بلا جذور فقط للبنيات الليلية التي قد لا تكون مستقرة كما اعتدت عليها.

اعتبارا من عامل الميناء 19.3 هذا عفا عليه الزمن (وأكثر خطورة من الحاجة):

ال دليل عامل الميناء هل هذا ليقوله عن ذلك:

إعطاء الوصول غير الجذر

الخفي دوكر يعمل دائما كمستخدم الجذر ، ومنذ دوكر الإصدار 0.5.2 ، الخفي دوكر يربط إلى مقبس أونيكس بدلا من منفذ تكب. افتراضيا أن يونكس المقبس مملوكة من قبل الجذر المستخدم ، وهكذا ، افتراضيا ، يمكنك الوصول إليه مع سودو.

بدءا من الإصدار 0.5.3 ، إذا كنت (أو المثبت عامل الميناء الخاص بك) إنشاء مجموعة أونيكس تسمى عامل الميناء وإضافة مستخدمين إليها ، ثم الخفي عامل الميناء سيجعل ملكية مقبس أونيكس قراءة/للكتابة من قبل مجموعة عامل الميناء عندما يبدأ الخفي. يجب تشغيل الخفي عامل الميناء دائما كمستخدم الجذر ، ولكن إذا قمت بتشغيل العميل عامل الميناء كمستخدم في مجموعة عامل الميناء ثم لا تحتاج إلى إضافة سودو لجميع أوامر العميل. اعتبارا من 0.9.0 ، يمكنك تحديد أن مجموعة أخرى من عامل الميناء يجب أن تملك مقبس يونكس مع الخيار-ز.

تحذير: مجموعة عامل الميناء (أو المجموعة المحددة مع-ز) هو الجذر المكافئ ؛ انظر عامل الميناء الخفي هجوم تفاصيل السطح وهذا بلوق على لماذا لا ندع المستخدمين غير الجذر تشغيل عامل الميناء في سينتوس ، فيدورا ، أو ريل (شكرا مايكل-ن).

في الإصدار الأخير من وضع تجريبي بدون جذور على جيثب، يذكر المهندسون أن الوضع بدون جذور يسمح بتشغيل دوكيرد كمستخدم غير متميز ، باستخدام مساحات أسماء المستخدمين(7) ، مساحات أسماء المستخدمين(7) ، مساحات أسماء الشبكات (7).

يحتاج المستخدمون إلى تشغيل dockerd-rootless.sh بدلا من دوكرد.

$ dockerd-rootless.sh --experimental

نظرا لأن الوضع بدون جذور تجريبي ، يحتاج المستخدمون إلى التشغيل دائما dockerd-rootless.sh مع-التجريبية.


مهم للقراءة: خطوات ما بعد التثبيت لينكس (يرتبط أيضا بـ عامل الميناء الخفي هجوم تفاصيل السطح).

إدارة عامل الميناء كمستخدم غير الجذر

الخفي عامل الميناء يربط إلى مقبس أونيكس بدلا من منفذ تكب. افتراضيا أن يونكس المقبس مملوكة من قبل الجذر المستخدم ويمكن للمستخدمين الآخرين الوصول إليه فقط باستخدام سودو. الخفي عامل الميناء يعمل دائما كمستخدم الجذر.

إذا كنت لا تريد استخدام سودو عند استخدام الأمر عامل الميناء ، إنشاء مجموعة يونكس تسمى عامل الميناء وإضافة مستخدمين إليها. عندما يبدأ الخفي عامل الميناء ، فإنه يجعل ملكية مأخذ يونكس قراءة / للكتابة من قبل مجموعة عامل الميناء.


  • أضف مجموعة عامل الإرساء إذا لم تكن موجودة بالفعل:

     sudo groupadd docker
  • إضافة المستخدم المتصل & مثل; - المستخدم & مثل; إلى مجموعة عامل الميناء. قم بتغيير اسم المستخدم لمطابقة المستخدم المفضل لديك إذا كنت لا تريد استخدام المستخدم الحالي:

     sudo gpasswd -a $USER docker
  • إما القيام newgrp docker أو قم بتسجيل الخروج / الدخول لتنشيط التغييرات على المجموعات.

  • يمكنك استخدام

     docker run hello-world

    للتحقق مما إذا كان يمكنك تشغيل عامل الميناء دون سودو.

لتشغيل أمر عامل الميناء دون sudo، تحتاج إلى إضافة المستخدم الخاص بك (الذي لديه امتيازات الجذر) إلى مجموعة عامل الميناء. لهذا الأمر تشغيل التالية:

 sudo usermod -aG docker $USER

الآن ، اطلب من المستخدم تسجيل الخروج ثم تسجيل الدخول مرة أخرى. هذا الحل هو شرح جيد هنا مع عملية التثبيت المناسبة.

الآلية التي يتم من خلالها إضافة مستخدم إلى المجموعة docker يمنح الإذن لتشغيل عامل الميناء هو الوصول إلى مقبس عامل الميناء في /var/run/docker.sock. إذا كان نظام الملفات الذي يحتوي على /var/run وقد شنت مع أكلس تمكين ، وهذا يمكن أن يتحقق أيضا عن طريق أكلس.

sudo setfacl -m user:$USER:rw /var/run/docker.sock

أنا فقط بما في ذلك هذا للتأكد من اكتمالها.

بشكل عام ، أوصي لتجنب أكلس كلما بديل جيد على أساس المجموعات هو متاح: فمن الأفضل إذا الامتيازات في نظام يمكن فهمها من خلال النظر في عضوية المجموعة فقط. الحاجة إلى مسح نظام الملفات لإدخالات أكل من أجل فهم امتيازات النظام هو عبء إضافي لعمليات التدقيق الأمني.

تحذير 1: هذا له نفس الشيء root التكافؤ كإضافة $USER إلى docker مجموعة. لا يزال بإمكانك بدء حاوية بطريقة لديها root الوصول إلى نظام الملفات المضيف.

تحذير 2: تعتبر عمليات التدقيق الأمني أكثر صعوبة بكثير من عمليات التدقيق الأمني القائمة على المجموعة. ربما تجنب أكلس إذا كان ذلك ممكنا عندما يمكنك استخدام مجموعات بدلا من ذلك ، على الأقل في البيئات ذات الصلة التدقيق.

بعد إنشاء مجموعة عامل الميناء وإضافة المستخدم الخاص بي إليها مع

sudo groupadd dockersudo usermod -aG docker $USER

... كان لا يزال لي لإعطاء /var/run/docker.sock المقبس و /var/run/docker دليل الأذونات المناسبة والعمل على انجاحه:

sudo chown root:docker /var/run/docker.socksudo chown -R root:docker /var/run/docker

الخروج وتسجيل الدخول مرة أخرى (مع هذا المستخدم) ثم عليك أن تكون قادرا على تشغيل أوامر عامل الميناء دون sudo:

docker run hello-world

يجب تشغيل حاويات عامل الإرساء بواسطة مستخدم جذر. يمكنك إضافة نفسك إلى docker المجموعة (على سبيل المثال عن طريق تشغيل sudo usermod -aG docker $USER) ، ولكن هذا يجعل من السهل على أي شخص لديه إمكانية الوصول إلى $USER حساب للوصول الجذر إلى الجهاز (على سبيل المثال عن طريق تركيب وحدة تخزين الجذر في حاوية مميزة).

وهناك طريقة أكثر أمنية واعية لتشغيل حاويات عامل الميناء كمستخدم غير الجذر سيكون لاستخدام بودمان: https://podman.io/. من موقعها على الانترنت:

بودمان هو محرك حاوية ديمونليس لتطوير وإدارة وتشغيل حاويات أوسي على نظام لينكس الخاص بك. يمكن تشغيل الحاويات كجذر أو في وضع بلا جذور. ببساطة: alias docker=podman.

بديل آخر هو التفرد، والذي يتم نشره بشكل أكثر شيوعا في بيئات الكمبيوتر: https://sylabs.io/.

ماذا عن اسم مستعار:? وبهذه الطريقة ، كنت لا تزال تستخدم سودو ، مع حماية كلمة السر. الاسم المستعار عامل الميناء="سودو عامل الميناء "

لا ننسى لتمكين أوفو؛)

على أوبونتو 14.04 هناك أيضا’ عامل الميناء ’ ثنائي.

التثبيت الموصى به هو ليس عامل الإرساء في اتفاقيات إعادة الشراء الافتراضية لأوبونتو ؛ بدلا من ذلك ، التعليمات هنا ( Redirecting…) ، نوصي باستخدام الريبو عامل الميناء. إزالة جميع الاشياء عامل الميناء الموجودة ، والتحقق من أنك تحصل على واحد من المصدر الصحيح ` ‘ملائمة-سياسة ذاكرة التخزين المؤقت عامل الميناء المحرك’ (يجب أن يكون عنوان ورل مناسب من dockerproject.org)

ما غير المرغوب فيه هو هذا لمطالبة الجذر للقيام بأشياء بسيطة مثل معلومات عامل الميناء. مثل` عامل الميناء معلومات ’ يحتاج الوصول الخام إلى كل ما عندي من الملفات والأجهزة والمنافذ لتشغيل.

@أناتوليتيشتونيك أنا أيضا تستخدم ‘عامل الميناء’ بدلا من ‘docker.io’ في أوبونتو 14.04 لتر

نعم ، حتى يقوم عامل الميناء بتنفيذ بوليسيكيت أو شيء مشابه ، أوصي بشدة باستخدام اسم مستعار ، وإلا فقد تقوم بتشغيل كل شيء كجذر.

سودو شمود 666/فار/يركض / عامل الميناء.جورب