الفصل 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