الوحدة 3: أوامر أذونات الملفات

تحكم في صلاحيات الوصول إلى الملفات والمجلدات في نظام لينكس

نظرة عامة

تعتبر إدارة أذونات الملفات جزءًا أساسيًا من الأمان في نظام لينكس. كل ملف ومجلد يمتلك مجموعة من الصلاحيات تحدد من يمكنه قراءته، كتابته، أو تنفيذه. في هذه الوحدة، ستتعلم كيفية عرض هذه الأذونات وتعديلها.

ملاحظة: في أمثلة الأوامر أدناه، يشير الرمز $ إلى موجه الأوامر (prompt) ولا يجب كتابته عند تنفيذ الأوامر.

فهم أذونات لينكس

في نظام لينكس، كل ملف ومجلد له ثلاثة أنواع من الأذونات تمنح لثلاث فئات من المستخدمين:

أنواع الأذونات:

  • القراءة (r): الإذن بقراءة محتوى الملف أو عرض محتويات المجلد
  • الكتابة (w): الإذن بتعديل الملف أو إنشاء/حذف ملفات في المجلد
  • التنفيذ (x): الإذن بتنفيذ الملف (إذا كان برنامجًا) أو الدخول إلى المجلد

فئات المستخدمين:

  • المالك (Owner): المستخدم الذي يملك الملف/المجلد
  • المجموعة (Group): المستخدمون المنتمون لمجموعة الملف/المجلد
  • الآخرين (Others): جميع المستخدمين الآخرين في النظام

تمثيل الأذونات:

تمثل الأذونات عادة بـ 10 أحرف عند استخدام ls -l:

-rwxr-xr-- 1 user group 2048 Sep 13 10:30 script.sh

الحروف العشرة تمثل:

-
r
w
x
r
-
x
r
-
-
النوع
(1)
المالك
(3)
المجموعة
(3)
الآخرين
(3)

جدول رموز الأذونات الرقمية:

القيمة الرمز الوصف مثال
0 --- لا أذونات 000
1 --x تنفيذ فقط 001
2 -w- كتابة فقط 010
3 -wx كتابة وتنفيذ 011
4 r-- قراءة فقط 100
5 r-x قراءة وتنفيذ 101
6 rw- قراءة وكتابة 110
7 rwx قراءة وكتابة وتنفيذ 111

عرض الأذونات: ls -l

يستخدم هذا الأمر لعرض معلومات مفصلة عن الملفات والمجلدات، بما في ذلك الأذونات والملكية.

user@server:~$
ls -l
total 24 -rw-r--r-- 1 user user 125 Sep 13 10:30 document.txt drwxr-xr-x 2 user user 4096 Sep 12 14:22 my_directory -rwxr-xr-x 1 user user 8192 Sep 11 09:15 script.sh
شرح الأمر:

يعرض ls -l قائمة مفصلة بالمحتويات تشمل:

  • نوع الملف والمجموعة الأولى من الأذونات (10 أحرف في البداية)
  • عدد الوصلات الصلبة (hard links)
  • مالك الملف
  • المجموعة المالكة للملف
  • حجم الملف
  • تاريخ ووقت آخر تعديل
  • اسم الملف أو المجلد
أمثلة أخرى:
ls -la
# عرض جميع الملفات بما فيها المخفية مع التفاصيل
ls -lh
# عرض الأحجام بصيغة مقروءة (KB, MB, GB)
ls -l /var/www
# عرض محتويات مجلد معين بتفاصيل

تغيير الأذونات: chmod

يستخدم لتغيير أذونات الملفات والمجلدات. يمكن استخدامه بطريقتين: الرمزية (باستخدام الأحرف) أو الرقمية (باستخدام الأرقام).

الطريقة الرمزية (باستخدام الأحرف):

user@server:~$
chmod u+x script.sh
# إضافة إذن التنفيذ للمالك
user@server:~$
chmod g-w document.txt
# إزالة إذن الكتابة من المجموعة
user@server:~$
chmod o=r document.txt
# جعل إذن الآخرين للقراءة فقط
user@server:~$
chmod a+x script.sh
# إضافة إذن التنفيذ للجميع (المالك، المجموعة، الآخرين)

الطريقة الرقمية (باستخدام الأرقام الثمانية):

user@server:~$
chmod 755 script.sh
# rwxr-xr-x : المالك: قراءة، كتابة، تنفيذ | الآخرون: قراءة وتنفيذ
user@server:~$
chmod 644 document.txt
# rw-r--r-- : المالك: قراءة وكتابة | الآخرون: قراءة فقط
user@server:~$
chmod 600 secret.txt
# rw------- : المالك فقط: قراءة وكتابة | لا أحد آخر
شرح الأمر:

يغير chmod أذونات الملفات والمجلدات. الرموز المستخدمة في الطريقة الرمزية:

  • u: المستخدم/المالك (user/owner)
  • g: المجموعة (group)
  • o: الآخرين (others)
  • a: الكل (all)
  • +: إضافة إذن
  • -: إزالة إذن
  • =: تعيين إذن محدد
  • r: قراءة (read)
  • w: كتابة (write)
  • x: تنفيذ (execute)
أمثلة أخرى:
chmod -R 755 /path/to/directory
# تطبيق الأذونات بشكل متكرر على المجلد وجميع محتوياته
chmod u=rwx,g=rx,o= file.txt
# المالك: قراءة، كتابة، تنفيذ | المجموعة: قراءة، تنفيذ | الآخرون: لا أذونات
chmod +x script.sh
# إضافة إذن التنفيذ للجميع (مكافئ لـ a+x)
التحويل بين الطريقتين:

كل رقم في الطريقة الرقمية يمثل مجموعة من 3 أذونات (قراءة، كتابة، تنفيذ) حيث:

  • 4 = قراءة (r)
  • 2 = كتابة (w)
  • 1 = تنفيذ (x)
  • 0 = لا أذونات (-)

مثال: 7 = 4+2+1 (قراءة، كتابة، تنفيذ) | 5 = 4+1 (قراءة، تنفيذ) | 6 = 4+2 (قراءة، كتابة)

تغيير الملكية: chown

يستخدم لتغيير مالك الملف أو المجلد والمجموعة المالكة له.

user@server:~$
sudo chown newuser file.txt
# تغيير مالك الملف إلى newuser
user@server:~$
sudo chown newuser:newgroup file.txt
# تغيير المالك والمجموعة
user@server:~$
sudo chown :newgroup file.txt
# تغيير المجموعة فقط
user@server:~$
sudo chown -R user:group /path/to/directory
# تغيير ملكية المجلد وجميع محتوياته بشكل متكرر
شرح الأمر:

يغير chown مالك الملف أو المجلد والمجموعة المالكة له. الصيغة العامة:

chown [مالك][:مجموعة] ملف

يمكنك تغيير المالك فقط، أو المجموعة فقط، أو كليهما معًا.

ملاحظة: تحتاج عادةً إلى صلاحيات root (استخدام sudo) لتغيير ملكية الملفات، إلا إذا كنت المالك الحالي وتغير الملكية لمستخدم آخر ضمن مجموعتك.
أمثلة أخرى:
sudo chown user file.txt
# تغيير المالك إلى user (المجموعة تبقى كما هي)
sudo chown user: file.txt
# تغيير المالك إلى user والمجموعة إلى المجموعة الافتراضية لـ user
sudo chown :www-data file.txt
# تغيير المجموعة إلى www-data (المالك يبقى كما هو)
sudo chown -R www-data:www-data /var/www/html
# تغيير ملكية مجلد موقع الويب إلى مستخدم وخادم الويب

تغيير المجموعة: chgrp

يستخدم لتغيير المجموعة المالكة للملف أو المجلد.

user@server:~$
sudo chgrp developers app.py
# تغيير المجموعة المالكة إلى developers
user@server:~$
sudo chgrp -R www-data /var/www/html
# تغيير المجموعة بشكل متكرر للمجلد ومحتوياته
شرح الأمر:

يغير chgrp المجموعة المالكة للملف أو المجلد. هذا الأمر مفيد عندما تريد تغيير المجموعة فقط دون تغيير المالك.

أمثلة أخرى:
chgrp staff report.txt
# تغيير المجموعة إلى staff (إذا كان لديك الإذن)
sudo chgrp -R admins /opt/application
# تغيير المجموعة بشكل متكرر لمجلد التطبيق

تمرين عملي: إعداد أذونات الملفات

لنفترض أنك مدير نظام وتحتاج إلى إعداد أذونات آمنة للملفات التالية:

التمرين 1: ملف سكريبت تنفيذي

لديك ملف سكريبت باسم backup.sh تريد أن تجعله قابلاً للتنفيذ من قبل المالك فقط، مع السماح للآخرين بقراءته فقط.

الحل:

chmod 755 backup.sh
# أو
chmod u=rwx,go=rx backup.sh

التمرين 2: ملف配置 حساس

لديك ملف配置 باسم config.ini يحتوي على معلومات حساسة. تريد أن يقتصر الوصول عليه على المالك فقط.

الحل:

chmod 600 config.ini
# أو
chmod u=rw,go= config.ini

التمرين 3: مجلد مشترك

لديك مجلد باسم shared تريد أن يسمح لأعضاء المجموعة بإضافة وحذف الملفات، بينما يمكن للآخرين فقط قراءة المحتويات.

الحل:

chmod 775 shared
# أو
chmod u=rwx,g=rwx,o=rx shared

التمرين 4: ملف تنفيذي خاص

لديك ملف تنفيذي باسم admin-tool تريد أن يكون قابلاً للتنفيذ فقط من قبل المالك ولا يمكن للآخرين حتى رؤية محتواه.

الحل:

chmod 700 admin-tool
# أو
chmod u=rwx,go= admin-tool

أفضل الممارسات لأذونات الملفات

مبدأ الامتياز الأقل: منح فقط الأذونات الضرورية لأداء المهمة المطلوبة.
حماية الملفات الحساسة: استخدام أذونات مقيدة (مثل 600) للملفات التي تحتوي على معلومات حساسة.
أذونات المجلدات: تذكر أن إذن التنفيذ (x) ضروري للدخول إلى المجلدات.
استخدام المجموعات: استخدم المجموعات لإدارة الأذونات بدلاً من منح أذونات فردية.
تحذير: تجنب منح أذونات 777 (الجميع يمكنه القراءة والكتابة والتنفيذ) إلا في حالات ضرورية جدًا، فهذا يشكل خطرًا أمنيًا كبيرًا.
تحذير: كن حذرًا عند استخدام الخيار -R (تطبيق متكرر) مع chmod وchown، فتطبيق أذونات خاطئة على مجلدات النظام قد يعطل عمل النظام.

إعدادات الأذونات الموصى بها:

نوع الملف/المجلد الأذونات الموصى بها الوصف
ملفات الت-configuration 644 (rw-r--r--) المالك يمكنه الكتابة، الآخرون للقراءة فقط
المجلدات العامة 755 (rwxr-xr-x) الجميع يمكنه الدخول وقراءة المحتويات
الملفات التنفيذية 755 (rwxr-xr-x) الجميع يمكنه التنفيذ، المالك فقط يمكنه التعديل
الملفات الحساسة 600 (rw-------) المالك فقط يمكنه القراءة والكتابة
المجلدات الخاصة 700 (rwx------) المالك فقط يمكنه الدخول ورؤية المحتويات
العودة إلى الوحدة الثانية الانتقال إلى الوحدة الرابعة