انتقل إلى المحتوى الرئيسي

الفصل 5.3 - الأذونات المتقدمة

أهداف التعلم​

في نهاية هذا الفصل، ستكون قادرًا على:

  • فهم الأذونات الخاصة (SUID، SGID، Sticky Bit)
  • استخدام قوائم التحكم في الوصول (ACL)
  • إدارة الأذونات بشكل متقدم
  • فهم umask والأذونات الافتراضية

الأذونات الخاصة​

SUID (Set User ID)​

السلوك:

  • يتم تنفيذ الملف بأذونات المالك
  • وليس المستخدم الذي يقوم بتنفيذه
# تعيين SUID
chmod u+s fichier
chmod 4755 fichier # 4 = SUID

# عرض (s بدلاً من x)
ls -l /usr/bin/passwd
# -rwsr-xr-x 1 root root ... /usr/bin/passwd
# ^
# SUID

# مثال: /usr/bin/passwd
# يسمح للمستخدمين بتعديل /etc/shadow
# (عادةً ما يكون متاحًا فقط لـ root)

الأمان:

  • استخدم بحذر
  • يمكن استغلاله إذا تم تكوينه بشكل خاطئ

SGID (Set Group ID)​

السلوك:

  • يتم تنفيذ الملف بأذونات المجموعة
  • على الدليل: الملفات الجديدة ترث المجموعة
# تعيين SGID
chmod g+s fichier
chmod 2755 fichier # 2 = SGID

# على الدليل
chmod g+s repertoire/
# الملفات الجديدة تُنشأ مع مجموعة الدليل

# عرض (s بدلاً من x)
ls -ld repertoire/
# drwxrwsr-x ... repertoire/
# ^
# SGID

الاستخدام:

  • الأدلة المشتركة
  • التعاون في الفريق

Sticky Bit​

السلوك:

  • على الدليل: يمنع الحذف من قبل الآخرين
  • فقط المالك يمكنه حذف ملفاته
# تعيين Sticky Bit
chmod +t repertoire/
chmod 1777 repertoire/ # 1 = Sticky Bit

# عرض (t بدلاً من x)
ls -ld /tmp
# drwxrwxrwt ... /tmp
# ^
# Sticky Bit

# مثال: /tmp
# يمكن للجميع إنشاء ملفات
# لكن لا يمكنهم حذف سوى ملفاتهم الخاصة

الاستخدام:

  • الأدلة المشتركة (/tmp)
  • منع الحذف العرضي

ACL (قوائم التحكم في الوصول)​

مقدمة​

تسمح ACL بأذونات أكثر دقة من النظام القياسي (المالك/المجموعة/الآخرين).

# تثبيت أدوات ACL
sudo apt install acl # Ubuntu/Debian
sudo yum install acl # Red Hat/CentOS

عرض ACL​

# عرض ACL لملف
getfacl fichier.txt

# عرض ACL لدليل
getfacl repertoire/

# مثال على المخرجات:
# # file: fichier.txt
# # owner: user1
# # group: users
# user::rw-
# group::r--
# other::r--

تعيين ACL​

# السماح لـ user2 بالقراءة/الكتابة
setfacl -m u:user2:rw fichier.txt

# السماح لمجموعة
setfacl -m g:developers:rwx repertoire/

# السماح للآخرين
setfacl -m o::r fichier.txt

# ACL الافتراضية (الموروثة)
setfacl -d -m u:user2:rw repertoire/
# الملفات الجديدة سترث هذه ACL

إزالة ACL​

# إزالة ACL للمستخدم
setfacl -x u:user2 fichier.txt

# إزالة جميع ACL
setfacl -b fichier.txt

قناع ACL​

يقيد القناع الأذونات الفعلية:

# تعيين القناع
setfacl -m m::r fichier.txt
# حتى إذا كانت ACL تمنح rwx، فإن القناع يقتصر على r

umask - الأذونات الافتراضية​

ما هو umask؟​

يحدد umask الأذونات الافتراضية للملفات والأدلة الجديدة.

# عرض umask الحالي
umask

# التنسيق الثماني (غالبًا 0022 أو 0002)

حساب الأذونات​

الملفات:

  • الأذونات الأساسية: 666 (rw-rw-rw-)
  • الأذونات النهائية: 666 - umask

الأدلة:

  • الأذونات الأساسية: 777 (rwxrwxrwx)
  • الأذونات النهائية: 777 - umask

أمثلة​

# umask 022
# الملفات: 666 - 022 = 644 (rw-r--r--)
# الأدلة: 777 - 022 = 755 (rwxr-xr-x)

# umask 002
# الملفات: 666 - 002 = 664 (rw-rw-r--)
# الأدلة: 777 - 002 = 775 (rwxrwxr-x)

# umask 077
# الملفات: 666 - 077 = 600 (rw-------)
# الأدلة: 777 - 077 = 700 (rwx------)

تعيين umask​

# مؤقت (جلسة)
umask 002

# دائم (في ~/.bashrc أو /etc/profile)
umask 002

أمثلة عملية​

السيناريو 1: دليل مشترك​

# إنشاء دليل مشترك
sudo mkdir /srv/shared
sudo chgrp developers /srv/shared
sudo chmod 2775 /srv/shared # SGID

# الملفات الجديدة سترث المجموعة

السيناريو 2: أذونات دقيقة​

# ملف بأذونات محددة
setfacl -m u:user1:rw fichier.txt
setfacl -m u:user2:r fichier.txt
setfacl -m g:developers:rwx fichier.txt

السيناريو 3: دليل تعاوني​

# دليل يمكن للجميع إنشاء ملفات فيه ولكن لا يمكنهم الحذف
sudo mkdir /srv/collab
sudo chmod 1777 /srv/collab # Sticky Bit + جميع الحقوق

ملخص​

في هذا الفصل، تعلمت:

SUID: التنفيذ بأذونات المالك
SGID: التنفيذ بأذونات المجموعة، وراثة المجموعة
Sticky Bit: يمنع الحذف من قبل الآخرين
ACL: أذونات دقيقة، أكثر مرونة من القياسي
umask: الأذونات الافتراضية للملفات الجديدة
الممارسة: الجمع لتلبية الاحتياجات الخاصة


الخطوات التالية​

الفصل 5.4: أفضل الممارسات
الوحدة 6: برمجة الشيل


تم إنشاء الفصل في: ديسمبر 2024