الفصل 5.2 - إدارة المجموعات
الأهداف التعليمية
في نهاية هذا الفصل، ستكون قادرًا على:
- فهم نظام المجموعات في لينكس
- إنشاء وحذف المجموعات
- إضافة/إزالة المستخدمين من المجموعات
- فهم المجموعة الرئيسية مقابل المجموعات الثانوية
- استخدام المجموعات للصلاحيات
المقدمة
تسمح المجموعات بتجميع المستخدمين لمشاركة الصلاحيات والموارد.
المزايا:
- صلاحيات مشتركة
- إدارة مبسطة
- وصول محكم للموارد
أنواع المجموعات
المجموعة الرئيسية (Primary Group)
الخصائص:
- للمستخدم مجموعة رئيسية واحدة فقط
- محددة في
/etc/passwd(GID) - تُنشأ تلقائيًا مع المستخدم
- عادةً ما يكون لها نفس اسم المستخدم
المجموعات الثانوية (Supplementary Groups)
الخصائص:
- يمكن للمستخدم الانتماء إلى عدة مجموعات
- محددة في
/etc/group - صلاحيات إضافية
- وصول إلى موارد إضافية
ملف /etc/group
التنسيق
# Format: groupname:password:GID:members
root:x:0:
users:x:100:user1,user2
developers:x:1001:user1,user3,user4
sudo:x:27:user1,user2
www-data:x:33:
الحقول:
- groupname: اسم المجموعة
- password: x (في /etc/gshadow، نادرًا ما يُستخدم)
- GID: معرف المجموعة
- members: قائمة الأعضاء (مفصولة بفواصل)
إنشاء مجموعة
groupadd
# مجموعة بسيطة
sudo groupadd developers
# مع GID محدد
sudo groupadd -g 2000 developers
# التحقق من توفر GID
sudo groupadd -g 2000 developers # خطأ إذا كان موجودًا
# نظام (GID < 1000)
sudo groupadd -r systemgroup
تعديل مجموعة
groupmod
# تغيير GID
sudo groupmod -g 2001 developers
# إعادة تسمية
sudo groupmod -n newname oldname
# التحقق
getent group developers
حذف مجموعة
groupdel
# حذف مجموعة
sudo groupdel developers
# ملاحظة: لا يمكن حذف إذا كانت المجموعة الرئيسية لمستخدم
إدارة الأعضاء
إضافة مستخدم
# إضافة إلى مجموعة (يحتفظ بالمجموعات الأخرى)
sudo usermod -aG developers user1
# -a: append (إضافة، لا تستبدل)
# -G: مجموعات ثانوية
# التحقق
groups user1
id user1
إزالة مستخدم
# إزالة من مجموعة (يدويًا)
# تحرير /etc/group أو استخدام gpasswd
sudo gpasswd -d user1 developers
عرض الأعضاء
# أعضاء مجموعة
getent group developers
grep developers /etc/group
# مجموعات مستخدم
groups user1
id user1
groups # المستخدم الحالي
المجموعة الرئيسية مقابل الثانوية
تغيير المجموعة الرئيسية
# تغيير المجموعة الرئيسية
sudo usermod -g developers user1
# التحقق
id user1
# uid=1000(user1) gid=1001(developers) groups=1001(developers),1002(sudo)
الملفات الجديدة
القاعدة:
- تُنشأ الملفات الجديدة مع المجموعة الرئيسية للمستخدم
- يمكن تغييرها باستخدام
newgrpمؤقتًا
# تغيير المجموعة الفعالة مؤقتًا
newgrp developers
# التحقق
groups # developers تصبح الأولى
أوامر مفيدة
getent
# معلومات المجموعة
getent group developers
# جميع المجموعات
getent group
# التحقق من وجود المجموعة
getent group developers && echo "موجودة"
id
# معلومات المستخدم
id
id user1
# التنسيق: uid=1000(user1) gid=1000(user1) groups=1000(user1),27(sudo),1001(developers)
groups
# مجموعات المستخدم الحالي
groups
# مجموعات مستخدم
groups user1
حالات استخدام عملية
مجموعة لمشروع
# إنشاء مجموعة مشروع
sudo groupadd projet-alpha
# إضافة أعضاء
sudo usermod -aG projet-alpha dev1
sudo usermod -aG projet-alpha dev2
# إنشاء دليل مشترك
sudo mkdir /srv/projet-alpha
sudo chgrp projet-alpha /srv/projet-alpha
sudo chmod 775 /srv/projet-alpha
# يمكن للأعضاء الآن التعاون
مجموعة المديرين
# إضافة إلى مجموعة sudo
sudo usermod -aG sudo user1
# التحقق
groups user1
# user1 sudo
# يمكنه الآن استخدام sudo
ملخص
في هذا الفصل، تعلمت:
المجموعات: تجميع المستخدمين للصلاحيات المشتركة
الأنواع: رئيسية (واحدة) مقابل ثانوية (عدة)
الملفات: /etc/group للتكوين
الإنشاء: groupadd
التعديل: groupmod
الأعضاء: usermod -aG، gpasswd -d
الأوامر: getent، id، groups
الخطوات التالية
الفصل 5.3: صلاحيات متقدمة
الفصل 5.4: قوائم التحكم في الوصول (ACL)
الفصل أنشئ في: ديسمبر 2024