- تتيح لك أداة sudo تشغيل الأوامر بصلاحيات المستخدم الجذر أو مستخدمين آخرين مع تحكم دقيق في الأذونات.
- تحدد الملفات /etc/sudoers و /etc/sudoers.d من يمكنه استخدام sudo ولأي أوامر.
- يُعد Visudo الطريقة الآمنة لتعديل sudoers، مما يجنب الأخطاء التي تُعطل النظام.
- تتيح لك مجموعات الأوامر والأسماء المستعارة تفويض المهام الإدارية دون منح حق الوصول الكامل.
إذا كنت تستخدم نظام لينكس يوميًا، فستصادف عاجلاً أم آجلاً الأمر `sudo` . إنه ذلك الأمر الذي يظهر قبل العديد من الأوامر المهمة، وغالبًا ما يكون مصحوبًا بطلب كلمة مرور. إن فهم وظيفته وكيفية عمله والمخاطر التي قد يُسببها أمرٌ أساسي لتجنب إتلاف نظامك عن طريق الخطأ... وللعمل براحة دون الحاجة إلى التبديل المستمر إلى حساب المستخدم الجذر.
بدلاً من تسجيل الدخول مباشرةً كمستخدم رئيسي، فإن الممارسة المعتادة (والموصى بها) هي الاحتفاظ بحساب المستخدم العادي، وعند الضرورة فقط، زيادة الامتيازات مؤقتًا بالعرقوراء تلك الإيماءة البسيطة يكمن نظام كامل للتحكم في الأذونات والأوقات والمجموعات والقواعد في الملف. /etc/sudoers وهذا يستحق المعرفة ببعض التفاصيل، خاصة إذا كنت تدير العديد من المستخدمين أو الخوادم.
ما هو الأمر sudo تحديداً في نظام لينكس؟
يُعدّ الأمر `sudo` أداةً تُمكّن المستخدم من تشغيل البرامج كما لو كان مستخدمًا آخر في النظام، عادةً ما يكون المستخدم الجذر (المستخدم الخارق) ، ولكن يُمكن استخدامه أيضًا مع أي حساب آخر إذا تمّت تهيئته وفقًا لذلك. على الرغم من شيوع استخدام هذا المصطلح بمعنى "تنفيذ الأمر من قِبل المستخدم الخارق"، إلا أن العديد من مصادر التوثيق تُشير أيضًا إلى فكرة "استبدال المستخدم وتنفيذ الأمر" : أي استبدال المستخدم الذي يتم تنفيذ الأمر تحته مؤقتًا.
في أي توزيعة حديثة (ديبيان، أوبونتو، والمشتقات منها، والعديد منها مبني على SUSE، إلخ)، يأتي sudo مثبتًا مسبقًا ويُعد جزءًا من سير العمل الإداري المعتاد؛ يمكنك الرجوع إلى نصائح وحيل برامج لينكس لمزيد من المعلومات . يعمل المستخدم العادي بصلاحيات محدودة، بينما يتمتع حساب الجذر بالتحكم الكامل في النظام. يُحقق sudo توازنًا: إذ يُمكن لمستخدمين محددين تنفيذ مهام إدارية دون تسجيل الدخول كجذر ، مما يُقلل المخاطر ويُوفر سجلًا واضحًا لإجراءاتهم.
من التفاصيل المهمة أنه على الرغم من أن sudo يسمح لك بتشغيل الأوامر بصلاحيات المستخدم الجذر، إلا أن هذا لا يعني بالضرورة حصولك على جميع صلاحيات الجذر على مستوى النظام . بل يمنح صلاحيات محددة لكل عملية تنفيذ، وفقًا للقواعد المحددة في ملف الإعدادات. وهذا يتيح تقييدًا كبيرًا لما يمكن لكل مستخدم فعله باستخدام sudo.
تُعدّ فلسفة عدم العمل بصلاحيات المستخدم الجذر (root) بشكل دائم أساسيةً للأمان. فكلما قلّ الوقت الذي تقضيه بصلاحيات كاملة، قلّ احتمال إتلاف النظام أو استغلال البرامج الضارة لجلسة العمل . لهذا السبب، يُعدّ الأمر sudo بالغ الأهمية في العمل اليومي لأي مسؤول نظام لينكس أو مستخدم متقدم.
كيف يعمل الأمر sudo عملياً
الاستخدام الأساسي بسيط: تقوم بوضع sudo قبل الأمر الذي تريد تنفيذه بصلاحيات مرتفعة. على سبيل المثال، لإنشاء مستخدم من حساب عادي، ستستخدم شيئًا مثل sudo useradd nombreإذا حاولت أن ترمي useradd بدون استخدام sudo، من المرجح أن تحصل على خطأ في الأذونات أو رسالة "تم رفض الإذن".
عند استدعاء سودو لأول مرة في جلسة طرفية، سيطلب منك النظام كلمة مرور المستخدم الذي قمت بتسجيل الدخول بهليس كلمة مرور المستخدم الجذر (إلا في إعدادات خاصة في بعض التوزيعات). إذا أدخلتها بشكل صحيح وكنت مخولاً بالدخول /etc/sudoersيتم تنفيذ الأمر بالصلاحيات المحددة بواسطة قواعد sudo.
بشكل افتراضي، يتمتع مصادقة sudo بفترة صلاحية محدودة، عادةً حوالي 15 دقيقة . طالما أنك لم تغلق جلسة الطرفية ولم تنتهِ هذه المدة، يمكنك الاستمرار في استخدام sudo دون أن يُطلب منك إدخال كلمة المرور مع كل أمر. بمجرد انتهاء المهلة، سيتطلب الأمر التالي من sudo إدخال كلمة المرور مرة أخرى.
يتم تعريف كل هذا السلوك والتحكم فيه في الملف. /etc/sudoers وفي الملفات المضمنة في /etc/sudoers.d/. لا يُسمح بتشغيل الأمر sudo إلا للمستخدمين والمجموعات المدرجة هناك ممن لديهم الصلاحيات المناسبة.وهذا يسمح بضبط دقيق للغاية لمن يمكنه فعل ماذا، وعلى أي أجهزة، وتحت أي أوامر.
الصيغة العامة لأمر sudo وخيارات المفاتيح
الطريقة الأكثر شيوعًا لاستخدام sudo بسيطة للغاية:
sudo comando
في جوهرها، تقبل أداة sudo عدة خيارات تتيح لك التحقق من الصلاحيات، وعرض الإصدار، وفرض التحقق من كلمة المرور، وغير ذلك. ومن أكثرها شيوعًا في العديد من توزيعات لينكس ما يلي:
- -hيعرض رسالة مساعدة موجزة تتضمن الصيغة والخيارات الرئيسية المتاحة في sudo.
- -Vيعرض معلومات الإصدار وتفاصيل تجميع برنامج sudo.
- -v: يجدد "تذكرة" المصادقة، تمديد فترة الصلاحية دون الحاجة إلى تنفيذ أمر ذي امتيازات خاصة.
- -k: يبطل امتيازات sudo الحالية، لذا في المرة القادمة التي تستخدمه فيها، سيطلب منك كلمة المرور بغض النظر عن أي شيء.
- -l: قائمة ما هي الصلاحيات التي يتمتع بها المستخدم الحالي؟ اعتمادًا على تكوين sudoers (ما هي الأوامر التي يمكنه تنفيذها، وعلى أي مضيفين، وبصفته أي مستخدمين، وما إلى ذلك).
من هنا، يمكنك دمج sudo مع أي أمر تقريبًا يتطلب امتيازات المسؤول: مديري الحزم، وأدوات الشبكة، وخدمات النظام، وأدوات حساب المستخدم، وتغييرات ملكية الملفات ... القائمة لا حصر لها عمليًا.
أمثلة عملية لاستخدام sudo
تُعد إحدى أكثر العمليات شيوعًا التي تتطلب امتيازات موسعة هي إدارة حزم البرامجفي التوزيعات القائمة على SUSE، يتم استخدامها بشكل شائع zypperأما في دبيان/أوبونتو، فيتم استخدام ما يلي aptفي كلتا الحالتين، عندما تقوم العملية بتعديل النظام (التثبيت، التحديث، الإزالة)، فأنت بحاجة إلى sudo.
على سبيل المثال، لتثبيت حزمة باستخدام zypper، ستستخدم شيئًا كهذا sudo zypper install nombre-paqueteومع كلمة مناسبة شيء مثل sudo apt-get update seguido دي sudo apt-get upgradeإذا حاولت التحديث بدون استخدام sudo، فسترى أخطاء في قفل ملفات النظام أو أخطاء في الأذونات، لأنه لا يمكن الوصول إلى تلك الدلائل إلا بواسطة مستخدم لديه الامتيازات المناسبة.
وهناك مزيج شائع آخر وهو العرق مع systemctlأداة لإدارة الخدمات على الأنظمة التي تستخدم systemd. لبدء أو إعادة تشغيل خدمة مثل Apache، على سبيل المثال، يمكنك استخدام أداة مثل sudo systemctl restart apache2ومع ذلك، يمكن في كثير من الأحيان التحقق من حالة الخدمة، التي لا تتضمن تغييرات، دون استخدام sudo: systemctl status NetworkManager عادة ما يكون الوصول إليه متاحاً باستخدام الأذونات العادية.
عندما تحتاج إلى تعديل حسابات المستخدمين، يكون الأمر الكلاسيكي هو usermodنعم، دائماً تحت العرق. على سبيل المثال، يمكنك حدد عدد الأيام بعد انتهاء صلاحية كلمة المرور قبل إلغاء تنشيط الحساب، بترتيب نوعي sudo usermod -f 30 nombreusuario، حيث يمثل 30 يومًا هامشيًا.
وهناك منطقة أخرى مرتبطة ارتباطًا وثيقًا بالجنوب وهي منطقة قم بتغيير ملكية الملفات والمجلدات باستخدام الأمر chownإذا كنت تريد أن يصبح مستخدم معين مالكًا لشجرة كاملة ضمن /home/test/tux-filesستطلق شيئًا مثل sudo chown -R tux /home/test/tux-filesبعد ذلك، يمكنك التحقق من النتيجة باستخدام ls -l للتأكد من تحديث العقار بشكل صحيح.
قم بتشغيل الأوامر مثل المستخدمين الآخرين باستخدام sudo (-u, -s, -i)
بالإضافة إلى تشغيل الأوامر بصلاحيات المستخدم الجذر (root)، يسمح لك الأمر sudo بتشغيل الأوامر بصلاحيات مستخدمين محددين آخرين . ويتم ذلك باستخدام الخيار -u . مثال بسيط على ذلك هو التحقق من المستخدم الفعلي الذي ينفذ الأمر:
whoami يعيد المستخدم الحالي، بينما sudo -u pedro whoami سيظهر اسم المستخدم "pedro" إذا كانت إعداداتك تسمح لك بالتصرف باسمه. هذه الطريقة مفيدة جدًا لاختبار الصلاحيات أو المسارات أو بيئات التشغيل دون الحاجة إلى تسجيل الدخول الكامل إلى ذلك الحساب.
عندما تريد واجهة تفاعلية مع وجود امتيازات عالية، يدخل نوعان نموذجيان للغاية حيز التنفيذ: sudo -s y sudo -iالأول يفتح نافذة طرفية بصفتك المستخدم المستهدف، لكن وراثة بيئة المستخدم الحالي (المتغيرات، الدليل الحالي، إلخ). أما الثاني فيحاكي واجهة تسجيل دخول المستخدم المستهدف. تحميل برامج بدء التشغيل الخاصة به واستخدام دليل $HOME الخاص به.
على سبيل المثال، إذا قمت بتشغيل sudo -s -u tuxستظهر لك واجهة سطر أوامر مشابهة لواجهة المستخدم الرسومية (Tux)، ولكن من المجلد الذي كنت فيه سابقًا، مع الحفاظ على معظم بيئتك. على النقيض من ذلك، مع sudo -i -u tux ستدخل جلسة بشكل أشبه بكثير بما لو أن توكس قد سجل دخوله مباشرة، باستخدام ملفاته الشخصية (.profile, .bash_profileإلخ) محملة.
في كلتا الحالتين، يتم تسجيل الأوامر المنفذة في السجل ، وهو أمر مثير للاهتمام من وجهة نظر التتبع: يمكنك دائمًا مراجعة ما تم فعله بامتيازات مرتفعة، ومن قام بذلك ومتى.
الاختلافات بين العرق و
في نظام لينكس، يسمح لك كل من الأمر `su` والأمر ` sudo` بتشغيل الأوامر بصلاحيات مستخدم آخر، غالباً ما يكون المستخدم الجذر (root)، ولكن طريقة استخدام كل منهما مختلفة تماماً. يساعدك فهم هذا الاختلاف على تحديد متى تستخدم كلاً منهما.
القيادة su (مستخدم بديل) يستخدم لـ تبديل المستخدمين داخل نفس الجهاز الطرفي. اذا فعلت su pedroسيُطلب منك إدخال كلمة مرور بيدرو؛ وبمجرد إدخالها، سيتم تفعيل حسابك ضمن هذا الحساب. لن تختفي جلسة المستخدم الأصلي؛ بل ستبقى "تحت" الجلسة الجديدة. عند كتابة exitتغادر جلسة بيدرو وتعود إلى الجلسة السابقة.
إذا كنت تستخدم su بدون تحديد المستخدم، بشكل افتراضي حاول التبديل إلى وضع الجذريطلب كلمة مرور المستخدم الجذر. وهذا له تأثير عملي كبير: ينتهي الأمر بالعديد من الأشخاص بالعمل كمستخدم جذر لفترات طويلة، مع كل المخاطر التي ينطوي عليها ذلك، لمجرد أنه أكثر ملاءمة من كتابة الأمر `sudo` باستمرار.
على النقيض من ذلك، يقدم sudo نهجًا مختلفًا: فأنت لا تقوم بالتبديل الدائم بين الجلسات أو المستخدمين ، بل ترفع صلاحياتك فقط لأوامر محددة (أو لبيئة طرفية معينة). تتم المصادقة باستخدام كلمة مرورك الخاصة، ويتم التحكم في صلاحيات كل مستخدم مركزيًا في sudoers.
لذا، في البيئات التي تُعطى فيها الأولوية للأمان، لا يُنصح بتسجيل الدخول مباشرةً بصلاحيات المستخدم الجذر أو استخدام الأمر `su` دائمًا، ويُفضّل استخدام الأمر `sudo` بشكلٍ منهجي . بهذه الطريقة، تتم مراجعة كل إجراء يتطلب صلاحيات، مما يقلل من الأضرار المحتملة الناتجة عن تنفيذ أمرٍ بشكلٍ خاطئ أو ثغرة أمنية.
ملف /etc/sudoers: جوهر إعدادات sudo
يتم تعريف جميع سلوكيات sudo (من يمكنه استخدامها، مثل أي المستخدمين، وعلى أي المضيفين، وبأي الأوامر) في الملف. /etc/sudoers وفي الملفات المضمنة من هناك، عادةً عن طريق توجيه من النوع #includedir /etc/sudoers.dإنه ملف حساس للغاية: قد يؤدي خطأ في بناء الجملة إلى حرمانك من صلاحيات sudoلذا ينبغي التعامل معه بحذر.
من الأمثلة الشائعة للمحتوى الذي ستراه في ملف sudoers سطر مثل root ALL=(ALL:ALL) ALLهذا يعني أن المستخدم الجذر يمكنه تنفيذ أي أمر على أي جهاز، تمامًا مثل أي مستخدم أو مجموعة أخرى. كما أن القواعد القائمة على المجموعات شائعة أيضًا، مثل: %sudo ALL=(ALL:ALL) ALL o %admin ALL=(ALL) ALL، حيث البادئة % يشير ذلك إلى أنها مجموعة داخل النظام.
الفكرة هي أن جميع المستخدمين المنتمين إلى مجموعة sudo أو مجموعة المسؤولين يرثون صلاحيات استخدام sudo. وبالتالي، في أوبونتو، يُضاف المستخدم الأول الذي يتم إنشاؤه أثناء التثبيت عادةً تلقائيًا إلى مجموعة sudo، ويحصل على صلاحيات إدارية كاملة دون الحاجة إلى استخدام حساب الجذر مباشرةً.
ومن الممارسات الشائعة الأخرى تجنب تعديل الملف الرئيسي كثيراً، وبدلاً من ذلك إنشاء ملفات محددة داخل /etc/sudoers.d/بفضل الخط #includedir /etc/sudoers.dيتم تحميل أي ملف صالح داخل هذا الدليل كجزء من تكوين sudoers الكامل، مما يسهل تنظيم القواعد حسب الخدمات والأقسام والمشاريع وما إلى ذلك.
كيفية تعديل ملفات sudoers بأمان باستخدام Visudo
لتعديل ملف sudoers، لا يمكنك ببساطة فتحه باستخدام محرر النصوص المفضل لديك، لأن قد يؤدي خطأ في بناء الجملة إلى منع استخدام sudo وسيتركك في فوضى عارمة. الطريقة الصحيحة هي استخدام الأمر دائمًا visudo، وهو المسؤول عن فتح الملف في محرر (vi، nano، أيًا كان ما قمت بتكوينه) وعند الحفظ، التحقق من صحة بناء الجملة قبل تطبيق التغييرات.
إذا كنت ترغب في تعديل الملف الرئيسي، فما عليك سوى تشغيله sudo visudoإذا كنت بحاجة إلى إنشاء ملف معين أو تعديله ضمن /etc/sudoers.d/يمكنك الإشارة إلى ذلك باستخدام الخيار -fعلى سبيل المثال: sudo visudo -f /etc/sudoers.d/networkingهذا يحافظ على نظافة الملف بشكل عام ويقلل من خطر إتلافه.
عند مراجعة ملفات sudoers، ستصادف العديد من الأسطر المعلقة التي تبدأ بـ #هؤلاء هم تم تعطيل التفسيرات أو القواعدهناك توزيع واحد على وجه الخصوص غالباً ما يكون مثيراً للاهتمام في العديد من التوزيعات: التوزيع الذي يبدأ بـ %wheelإذا قمت بإزالة # من هذا السطر، وإذا قمت بإضافة مستخدمين إلى مجموعة العجلة، فسوف تمنحهم حقوق sudo وفقًا لما تنص عليه تلك القاعدة.
كنصيحة، يُنصح دائمًا بفتح جلسة مستخدم بصلاحيات الجذر أو نافذة طرفية مع اختصار أثناء استخدام sudoers، تحسبًا لأي مشكلة. قد يؤدي تعطيل sudo دون وجود حل بديل إلى فقدان صلاحيات المستخدم المُرتفعة من حسابك العادي، مما يُجبرك على اللجوء إلى أوضاع الإنقاذ.
إدارة من يملك صلاحيات sudo: المجموعات والمستخدمين
في الممارسة اليومية، عادةً ما تكون الطريقة الأنسب لتحديد من يمكنه استخدام Sudo بكامل صلاحياته هي من خلال المجموعات الإداريةكما ذكرنا، من الشائع جداً وجود مجموعة تسمى sudo o admin o wheel، والتي تمنح قواعدها في سودويرز امتيازات واسعة لأعضائها.
لمعرفة من هم أعضاء مجموعة sudo في نظام نموذجي، يمكنك استخدام grep في /etc/group: على سبيل المثال، grep 'sudo' /etc/group سيعرض البرنامج قائمة بالمستخدمين الموجودين حاليًا في تلك المجموعة. إنها طريقة سريعة لمعرفة من لديه صلاحية الوصول إلى sudo.
إذا كنت تريد مستخدمًا معينًا، على سبيل المثال مشروع قانونإذا كانت لديك صلاحيات sudo، فإن أحد الخيارات هو إضافتها إلى المجموعة المقابلة باستخدام أوامر مثل adduser bill sudo أو ما يعادله في توزيعتك. من تلك اللحظة فصاعدًا، ووفقًا لقواعد sudoers لتلك المجموعة، سيتمكن بيل من استخدام sudo مثل بقية المسؤولين.
وبالمثل، إذا احتجت في أي وقت إلى إلغاء تلك الأذونات، يمكنك إزالته من المجموعة، على سبيل المثال باستخدام deluser bill sudoبمجرد اكتمال تلك العملية، لن يتمكن بيل من تنفيذ الإجراءات التي تتطلب sudo، إلا إذا كان لديه قاعدة محددة إضافية في sudoers.
يُعد هذا النهج المتمثل في تفويض التحكم في sudo إلى المجموعات مفيدًا للغاية عند إدارة العديد من المستخدمين أو فريق عمل ، لأنه يسمح لك بمنح وإلغاء الأذونات مركزيًا دون الحاجة إلى تعديل ملف sudoers باستمرار لكل اسم على حدة.
منح صلاحيات محددة باستخدام sudoers (دون منح "صلاحيات مطلقة").
أحيانًا لا ترغب في منح المستخدم صلاحيات الجذر الكاملة ، بل صلاحيات محدودة فقط. وهنا تبرز قوة أداة sudoers، إذ تتيح لك تحديد أسماء مستعارة للأوامر وقواعد دقيقة للغاية للمجموعات أو المستخدمين.
تخيل أنك تريد إنشاء مجموعة، على سبيل المثال netadminوالتي يمكن لأعضائها تنفيذ أوامر شبكية معينة (مثل tcpdump أو إدارة خادم الويب) مع امتيازات، ولكن لا شيء أكثر. يمكنك تعريف أسماء مستعارة للأوامر في ملف من /etc/sudoers.d/ من هذا النوع، باستخدام برنامج Visudo لتحريره.
يمكن تعريف الأسماء المستعارة داخل هذا الملف على النحو التالي: Cmnd_Alias CAPTURE = /usr/sbin/tcpdump لالتقاط بيانات حركة المرور أو اسم مستعار Cmnd_Alias SERVERS = /usr/sbin/apache2ctl, /usr/bin/htpasswd لإدارة خادم الويب وكلمات المرور المرتبطة به. ثم، اسم مستعار أكثر عمومية مثل NETALL = CAPTURE, SERVERS فهو يجمع بين الاثنين.
ومن هناك، القاعدة %netadmin ALL=NETALL يشير هذا إلى أن أي مستخدم في مجموعة netadmin يمكنه تنفيذ جميع الأوامر المضمنة في NETALL (أي تلك الموجودة في CAPTURE وSERVERS) باستخدام sudo. الخطوة التالية هي إضافة bill إلى مجموعة netadmin باستخدام أمر مشابه لما يلي: sudo adduser bill netadmin، و مستعد.
يكمن جوهر الأمر في أن هذه الأوامر المحددة فقط هي التي ستُنفذ بصلاحيات المستخدم . إذا حاول بيل استخدام الأمر sudo لأي أمر لا يشمله الأمر NETALL، فسيرفضه النظام. يُنصح بشدة باتباع هذا النهج عند الرغبة في توزيع المسؤوليات التقنية دون منح صلاحيات المسؤول الكاملة.
السماح باستخدام sudo بدون كلمة مرور في حالات محددة للغاية
من السيناريوهات الشائعة الأخرى رغبة المستخدم في تنفيذ أمر واحد باستخدام الأمر `sudo` دون الحاجة إلى إدخال كلمة المرور . قد يكون هذا مفيدًا لبعض البرامج النصية أو الأدوات التي تُشغّل بشكل متكرر، حيث لا يكون من المنطقي تكرار عملية المصادقة مرارًا وتكرارًا.
إن الطريقة الأكثر أمانًا للتعامل مع هذا الأمر هي تغليف هذا الأمر في البرنامج النصي مملوك للمستخدم الجذر، وله صلاحيات محدودة.على سبيل المثال، تقوم بإنشاء comando.shثم تقوم بتعديل مالكها وأذوناتها باستخدام شيء مثل sudo chown root:root comando.sh y sudo chmod 700 comando.shوبهذه الطريقة، لا يمكن إلا للمستخدم الجذر تعديله وتشغيله.
ثم، في ملف sudoers، تقوم بتعريف قاعدة بحيث يتمكن المستخدم المعني من تنفيذ الأمر. comando.sh لا حاجة لكلمة مرور. شيء من هذا القبيل nombredeusuario ALL=(ALL) NOPASSWD: /home/nombredeusuario/comando.sh سيسمح ذلك للمستخدم بتشغيل البرنامج النصي باستخدام sudo دون أن يُطلب منه إدخال كلمة المرور.
من المهم التأكيد على ضرورة عدم الإفراط في استخدام قواعد NOPASSWD . ففي كل مرة تسمح فيها باستخدام الأمر `sudo` بدون كلمة مرور، فإنك تفتح ثغرة أمنية يُمكن استغلالها إذا تمكن شخص ما من الوصول إلى حساب المستخدم أو التلاعب بسياق تنفيذ الأمر. لذا، يُفضّل استخدامها فقط في حالات محددة وخاضعة للتدقيق.
مع ذلك، تُعدّ هذه التقنية عملية للغاية بالنسبة للمهام المتكررة والمؤتمتة، أو لبعض الأوامر التي تتطلب تحكمًا دقيقًا. يكمن السر في تحديد نطاقها: فمن الأفضل منح صلاحيات `sudo` بدون كلمة مرور لأمر محدد جدًا بدلاً من منحها لمفسر الأوامر بأكمله.
بدائل ومكملات لـ sudo: doas وأساليب أخرى
في بعض البيئات، يكتسب doas شعبية كبديل خفيف الوزن لـ sudo. فلسفته مشابهة (السماح بتنفيذ الأوامر بصلاحيات مستخدم آخر)، ولكن بإعدادات أبسط وملف تنفيذي صغير جدًا ، مما يجعله مناسبًا بشكل خاص للأنظمة البسيطة.
لا يتم تثبيت DOAS عادةً بشكل افتراضي، لذلك سيتعين عليك إضافته من مدير الحزم ثم إنشاء ملف التكوين. /etc/doas.confمثال بسيط على القاعدة سيكون كالتالي: permit nopass manz، مما يسمح للمستخدم manz باستخدام doas دون إدخال كلمة مرور لرفع الامتيازات إلى مسؤول النظام.
على عكس sudoers، حيث يمكنك تعريف أسماء مستعارة وقواعد معقدة إلى حد ما، يختار doas مجموعة أصغر من التوجيهات ، مع إعطاء الأولوية للبساطة. يمكنك تعيين أذونات محددة، ورفض أوامر معينة صراحةً، وتقييدها، وما إلى ذلك، ولكن دون نفس القدر من "التعقيد" الذي يوفره sudo.
ليس الأمر أن أحدهما أفضل من الآخر من حيث المطلق، ولكن في بعض الحالات قد يكون الأمر doas كافيًا وأكثر ملاءمة ، بينما في البيئات الكبيرة أو التي يتم التحكم فيها بدقة شديدة، يظل sudo الخيار الأكثر مرونة وشهرة.
بغض النظر عن الأداة المختارة، فإن الفكرة الأساسية هي نفسها: عدم العمل كجذر طوال الوقت ، ولكن استخدام آليات تصعيد الامتيازات الخاضعة للتحكم، مع قواعد واضحة وسجلات لما يتم القيام به.
مع وضع كل هذا في الاعتبار، يتضح أن أمر `sudo` ليس مجرد بادئة لأوامر "خطيرة"، بل هو عنصر أساسي في أمان نظام لينكس وإدارته اليومية . إن فهم خياراته، وإتقان ملف `sudoers`، ومعرفة متى يُستخدم `sudo`، وكيفية تقييد أوامر محددة، ومتى يُسمح بالاستثناءات بدون كلمة مرور، يمنحك تحكمًا أدق بكثير في نظامك وما يمكن للمستخدمين الآخرين فعله عليه.
