الرئيسية
» لينوكس
»
كيفية تشغيل الأمر sudo بدون كلمة مرور على نظام لينكس
كيفية تشغيل الأمر sudo بدون كلمة مرور على نظام لينكس
يمكنك تشغيل الأمر sudo بدون كلمة مرور بإضافة NOPASSWDقاعدة إلى سياسة sudoers. والطريقة الأكثر أمانًا هي السماح فقط بتنفيذ الأمر الإداري المطلوب تحديدًا، بدلًا من تعطيل طلب كلمة المرور لكل أمر sudo.
قبل إجراء أي تغيير، تذكر وظيفة هذا الإعداد: أي شخص أو برنامج يتحكم بحسابك المسجل دخولك قد يتمكن من تشغيل الأمر المسموح به بصلاحيات المستخدم الجذر دون الحاجة إلى مصادقة إضافية. يوثق دليل sudoersNOPASSWD هذا الخيار باعتباره الوسم الذي يُزيل المصادقة للأوامر المطابقة.
لماذا لا يُعد الأمر sudo -s طريقةً لتنفيذ أوامر sudo بدون كلمة مرور؟
sudo -sلا تُفعّل النصيحة القديمة بتشغيل الأمر sudo بدون كلمة مرور. -sيبدأ هذا الخيار جلسة طرفية باستخدام sudo، لكن سياسة sudo قد تتطلب منك المصادقة أولاً. قد ترى أيضاً تنفيذ عدة أوامر دون مطالبة أخرى، لأن sudo عادةً ما يخزن المصادقة الناجحة مؤقتاً. وهذا يختلف عن NOPASSWDالقاعدة الدائمة.
تشغيل أمر sudo محدد بدون كلمة مرور
يُمكّن هذا المثال المستخدم من alexإعادة تشغيل Nginx بدون كلمة مرور. استبدل اسم المستخدم والأمر والوسائط بقيم تُناسب نظامك.
1. تأكد من اسم المستخدم ومسار الأمر
قم بتشغيل الأوامر التالية بصفتك المستخدم العادي:
whoami
command -v systemctl
قد يُعيد الأمر الثاني قيمةً /usr/bin/systemctl. استخدم المسار الذي يُبلغه نظامك. يجب أن تُعرّف قواعد sudoers الأوامر بمسارها الكامل.
تحقق من اسم الحساب والمسار الكامل للأمر قبل كتابة قاعدة sudoers.
2. أنشئ ملفًا مخصصًا لملفات sudoers الإضافية
بدلاً من التحرير /etc/sudoersالمباشر، استخدمه visudoمع ملف في /etc/sudoers.d:
sudo visudo -f /etc/sudoers.d/alex-nopasswd
عادةً ما تُدخل كلمة مرورك في هذه الخطوة من الإعداد. visudoيُفضّل استخدام الأمر `visudo` لأنه يتحقق من صحة الصيغة قبل قبول التغييرات. كما يُشير دليل Ubuntu `visudo`visudo إلى أنه يُقفل الملف أثناء التحرير ويتحقق من أخطاء التحليل.
افتح ملف sudoers منفصل visudoبدلاً من تعديل ملف السياسة الرئيسي باستخدام محرر نصوص عادي.
3. أضف قاعدة NOPASSWD الأضيق التي تحتاجها
بالنسبة لمثال إعادة تشغيل Nginx، أضف ما يلي:
alex ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx
تسمح هذه القاعدة بتشغيل الأمر المحدد فقط مع هذه الوسائط بصلاحيات المستخدم الجذر دون الحاجة إلى مصادقة. للسماح بتشغيل عدة أوامر محددة، افصل بين مواصفات الأوامر بفواصل.
إذا كنت تريد عمداً أن تتجاوز جميع أوامر sudo الخاصة بمستخدم واحد عملية المصادقة، فإن القاعدة العامة هي:
alex ALL=(ALL:ALL) NOPASSWD: ALL
هذا الخيار أقل أمانًا بكثير، ونادرًا ما يكون الخيار الأمثل على محطة عمل أو نظام مشترك. فجلسة المستخدم المخترقة ستتيح لها الوصول المباشر إلى صلاحيات الجذر غير المقيدة.
تُعد القاعدة الخاصة بالأمر أكثر أمانًا من منحها NOPASSWD: ALL.
4. التحقق من صحة القاعدة واختبارها
بعد الحفظ والخروج من المحرر، تحقق من سياسة sudoers الكاملة:
sudo visudo -c
لا تتجاهل هذا الفحص. visudoتوضح الوثائق أن سياسة sudoers تُقيّم ككل، لذا فإن فحص التكوين الكامل يكشف المشاكل التي قد تتعلق بالملفات المضمنة.
ثم قم بإبطال أي بيانات اعتماد sudo مخزنة مؤقتًا واختبرها بشكل غير تفاعلي:
sudo -k
sudo -n /usr/bin/systemctl restart nginx
يُخبر هذا -nالخيار برنامج sudo بعدم طلب كلمة المرور. إذا تطابقت القاعدة، يُنفَّذ الأمر دون طلب كلمة المرور. أما إذا كان التحقق من الهوية لا يزال مطلوبًا، فيُنهي sudo العملية مع ظهور خطأ بدلًا من انتظار إدخال كلمة المرور. وهذا sudo -nمفيدٌ للغاية للبرامج النصية التي يجب ألا تتوقف أبدًا عند طلب كلمة المرور.
تحقق من صحة السياسة، وامسح بيانات الاعتماد المخزنة مؤقتًا، واستخدمها sudo -nللتأكد من أن الأمر لم يعد بحاجة إلى كلمة مرور.
استكشاف أخطاء sudo بدون كلمة مرور وإصلاحها
لا يزال الأمر يطلب كلمة مرور: تأكد من أن اسم المستخدم ومسار الأمر والوسائط تتطابق تمامًا مع إدخال sudoers.
الأمر غير مسموح به: قم بتشغيله sudo -lلمراجعة الصلاحيات الممنوحة لحسابك.
يبدو أن الأمر يتم تجاهله: استخدم اسم ملف بسيط مثل alex-nopasswd. بعض إعدادات sudoers تتجاهل الملفات التي /etc/sudoers.dتحتوي أسماؤها على نقطة أو تنتهي بلواحق تشبه النسخ الاحتياطي.
عليك التراجع عن التغيير: أعد فتح النافذة المنبثقة باستخدام sudo visudo -f /etc/sudoers.d/alex-nopasswd، ثم قم بإزالة القاعدة أو تضييق نطاقها، ثم احفظ التغييرات، وقم بتشغيلها sudo visudo -cمرة أخرى.
أفضل الممارسات
استخدم sudo بدون كلمة مرور فقط عند الحاجة المُلحة، كإجراء خدمة مُحكم التحكم أو مهمة أتمتة. يُفضّل استخدام مسار الأمر والوسائط بدقة، وتجنّب ذلك NOPASSWD: ALLقدر الإمكان، واحرص على أن تكون قاعدة sudoers صغيرة قدر الإمكان. هذا يحافظ على معظم حماية sudo مع إزالة طلب كلمة المرور عند الضرورة القصوى.