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

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

الحقول:

  1. groupname: اسم المجموعة
  2. password: x (في /etc/gshadow، نادرًا ما يُستخدم)
  3. GID: معرف المجموعة
  4. 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