يخفي التعبير «شغّله في الخلفية» سؤالين. الأول هو هل يجوز لهذا المستخدم أن يبدأ عملية ذات صلاحيات مميزة أصلًا؛ والثاني هو هل يمكن للجلسة أن تستمر دون أن يكتب أحد في طرفية. وعلامة العطف في الصدفة لا تجيب عن أي منهما، والسكربت الذي يخزّن كلمة مرور sudo في متغيّر يجيب عن الأول بشكل سيئ ويترك الثاني دون مساس. افصل بينهما تصبح الخيارات سهلة المقارنة.

قارن بين المرشحين الثلاثة من حيث الملكية، لا من حيث الراحة.

ثلاث طرق لمغادرة الطرفية، وثلاثة مالكين مختلفين

إن إضافة علامة عطف إلى أمر تطلب من الصدفة تشغيله كمهمة خلفية، والمهمة تظل ملكًا لتلك الصدفة. وقد يطلب sudo إدخالًا قبل أن يبدأ البرنامج أصلًا، و OpenVPN قد يطلب بعد ذلك عبارة مرور لمفتاح أو تسجيل دخول. وتشغيل أمر يتوقع إدخالًا في الخلفية ينتج عملية تنتظر طرفية لا يراقبها أحد. الطرفية تُحرَّر؛ أما التفاعل فلا.

هذا هو الخيار الأرخص وهو الذي يفشل على نحو أكثر إرباكًا، لأن المطالبة تظهر في مكان تركه المشغّل بالفعل.

sudo -b ليس معالجًا لبيانات الاعتماد

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

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

--daemon يغيّر البرنامج، لا تسجيل الدخول

--daemon يطلب من OpenVPN نفسه أن ينفصل بعد التهيئة. يلاحظ دليل الإصدار 2.6 أن إعادة توجيه syslog تحدث عند تحليل الخيار، مع أن الانفصال يحدث لاحقًا، لذا قد تتوقف الرسائل عن الظهور في الطرفية أبكر مما هو متوقع. والصمت بعد تلك النقطة لا يثبت شيئًا عن النفق. أضف --log أو --log-append حتى تصل المخرجات إلى مكان يمكنك قراءته.

كما يزيل وضع الخفي الطرفية نهائيًا. يحتاج المفتاح الخاص المحمي إلى askpass في ذلك الوضع، وقد تترك بيانات الاعتماد المدخلة من الطرفية مع خيارات التخزين المؤقت إعادة مصادقة لاحقة بلا مكان تسأل فيه. افحص نموذج المصادقة مقابل الإصدار المثبّت قبل أن تفترض أن بدءًا في الخلفية سينجو من أول تجديد للمفتاح.

ما يشتريه التحقق بـ sudo وما لا يشتريه

sudo -v يتحقق من بيانات الاعتماد المحلية المخزّنة أو يحدّثها، ويصادق إذا تطلبت السياسة ذلك. وهو لا يبدأ OpenVPN، ولا يصادق مع البوابة، ولا يضمن السماح بأمر لاحق في السكربت. sudo -n يعني العكس: لا تسأل، بل افشل. وهذا يجعل فشل التصريح المحلي صريحًا، وهو أمر مفيد، ولا يقول شيئًا عما سيطلبه OpenVPN لاحقًا.

ليس أي من الخيارين سببًا لمنح أوامر بلا كلمة مرور على العموم أو لتمرير كلمة مرور مدير إلى سكربت.

فضّل مالكًا يمكن مراقبته

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

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

مقالات ذات صلة