نظرة عامة
تعتبر إدارة أذونات الملفات جزءًا أساسيًا من الأمان في نظام لينكس. كل ملف ومجلد يمتلك مجموعة من الصلاحيات تحدد من يمكنه قراءته، كتابته، أو تنفيذه. في هذه الوحدة، ستتعلم كيفية عرض هذه الأذونات وتعديلها.
ملاحظة: في أمثلة الأوامر أدناه، يشير الرمز $ إلى موجه الأوامر (prompt) ولا يجب كتابته عند تنفيذ الأوامر.
فهم أذونات لينكس
في نظام لينكس، كل ملف ومجلد له ثلاثة أنواع من الأذونات تمنح لثلاث فئات من المستخدمين:
أنواع الأذونات:
- القراءة (r): الإذن بقراءة محتوى الملف أو عرض محتويات المجلد
- الكتابة (w): الإذن بتعديل الملف أو إنشاء/حذف ملفات في المجلد
- التنفيذ (x): الإذن بتنفيذ الملف (إذا كان برنامجًا) أو الدخول إلى المجلد
فئات المستخدمين:
- المالك (Owner): المستخدم الذي يملك الملف/المجلد
- المجموعة (Group): المستخدمون المنتمون لمجموعة الملف/المجلد
- الآخرين (Others): جميع المستخدمين الآخرين في النظام
تمثيل الأذونات:
تمثل الأذونات عادة بـ 10 أحرف عند استخدام ls -l:
-rwxr-xr-- 1 user group 2048 Sep 13 10:30 script.sh
الحروف العشرة تمثل:
النوع
(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
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
user@server:~$
chmod 644 document.txt
user@server:~$
chmod 600 secret.txt
شرح الأمر:
يغير 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
التحويل بين الطريقتين:
كل رقم في الطريقة الرقمية يمثل مجموعة من 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
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
sudo chown user: file.txt
sudo chown :www-data file.txt
sudo chown -R www-data:www-data /var/www/html
تغيير المجموعة: chgrp
يستخدم لتغيير المجموعة المالكة للملف أو المجلد.
user@server:~$
sudo chgrp developers app.py
user@server:~$
sudo chgrp -R www-data /var/www/html
شرح الأمر:
يغير chgrp المجموعة المالكة للملف أو المجلد. هذا الأمر مفيد عندما تريد تغيير المجموعة فقط دون تغيير المالك.
أمثلة أخرى:
chgrp staff report.txt
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------) |
المالك فقط يمكنه الدخول ورؤية المحتويات |