الصلاحيات في Linux: chmod والمالك و sudo
Linux نظام صُمم من البداية ليستخدمه عدة أشخاص على نفس الجهاز، ولتشغيل الخوادم التي تحمل بيانات حساسة. لذلك فيه نظام صارم يحدد: من يستطيع أن يفعل ماذا بكل ملف. هذا النظام اسمه الصلاحيات (Permissions)، وهو من أسباب أمان Linux. في هذا الدرس الأخير ستتعلم قراءة الصلاحيات وتغييرها، وستشغّل أول سكربت لك.
الصلاحيات الثلاث
Section titled “الصلاحيات الثلاث”لكل ملف ثلاث صلاحيات:
| الحرف | الصلاحية | على الملف | على المجلد |
|---|---|---|---|
r |
القراءة (Read) | قراءة محتواه | عرض ما بداخله |
w |
الكتابة (Write) | تعديله | إضافة ملفات وحذفها داخله |
x |
التنفيذ (Execute) | تشغيله كبرنامج | الدخول إليه بـ cd |
لمن هذه الصلاحيات؟
Section titled “لمن هذه الصلاحيات؟”تُعطى الصلاحيات لثلاث فئات:
- المالك (User): صاحب الملف، وغالباً من أنشأه.
- المجموعة (Group): مجموعة مستخدمين، مثل فريق العمل.
- الآخرون (Others): كل باقي المستخدمين.
تخيّل دفتر يومياتك: أنت (المالك) تقرأ وتكتب فيه، وعائلتك (المجموعة) ربما تقرأ فقط، والغرباء (الآخرون) لا يقتربون منه أصلاً.
قراءة الصلاحيات في ls -l
Section titled “قراءة الصلاحيات في ls -l”ls -l-rw-r--r-- 1 sara sara 120 Nov 10 12:00 notes.txt-rwxr-xr-x 1 sara sara 80 Nov 10 12:05 hello.shdrwxr-x--- 2 sara team 4096 Nov 10 12:10 projectلنفكك -rw-r--r--، وهي عشرة رموز:
- rw- r-- r--│ │ │ └── الآخرون: قراءة فقط│ │ └── المجموعة: قراءة فقط│ └── المالك: قراءة وكتابة└── النوع: - ملف، d مجلدالشرطة - في مكان أي حرف تعني أن الصلاحية غير موجودة. إذن notes.txt: المالك يقرأ ويكتب، والباقون يقرؤون فقط. و hello.sh فيها x، فهي قابلة للتنفيذ. والمجلد project لا يستطيع «الآخرون» حتى الدخول إليه.
بعد الصلاحيات تظهر كلمتان: المالك (sara) ثم المجموعة (sara أو team).
تغيير الصلاحيات: chmod بالحروف
Section titled “تغيير الصلاحيات: chmod بالحروف”chmod (من change mode) يغيّر الصلاحيات. الطريقة الأسهل للفهم بالحروف:
chmod u+x hello.sh # أضف التنفيذ للمالكchmod g-w notes.txt # احذف الكتابة من المجموعةchmod o-r notes.txt # احذف القراءة من الآخرينchmod a+r notes.txt # أضف القراءة للجميع- لمن:
uالمالك، وgالمجموعة، وoالآخرون، وaالجميع. - ماذا:
+إضافة، و-حذف، و=تحديد بالضبط. - أي صلاحية:
rأوwأوx.
chmod بالأرقام
Section titled “chmod بالأرقام”الطريقة الأشهر عند المحترفين: كل صلاحية لها رقم، ونجمعها:
| الصلاحية | الرقم |
|---|---|
r قراءة |
4 |
w كتابة |
2 |
x تنفيذ |
1 |
فمثلاً: rwx = 4 + 2 + 1 = 7، و rw- = 4 + 2 = 6، و r-x = 4 + 1 = 5، و r-- = 4.
ثم تكتب ثلاثة أرقام: للمالك، ثم المجموعة، ثم الآخرين:
chmod 644 notes.txt # rw-r--r--chmod 755 hello.sh # rwxr-xr-xchmod 600 secret.txt # rw------- لك وحدك| الرقم | المعنى | يُستخدم لـ |
|---|---|---|
644 |
المالك يقرأ ويكتب، والباقون يقرؤون | الملفات العادية وصفحات الموقع |
755 |
المالك كل شيء، والباقون يقرؤون وينفذون | السكربتات والمجلدات |
600 |
المالك فقط يقرأ ويكتب | الملفات السرية مثل مفاتيح SSH |
أول سكربت لك
Section titled “أول سكربت لك”السكربت (Script) ملف نصي فيه أوامر Linux تُنفَّذ بالترتيب. أنشئ ملف hello.sh:
#!/bin/bashecho "أهلاً من السكربت!"echo "اليوم هو: $(date +%A)"- السطر الأول
#!/bin/bashيسمى Shebang: يخبر النظام بالبرنامج الذي سينفّذ الملف. $(date +%A)تنفّذ الأمرdateوتضع نتيجته (اسم اليوم) داخل النص.
لتشغيله، يجب أن يكون قابلاً للتنفيذ:
./hello.shbash: ./hello.sh: Permission deniedالملف الجديد لا يملك صلاحية x افتراضياً، لأسباب أمنية. نعطيه إياها:
chmod +x hello.sh./hello.shأهلاً من السكربت!اليوم هو: Tuesday(اسم اليوم سيكون يوم تشغيلك أنت.) و ./ تعني «الملف الموجود في المجلد الحالي». وهكذا يؤتمت المبرمجون المهام المتكررة: النسخ الاحتياطي، ورفع المواقع، وتنظيف الملفات القديمة.
sudo: صلاحيات المدير
Section titled “sudo: صلاحيات المدير”في Linux مستخدم خاص اسمه root (المدير)، يستطيع فعل أي شيء. ولأن هذا خطير، لا نعمل به مباشرة. بدلاً من ذلك، نستخدم sudo قبل الأمر الذي يحتاج صلاحيات المدير فقط:
sudo apt install gitسيطلب منك كلمة المرور، ثم ينفّذ هذا الأمر الواحد بصلاحيات المدير. مثل مفتاح المدير في مدرسة: لا يُعطى للجميع، ويُستخدم فقط عند الحاجة، ثم يُعاد.
ولتغيير مالك ملف (يحتاج عادة sudo): sudo chown sara:team report.txt.
جرّب بنفسك
Section titled “جرّب بنفسك”- أنشئ سكربت
backup.shينسخ ملفاً معيناً إلى مجلدbackupويطبع «تم النسخ». تذكّر سطر#!/bin/bash. - حاول تشغيله بـ
./backup.shولاحظ الخطأ، ثم أعطه صلاحية التنفيذ وشغّله. - أنشئ ملف
diary.txtواجعل صلاحياته600، وتأكد بـls -l. - حوّل هذه الصلاحيات إلى أرقام بنفسك:
rwxr-x---وrw-rw-r--.
(ملاحظة: على Git Bash في ويندوز، بعض أوامر الصلاحيات لا يظهر تأثيرها كاملاً لأن نظام ملفات ويندوز مختلف. للتجربة الحقيقية استخدم Linux أو WSL.)
أخطاء شائعة
Section titled “أخطاء شائعة”- Permission denied عند تشغيل سكربت: نسيت
chmod +x. - chmod 777 لحل المشاكل: ثغرة أمنية. أعطِ الصلاحية المطلوبة فقط.
- sudo مع كل شيء: قد تنشئ ملفات يملكها المدير فلا تستطيع تعديلها لاحقاً كمستخدم عادي.
اختبر نفسك
Section titled “اختبر نفسك”سؤال
ما الصلاحيات التي يمثلها الرقم 754؟
7 = rwx للمالك، و 5 = r-x للمجموعة، و 4 = r-- للآخرين.
سؤال
ظهرت رسالة Permission denied عند تشغيل ./deploy.sh. ما الحل الأنسب غالباً؟
الملف يحتاج صلاحية التنفيذ فقط، و chmod +x يضيفها دون فتح صلاحيات غير ضرورية.
الخلاصة
Section titled “الخلاصة”- الصلاحيات
rوwوxلثلاث فئات: المالك والمجموعة والآخرين. ls -lيعرضها:-rw-r--r--تعني ملفاً يكتب فيه المالك ويقرؤه الجميع.chmodبالحروف (u+x) أو بالأرقام (644و755و600)، وتجنّب777.- السكربت يحتاج
#!/bin/bashوchmod +xليعمل بـ./script.sh. sudoلصلاحيات المدير عند الحاجة فقط.