目次
1. مقدمة: ما هو sudo؟
المعنى الأساسي ودور sudo
في أنظمة Linux وUnix، يعتبر أمر sudo أحد أهم الأوامر الأساسية. كلمة sudo اختصار لـ superuser do، وهي أداة تتيح تشغيل الأوامر بصلاحيات المدير (root) مؤقتاً. بشكل افتراضي، لا يُسمح للمستخدم العادي بإجراء عمليات تؤثر على النظام ككل (مثل تثبيت الحزم أو تغيير الإعدادات). ولكن باستخدامsudo، يمكن تنفيذ هذه العمليات الحساسة بشكل محدود. على سبيل المثال، لتنفيذ أمر apt بصلاحية root:sudo apt updateبهذه الطريقة، يعمل sudo كنظام يوازن بين الأمان وسهولة الإدارة، مما يجعل إدارة النظام آمنة وسهلة في نفس الوقت.الفرق بين sudo و su
هناك أمر مشابه يُدعىsu، لكن بينهما فروق واضحة:suهو اختصار لـ “substitute user”، ويُستخدم للتبديل إلى مستخدم آخر (عادةً root). عند استخدام su، تصبح الجلسة بالكامل للمستخدم الآخر.- أما
sudo، فهو يمنح صلاحيات المدير بشكل مؤقت للأمر فقط، مع بقاء المستخدم كما هو.
su يغير المستخدم على مستوى الجلسة، أما sudo يرفع الصلاحيات على مستوى الأمر فقط. لهذا السبب، sudo أكثر أماناً وأسهل في تتبع السجلات، لذا فهو الافتراضي في توزيعات Linux الحديثة.توزيعات Linux التي تعتمد على sudo
العديد من توزيعات Linux تستخدمsudo بشكل افتراضي، وأبرزها:- عائلة Ubuntu (Ubuntu, Linux Mint, …) → لا يمكن تسجيل الدخول مباشرةً كـ root؛ تتم إدارة النظام عبر sudo فقط.
- عائلة Debian → غالباً ما يتم تفعيل sudo لاحقاً لأسباب أمنية.
- Fedora, CentOS, Red Hat → يمكن استخدام root، ولكن يُوصى غالباً باستخدام sudo.
لماذا يبحث البعض عن “sudo sudo”؟
كلمة “sudo sudo” قد تبدو مكررة، لكنها تُستخدم غالباً في الحالات التالية:- المبتدئون يبحثون عن معنى واستخدام sudo ويكتبون الكلمة مرتين للتأكيد.
- عند مواجهة مشاكل باستخدام sudo (مثال:
sudo: sudo: command not found). - عند رؤية استخدام مزدوج لـ sudo في السكريبتات أو خطوط الأوامر، مما يثير التساؤل.
sudo، كيفية الإعداد، وحل المشاكل الشائعة.2. الاستخدام الأساسي لأمر sudo
البنية الأساسية لـ sudo
بنية أمرsudo بسيطة جداً:sudo [خيارات] الأمرمثال لتحديث معلومات الحزم:sudo apt updateيعني أن أمر “apt update” سيتم تنفيذه بصلاحية root.آلية طلب كلمة المرور والتخزين المؤقت
عند استخدامsudo لأول مرة أو بعد مدة زمنية، سيطلب منك النظام إدخال كلمة مرور المستخدم. هذه الخطوة لتعزيز الأمان ومنع الاستخدام غير المصرح به.
بعد إدخال كلمة المرور، سيتم تذكرها (cache) لفترة قصيرة (افتراضياً 5 دقائق في Ubuntu). يمكن تعديل هذه الفترة في ملف sudoers.خيارات sudo الشائعة الاستخدام
يقدمsudo العديد من الخيارات لتسهيل ومرونة التحكم. من أهمها:-u (تشغيل كـ مستخدم آخر)
بشكل افتراضي، يمنحك صلاحية root، لكن مع خيار-u يمكنك تشغيل أمر باسم مستخدم آخر:sudo -u www-data whoamiسيكون الناتج www-data، أي أن الأمر تم تشغيله كمستخدم www-data.-s (فتح shell بصلاحية root مؤقتاً)
لتشغيل shell مؤقتاً كـ root:sudo -sيُنصح بالحذر عند العمل في هذا الوضع.-i (تسجيل الدخول كـ root بشكل كامل)
لتبديل البيئة بالكامل إلى root:sudo -i-l (عرض الأوامر المسموح بها)
لعرض الأوامر التي يمكنك تشغيلها باستخدام sudo:sudo -lنصائح مهمة للمبتدئين
- يجب ترك مسافة بعد
sudo(مثال:sudoaptخطأ). - لتنفيذ عدة أوامر دفعة واحدة، استخدم علامات الاقتباس أو افصلها بفاصلة منقوطة.
- تشغيل تطبيقات واجهة المستخدم الرسومية (GUI) مع sudo قد يؤدي إلى تلف الملفات، مثل
sudo gedit.
3. ملف sudoers والتحكم في الوصول
ما هو ملف sudoers؟
ملف إعدادات/etc/sudoers يتحكم في كيفية عمل أمر sudo، ويحدد من يمكنه تشغيل أي أوامر باستخدام sudo. مثال: يمكن السماح لمستخدم بتنفيذ أمر محدد فقط باستخدام sudo.
هذه المرونة تحقق مبدأ أقل الصلاحيات الضرورية (Least Privilege).تعديل sudoers بأمان باستخدام visudo
لا يجب تعديل/etc/sudoers مباشرة عبر محرر نصوص عادي.
لأن أي خطأ في الصياغة قد يؤدي إلى تعطل sudo، مما يصعب إصلاحه. استخدم دائمًا visudo للتعديل، فهو يتحقق من الصياغة قبل الحفظ.sudo visudoالبنية الأساسية وأمثلة التكوين
بنية ملفsudoers:اسم_المستخدم اسم_الجهاز = (المستخدم_المنفذ) الأوامر_المسموحةمثال:alice ALL=(ALL:ALL) ALLيعني أن المستخدم alice يمكنه تنفيذ أي أمر على أي جهاز كأي مستخدم. لتقييد صلاحيات أمر معين:bob ALL=(ALL) /usr/bin/systemctl restart nginxيسمح هذا فقط للمستخدم bob بإعادة تشغيل nginx باستخدام sudo.التحكم عبر المجموعات: مجموعة sudo
في Ubuntu وتوزيعات أخرى، المستخدمون ضمن مجموعةsudo لديهم صلاحية استخدام sudo:%sudo ALL=(ALL:ALL) ALLلإضافة مستخدم للمجموعة:sudo usermod -aG sudo اسم_المستخدماستخدام خيار NOPASSWD (بدون كلمة مرور) وتحذيرات
يمكنك إلغاء طلب كلمة المرور عند تشغيل أوامر معينة باستخدامNOPASSWD:alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginxلكن هذا يُضعف الأمان، لذلك يُوصى بتحديد الأوامر المسموحة فقط وعدم استخدام ALL.4. استخدامات متقدمة لـ sudo
تشغيل أوامر كمستخدم آخر
يمكن لـsudo تشغيل الأوامر بصلاحية مستخدم معين (وليس فقط root):sudo -u www-data whoamiهذه الميزة مفيدة لفحص البيئة أو صلاحيات المستخدمين المختلفين.استخدام sudo مع إعادة التوجيه والأنابيب
غالبًا ما يواجه المبتدئون مشاكل عند استخدامsudo مع إعادة التوجيه > أو الأنابيب |.
مثال غير صحيح:sudo echo "test" > /etc/test.confفي هذا المثال، echo تعمل بصلاحية sudo لكن الكتابة تتم بصلاحية المستخدم العادي، مما يؤدي لفشل العملية. الصحيح:echo "test" | sudo tee /etc/test.confوبذلك، الكتابة تتم فعلياً بصلاحية sudo.استخدام sudo في السكريبتات
عند كتابة سكريبت يتطلب صلاحيات إدارية، أضف sudo فقط قبل الأوامر التي تحتاج لذلك. تجنب تشغيل السكريبت بالكامل بـ sudo. مثال (install.sh):#!/bin/bash
echo "Installing package..."
sudo apt install -y nginxيمكنك أيضاً التحقق من صلاحية root في بداية السكريبت:if [ "$EUID" -ne 0 ]; then
echo "يجب تشغيل هذا السكريبت كـ root"
exit 1
fiأوامر مفيدة شائعة الاستخدام
sudo !!→ إعادة تنفيذ آخر أمر بصلاحية sudo. مثال:
apt update
sudo !!نفس النتيجة كـ sudo apt update.sudo -k→ مسح التخزين المؤقت لكلمة المرور يدويًا.sudo -v→ تمديد صلاحية جلسة sudo أثناء العمل لفترات طويلة.
5. الأمان وأفضل الممارسات
الالتزام بمبدأ أقل الصلاحيات
الهدف الرئيسي منsudo هو تشغيل النظام بأقل صلاحيات ممكنة، أي عدم التحول الدائم إلى root بل الحصول على الصلاحيات عند الحاجة فقط. الأفضل:- السماح فقط بالأوامر الضرورية لكل مستخدم (مثال:
systemctl restart nginx) - تقليل استخدام NOPASSWD قدر الإمكان
- إدارة الصلاحيات للمستخدمين ذوي الامتيازات عبر المجموعات
تسجيل السجلات والمراقبة
يسجلsudo جميع الأوامر المنفذة عبره في سجلات النظام، ما يساعد في تتبع من قام بتنفيذ ماذا ومتى. أهم مواقع السجلات:/var/log/auth.log(Ubuntu, Debian)journalctl(توزيعات systemd)
grep 'sudo' /var/log/auth.logأو:journalctl _COMM=sudoهذا ضروري لإدارة الأنظمة وخاصةً الخوادم.ثغرات أمنية شهيرة في sudo (CVE-2021-3156)
رغم موثوقيةsudo، ظهرت في الماضي ثغرات خطيرة.
أشهرها CVE-2021-3156 (Baron Samedit) التي كانت تسمح باختراق النظام من خلال مدخلات معينة. لحماية النظام:- تأكد دائماً من تحديث sudo للحفاظ على الأمان
- تحقق بشكل دوري من المصادر الرسمية وقواعد بيانات الثغرات الأمنية
بدائل sudo: التعرف على doas
بعض التوزيعات الخفيفة أو المهتمة بالأمان تستخدم doas كبديل لـ sudo.doas هو أداة بسيطة وسهلة الإعداد قادمة من OpenBSD. مثال:doas apt updateيتم إعداد doas في ملف /etc/doas.conf:permit nopass :wheelلكن doas قد لا يتوفر افتراضياً في كل توزيعة Linux.6. الأخطاء الشائعة وحلولها
خطأ “المستخدم ليس ضمن ملف sudoers”
اسم_المستخدم is not in the sudoers file. This incident will be reported.يظهر هذا الخطأ عندما لا يكون للمستخدم صلاحية استخدام sudo، وغالباً مع المستخدمين الجدد غير المضافين لمجموعة sudo. الحل:- تسجيل الدخول بحساب لديه صلاحيات root
- إضافة المستخدم إلى مجموعة sudo
sudo usermod -aG sudo اسم_المستخدمبعدها سجل الخروج ثم الدخول مجدداً.خطأ “Permission denied” مع إعادة التوجيه أو الأنابيب
Permission deniedيحدث عندما تتم عملية الكتابة أو التحويل خارج صلاحيات sudo. خاطئ:sudo echo "test" > /etc/test.confصحيح:echo "test" | sudo tee /etc/test.confأو لأكثر من سطر:sudo bash -c 'echo "line1" > /etc/test.conf'تعطل sudo بسبب خطأ في تحرير ملف sudoers
إذا حررت ملفsudoers بشكل خاطئ، فقد يتوقف sudo عن العمل. الحل:- تسجيل الدخول كـ root (في Ubuntu حساب root معطل افتراضياً)
- استخدام الأوامر التالية للإصلاح:
pkexec visudoإذا لم يعمل pkexec، استخدم وضع الاستعادة (recovery mode) لإصلاح ملف sudoers. لحماية النظام دائماً عدل الملف باستخدام:sudo visudoخطأ “sudo: command not found”
sudo: command not foundيحدث إذا لم يكن sudo مثبتًا أو خارج PATH. الحل:- سجّل الدخول كـ root وثبّت sudo:
apt update
apt install sudo- أو نفّذ sudo عبر المسار الكامل:
/usr/bin/sudo ls7. الأسئلة الشائعة حول sudo
س1. ما الفرق بين sudo و su؟
ج:sudo يمنح صلاحيات المدير لأمر واحد فقط، بينما su يبدل المستخدم بالكامل (غالباً إلى root).sudo: يبقى المستخدم الحالي ويرفع صلاحيات أمر واحدsu: يبدل المستخدم للجلسة بأكملها
س2. عند استخدام sudo، هل أحتاج كلمة مرور root؟
ج: لا، تُدخل كلمة مرور المستخدم الحالي، وليس root. وهذا يقلل خطر تسرب كلمة مرور root، ويسهل تتبع العمليات.س3. أين يتم تسجيل عمليات sudo؟
ج: يتم تسجيل عمليات sudo في أماكن مختلفة حسب التوزيعة:- Ubuntu/Debian:
/var/log/auth.log - RHEL/CentOS:
/var/log/secure - بيئة systemd:
journalctl _COMM=sudo
س4. ماذا أفعل إذا أخطأت في تحرير ملف sudoers؟
ج: قبل التعديل، استخدمsudo visudo دائماً.
إذا تعطل sudo بسبب خطأ، جرب الحلول التالية:- تسجيل الدخول كـ root وإصلاح الملف بـ visudo
- الدخول لوضع الاستعادة (recovery mode) في Ubuntu
- استخدام
pkexec visudo(إذا كان polkit متوفر)
س5. هل يمكنني الحصول على صلاحية root بدون sudo؟
ج: ممكن ولكن غير مستحسن لأسباب أمنية:- استخدام أمر
suمع كلمة مرور root - تسجيل الدخول مباشرةً كـ root (معطل في Ubuntu افتراضياً)
س6. هل من الآمن تشغيل تطبيقات GUI باستخدام sudo؟
ج: عادةً لا يُنصح بذلك، مثلsudo gedit، فقد يؤدي لتلف الإعدادات.
إذا احتجت لتشغيل تطبيق GUI بصلاحية إدارية، استخدم pkexec (إذا كان متوفرًا):pkexec gedit8. الخلاصة
فهم دور sudo بشكل صحيح
في هذا المقال، شرحنا كل ما يتعلق بأمرsudo في أنظمة Linux/Unix: الأدوار الأساسية، طرق الاستخدام، الإعدادات، الاستخدام المتقدم، الأمان، الأخطاء الشائعة، والأسئلة المتكررة. sudo ليس مجرد أمر يسبق الأوامر، بل هو مفتاح لحماية النظام وإدارته بشكل سليم.الاستخدام الصحيح يحميك من المشاكل
اتبع هذه النقاط لاستخدامsudo بأمان:- العمل بأقل صلاحيات ممكنة
- استخدم visudo لتحرير الإعدادات بأمان
- راجع السجلات بانتظام
- انتبه عند استخدام الأنابيب أو إعادة التوجيه مع sudo
- تجنب استخدام sudo لتشغيل تطبيقات الواجهة الرسومية (GUI)
اختر أسلوب الإدارة المناسب لك
Linux نظام مرن للغاية. يمكنك استخدامsudo أو أدوات بديلة مثل doas حسب سياسة الأمان واحتياجاتك.أخيرًا
فهمsudo هو خطوتك الأولى لفهم Linux.
استخدمه كأداة لحماية النظام، وكن على دراية بكيفية استخدامه بشكل صحيح لتحافظ على أمان نظامك وثباته. نتمنى لك التوفيق في استخدام Linux بثقة واحترافية.

