إدارة المستخدمين والمجموعات (Users and Groups Management)
إدارة المستخدمين والمجموعات (Users and Groups Management)
تُعد إدارة المستخدمين والمجموعات في لينكس من أهم المهارات العملية لأي مسؤول نظام أو مطور يعمل على خوادم متعددة المستخدمين. فالنظام لا يتعامل مع الأشخاص مباشرة، بل مع هويات رقمية وصلاحيات ومجموعات تُحدد من يقرأ الملفات، ومن يُشغّل الخدمات، ومن يمتلك القدرة على تنفيذ أوامر إدارية حساسة. لهذا السبب، فإن فهم هذا المحور يُكمل بشكل طبيعي ما تناولناه سابقاً في إدارة الصلاحيات والملكية (Chmod, Chown, Sudo).
في البيئات الحقيقية، لا تقتصر إدارة الحسابات على إنشاء مستخدم جديد فقط، بل تشمل ضبط المجلد المنزلي، وربط المستخدم بمجموعات مناسبة، وتأمين كلمات المرور، ومراقبة ملفات الهوية المركزية مثل /etc/passwd و/etc/group. كما أن هذه المعرفة ترتبط أيضاً بفهم هيكلية ملفات لينكس (Filesystem Hierarchy Standard – FHS) لأن ملفات الحسابات ومعلومات المصادقة موزعة في مسارات معيارية داخل النظام.
ما المقصود بالمستخدمين والمجموعات في لينكس؟
كل عملية داخل لينكس تعمل بهوية مستخدم محددة، سواء كانت جلسة تفاعلية لمستخدم بشري أو خدمة نظام مثل خادم الويب أو قاعدة البيانات. هذه الهوية تُعرّف بواسطة رقم فريد يسمى UID، بينما تُعرّف المجموعة الأساسية برقم GID.
المجموعات تُستخدم لتسهيل الإدارة الجماعية للصلاحيات. بدلاً من منح إذن لكل مستخدم على حدة، يمكن ضم عدة مستخدمين إلى مجموعة واحدة مثل developers أو admins ثم تطبيق سياسات الوصول على المجموعة نفسها.
الفرق بين المستخدم الجذري والمستخدم العادي
المستخدم root يملك صلاحيات غير محدودة تقريباً داخل النظام، لذلك يجب استخدامه بحذر شديد. أما المستخدم العادي فصلاحياته تكون مقيدة افتراضياً، ويتم رفعها عند الحاجة باستخدام sudo وفق سياسات الأمان المعتمدة.
أفضل ممارسة أمنية هي العمل بحساب عادي يومياً، واستخدام الصلاحيات الإدارية فقط عند الحاجة الفعلية. هذا يقلل أخطاء الحذف أو التعديل غير المقصود في النظام.
الملفات الأساسية المسؤولة عن الحسابات
يعتمد لينكس على عدة ملفات نصية مركزية لحفظ معلومات الحسابات والمجموعات. ويمكن استعراض هذه الملفات بأدوات الطرفية التي تعلمناها في الدخول الأول إلى الطرفية (Terminal): الأوامر الأساسية والمساعدة (man, help) وأدوات عرض ومعالجة النصوص (cat, nano, vim, less, tail).
/etc/passwd: يحتوي بيانات المستخدمين العامة مثل اسم الحساب وUID والمسار المنزلي والشل الافتراضي./etc/shadow: يحتوي كلمات المرور المُشفرة وسياسات انتهاء الصلاحية./etc/group: يضم تعريفات المجموعات والأعضاء التابعين لها./etc/gshadow: معلومات أمان إضافية مرتبطة بالمجموعات.
مثال على استعراض معلومات حساب معيّن:
grep '^ahmed:' /etc/passwd
id ahmed
groups ahmed
إنشاء المستخدمين وإدارتهم عملياً
تختلف الأدوات قليلاً بين التوزيعات، لكن الأشهر هما useradd وadduser. الأولى منخفضة المستوى وأكثر شيوعاً في السكربتات، بينما الثانية غالباً توفر واجهة أسهل في بعض التوزيعات مثل Debian وUbuntu.
إنشاء مستخدم جديد مع مجلد منزلي
sudo useradd -m -s /bin/bash ahmed
sudo passwd ahmed
الأمر السابق ينشئ المستخدم ahmed مع مجلد منزلي وواجهة shell من نوع Bash، ثم يطلب تعيين كلمة مرور. ويمكن التحقق من نجاح العملية عبر id ahmed.
تعديل خصائص مستخدم موجود
عند الحاجة إلى تغيير الاسم الوصفي أو مجلد المنزل أو الصدفة الافتراضية، نستخدم usermod:
sudo usermod -s /bin/zsh ahmed
sudo usermod -aG sudo ahmed
الخيار -aG مهم جداً، لأنه يضيف المستخدم إلى مجموعة دون حذف عضوياته الحالية. إساءة استخدام هذا الجزء قد تؤدي إلى فقدان عضويات مهمة.
حذف المستخدم بشكل آمن
sudo userdel ahmed
sudo userdel -r ahmed
الأمر الأول يحذف الحساب فقط، بينما -r يزيل أيضاً المجلد المنزلي والملفات البريدية المرتبطة به. قبل الحذف النهائي، تأكد من عدم امتلاك المستخدم لملفات حرجة ضمن مسارات مشتركة، ويمكنك الاستفادة من البحث المتقدم في النظام باستخدام (find, locate, grep) لمراجعة الملفات المملوكة له.
إدارة المجموعات بكفاءة
المجموعة في لينكس وسيلة تنظيمية وأمنية في آن واحد. عندما تعمل فرق متعددة على مشروع واحد أو عندما تحتاج خدمة ما إلى مشاركة الوصول إلى مجلدات محددة، فإن تصميم المجموعات بشكل صحيح يجعل الإدارة أبسط وأكثر أماناً.
إنشاء مجموعة وإضافة مستخدمين إليها
sudo groupadd developers
sudo usermod -aG developers ahmed
sudo usermod -aG developers sara
بعد ذلك يمكن إسناد ملكية مجلد المشروع إلى هذه المجموعة وربط الصلاحيات بها، وهو ما يتكامل مباشرة مع مفاهيم الملكية والأذونات في لينكس.
التحقق من عضوية المجموعات
groups ahmed
id ahmed
getent group developers
هذه الأوامر تُظهر المجموعات الأساسية والثانوية، وهي مفيدة جداً عند تشخيص مشاكل الوصول إلى الملفات أو فشل تشغيل بعض التطبيقات متعددة المستخدمين.
سيناريو عملي: فريق تطوير على خادم مشترك
لنفترض أنك تدير خادماً يعمل عليه ثلاثة مطورين، وتريد أن يتمكنوا جميعاً من الوصول إلى مجلد مشروع واحد دون منحهم صلاحيات جذرية. الخطوات تكون عادة كالتالي:
- إنشاء مجموعة مشتركة مثل
developers. - إضافة المستخدمين إلى المجموعة.
- تغيير ملكية مجلد المشروع إلى المستخدم المسؤول والمجموعة المشتركة.
- ضبط الأذونات بحيث تسمح بالقراءة والكتابة للمجموعة.
sudo groupadd developers
sudo usermod -aG developers ahmed
sudo usermod -aG developers sara
sudo chown -R root:developers /var/www/project
sudo chmod -R 2775 /var/www/project
الرقم 2 في بداية 2775 يفعّل خاصية setgid على المجلد، ما يجعل الملفات الجديدة ترث المجموعة نفسها تلقائياً. هذه ممارسة ممتازة في مجلدات العمل المشتركة.
لا تمنح أعضاء الفريق صلاحيات
sudoإلا عند وجود حاجة تشغيلية واضحة. المجموعة المشتركة غالباً تكفي لإدارة محتوى المشروع دون تعريض النظام لمخاطر غير ضرورية.
أوامر مهمة للمراجعة والتدقيق
في العمل اليومي، تحتاج إلى أوامر سريعة لفحص الحسابات والهوية الحالية والصلاحيات الفعالة:
whoami: يعرض اسم المستخدم الحالي.id: يعرض UID وGID والمجموعات.su - username: التبديل إلى مستخدم آخر.passwd: تغيير كلمة المرور.
whoami
id
su - ahmed
passwd ahmed
وإذا احتجت إلى حفظ نتائج الأوامر أو تمريرها لأدوات أخرى، فبإمكانك الاستفادة من الأنابيب وإعادة التوجيه (Pipes and Redirections: |, >, >>) لتوثيق المراجعات أو تحليل المخرجات بدقة أعلى.
أفضل الممارسات الأمنية في إدارة الحسابات
الإدارة الجيدة للمستخدمين لا تعني فقط تنفيذ الأوامر الصحيحة، بل بناء سياسة تشغيل منضبطة تمنع التوسع العشوائي في الصلاحيات. من أهم الممارسات:
- استخدام مبدأ أقل صلاحية ممكنة
Least Privilege. - إلغاء الحسابات غير المستخدمة فوراً أو قفلها عند مغادرة الموظفين.
- مراجعة عضويات المجموعات الحساسة بشكل دوري.
- تجنّب استخدام كلمة مرور مشتركة بين عدة أشخاص أو خدمات.
- فصل حسابات الخدمات عن الحسابات البشرية كلما أمكن.
كما يُفضّل توثيق أي تغيير في المستخدمين والمجموعات ضمن إجراءات تشغيل واضحة، خاصة على الخوادم الإنتاجية التي تستضيف تطبيقات أو مواقع حساسة.
خلاصة
إدارة المستخدمين والمجموعات في لينكس ليست مجرد أوامر تحفظها، بل طبقة أساسية من طبقات الأمان والتنظيم داخل النظام. عندما تفهم كيف تُنشأ الهويات، وكيف تُربط بالمجموعات، وكيف تُطبق عليها الملكية والصلاحيات، تصبح أكثر قدرة على بناء بيئة مستقرة وآمنة وقابلة للتوسع.
ابدأ دائماً بالتصميم المنطقي للحسابات، ثم طبّق أقل قدر ممكن من الصلاحيات، وراجع ملفات الهوية بانتظام. بهذه المنهجية ستتمكن من إدارة الخوادم والمشاريع المشتركة بثقة واحترافية أعلى.
9 comments