نظرة عامة
تُعد إدارة المستخدمين والمجموعات من المهام الأساسية لأي مسؤول نظام. في لينكس، يتم التعامل مع المستخدمين والمجموعات من خلال سطر الأوامر، مما يمنحك تحكمًا كاملاً في صلاحيات الوصول إلى الملفات والخدمات.
ملاحظة: في أمثلة الأوامر أدناه، يشير الرمز $ إلى موجه الأوامر (prompt) ولا يجب كتابته عند تنفيذ الأوامر.
تحذير: تتطلب معظم أوامر إدارة المستخدمين والمجموعات صلاحيات الجذر (root)، لذا يجب استخدامها بحذر ومع الأمر sudo.
فهم نظام المستخدمين في لينكس
في نظام لينكس، يتم إدارة المستخدمين والمجموعات من خلال عدة ملفات مهمة:
ملفات إدارة المستخدمين:
- /etc/passwd: يحتوي على معلومات الحسابات
- /etc/shadow: يحتوي على كلمات المرور المشفرة
- /etc/group: يحتوي على معلومات المجموعات
- /etc/gshadow: يحتوي على كلمات مرور المجموعات
أنواع المستخدمين:
- المستخدم العادي: لديه صلاحيات محدودة
- مستخدم root: لديه جميع الصلاحيات
- مستخدم النظام: حسابات تستخدمها التطبيقات والخدمات
هيكل ملف /etc/passwd:
username:x:1001:1001:User Name:/home/username:/bin/bash
كل حقل مفصول بنقطتين (:) ويمثل:
- اسم المستخدم
- كلمة المرور (عادة x، حيث تخزن في /etc/shadow)
- معرف المستخدم (UID)
- معرف المجموعة الأساسية (GID)
- الاسم الكامل أو الوصف
- المجلد الرئيسي
- الصدفة الافتراضية (shell)
إنشاء مستخدم جديد: useradd
يستخدم لإنشاء مستخدم جديد في النظام.
user@server:~$
sudo useradd newuser
user@server:~$
sudo useradd -m -d /home/newuser -s /bin/bash -c "New User" -U newuser
شرح الأمر:
ينشئ useradd مستخدمًا جديدًا في النظام. بعض الخيارات الشائعة:
- -m: إنشاء المجلد الرئيسي للمستخدم
- -d: تحديد المسار للمجلد الرئيسي
- -s: تحديد الصدفة الافتراضية
- -c: إضافة تعليق أو وصف
- -U: إنشاء مجموعة تحمل نفس اسم المستخدم
- -G: إضافة المستخدم إلى مجموعات إضافية
أمثلة أخرى:
sudo useradd -m -s /bin/bash john
sudo useradd -G developers,admins alice
sudo useradd -u 1500 -g developers bob
ملاحظة: بعد إنشاء المستخدم، تحتاج إلى تعيين كلمة مرور باستخدام الأمر passwd لتمكين المستخدم من تسجيل الدخول.
إدارة كلمات المرور: passwd
يستخدم لتغيير كلمة مرور المستخدم أو إدارتها.
user@server:~$
passwd
user@server:~$
sudo passwd newuser
user@server:~$
sudo passwd -l username
user@server:~$
sudo passwd -u username
شرح الأمر:
يدير passwd كلمات مرور المستخدمين. بعض الخيارات المفيدة:
- -l: قفل حساب مستخدم
- -u: فتح حساب مستخدم
- -d: حذف كلمة مرور المستخدم (جعل الحساب بلا كلمة مرور)
- -e: جعل كلمة المرور منتهية الصلاحية (إجبار المستخدم على تغييرها)
- -S: عرض حالة كلمة مرور المستخدم
أمثلة أخرى:
sudo passwd -d testuser
sudo passwd -e john
sudo passwd -S alice
تعديل المستخدم: usermod
يستخدم لتعديل خصائص مستخدم موجود.
user@server:~$
sudo usermod -aG sudo username
user@server:~$
sudo usermod -d /new/home/dir -m username
user@server:~$
sudo usermod -s /sbin/nologin username
شرح الأمر:
يعدل usermod خصائص مستخدم موجود. بعض الخيارات المهمة:
- -aG: إضافة المستخدم إلى مجموعات إضافية (بدون إزالة المجموعات الحالية)
- -d: تغيير المجلد الرئيسي للمستخدم
- -m: نقل محتويات المجلد القديم إلى الجديد (يستخدم مع -d)
- -s: تغيير الصدفة الافتراضية
- -L: قفل حساب المستخدم
- -U: فتح حساب مستخدم
- -e: تعيين تاريخ انتهاء للحساب
أمثلة أخرى:
sudo usermod -c "John Doe" johndoe
sudo usermod -u 1005 username
sudo usermod -G "" username
تحذير: كن حذرًا عند تغيير UID أو GID للمستخدم، فقد يؤدي ذلك إلى مشاكل في ملكية الملفات.
حذف المستخدم: userdel
يستخدم لحذف مستخدم من النظام.
user@server:~$
sudo userdel olduser
user@server:~$
sudo userdel -r olduser
شرح الأمر:
يحذف userdel مستخدمًا من النظام. الخيارات المتاحة:
- -r: حذف المجلد الرئيسي للمستخدم وملفات البريد
- -f: حذف قسري حتى إذا كان المستخدم مسجلاً دخوله
تحذير: كن حذرًا عند استخدام الخيار -r، فسيتم حذف جميع ملفات المستخدم بشكل دائم ولا يمكن استعادتها.
أمثلة أخرى:
sudo userdel -f lockeduser
sudo userdel -r -f problematicuser
إنشاء مجموعة: groupadd
يستخدم لإنشاء مجموعة جديدة في النظام.
user@server:~$
sudo groupadd developers
user@server:~$
sudo groupadd -g 1005 admins
شرح الأمر:
ينشئ groupadd مجموعة جديدة في النظام. بعض الخيارات المتاحة:
- -g: تحديد معرف المجموعة (GID) يدويًا
- -r: إنشاء مجموعة نظام (بمعرف أقل من 1000 عادة)
- -f: الخروج بصمت إذا كانت المجموعة موجودة بالفعل
أمثلة أخرى:
sudo groupadd -r systemgroup
sudo groupadd -g 2000 -f developers
حذف مجموعة: groupdel
يستخدم لحذف مجموعة من النظام.
user@server:~$
sudo groupdel oldgroup
شرح الأمر:
يحذف groupdel مجموعة من النظام. لا يمكن حذف مجموعة إذا كانت المجموعة الأساسية لأي مستخدم.
تحذير: لا يمكن حذف مجموعة إذا كانت المجموعة الأساسية لأي مستخدم. يجب أولاً تغيير المجموعة الأساسية للمستخدمين أو حذفهم.
عرض معلومات الهوية: id
يعرض معلومات الهوية (UID و GID) للمستخدم.
user@server:~$
id
uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)
user@server:~$
id username
شرح الأمر:
يعرض id معلومات الهوية للمستخدم، بما في ذلك:
- معرف المستخدم (UID)
- معرف المجموعة الأساسية (GID)
- قائمة المجموعات التي ينتمي إليها المستخدم
أمثلة أخرى:
id -u
id -g
id -Gn
id -u username
عرض المستخدمين المتصلين: who
يعرض قائمة بالمستخدمين المتصلين حاليًا بالنظام.
user@server:~$
who
user pts/0 2023-09-13 10:30 (192.168.1.100)
admin pts/1 2023-09-13 11:15 (192.168.1.101)
شرح الأمر:
يعرض who معلومات عن المستخدمين المتصلين حاليًا بالنظام، بما في ذلك:
- اسم المستخدم
- نقطة الاتصال (terminal)
- وقت وتاريخ الاتصال
- عنوان IP للمستخدم (إذا كان متصلاً عن بعد)
أمثلة أخرى:
who -u
who -H
who -q
عرض سجل تسجيلات الدخول: last
يعرض قائمة بآخر المستخدمين الذين قاموا بتسجيل الدخول إلى النظام.
user@server:~$
last
user pts/0 192.168.1.100 Tue Sep 13 10:30 still logged in
admin pts/1 192.168.1.101 Tue Sep 13 11:15 - 11:45 (00:30)
reboot system boot 5.4.0-42-generic Tue Sep 13 09:15 still running
شرح الأمر:
يعرض last سجل تسجيلات الدخول من ملف /var/log/wtmp. يعرض المعلومات التالية:
- اسم المستخدم
- نقطة الاتصال
- عنوان IP المصدر
- وقت وتاريخ تسجيل الدخول
- مدة الجلسة (إذا انتهت)
أمثلة أخرى:
last -n 5
last username
last reboot
تمرين عملي: إدارة المستخدمين والمجموعات
لنفترض أنك مسؤول نظام وتحتاج إلى إعداد بيئة تطوير لفريق جديد:
التمرين 1: إنشاء مجموعة ومستخدمين
أنشئ مجموعة باسم developers ثم أنشئ مستخدمين جديدين وأضفهما إلى هذه المجموعة.
الحل:
sudo groupadd developers
sudo useradd -m -G developers dev1
sudo useradd -m -G developers dev2
sudo passwd dev1
sudo passwd dev2
التمرين 2: منح صلاحيات إدارية
أضف مستخدمًا إلى مجموعة sudo لتمكينه من تنفيذ أوامر بإذونات root.
الحل:
sudo usermod -aG sudo dev1
id dev1
التمرين 3: إعداد مجلد مشترك
أنشئ مجلدًا مشتركًا يمكن لأعضاء مجموعة developers الكتابة فيه.
الحل:
sudo mkdir /opt/devproject
sudo chgrp developers /opt/devproject
sudo chmod 2775 /opt/devproject
أفضل الممارسات لإدارة المستخدمين
مبدأ الامتياز الأقل: منح المستخدمين فقط الصلاحيات التي يحتاجونها لأداء مهامهم.
استخدام المجموعات: إدارة الصلاحيات عبر المجموعات بدلاً من منح صلاحيات فردية.
كلمات مرور قوية: تطبيق سياسة كلمات مرور قوية وتغييرها定期يًا.
مراجعة دورية: مراجعة الحسابات والمجموعات بشكل دوري وإزالة ما لم يعد ضروريًا.
تحذير: تجنب استخدام حساب root للأنشطة اليومية. استخدم حسابات عادية مع sudo عندما تحتاج إلى صلاحيات إدارية.
إعدادات UID/GID الموصى بها:
| نوع الحساب |
نطاق UID |
نطاق GID |
| حسابات النظام |
0-999 |
0-999 |
| المستخدمون العاديون |
1000-60000 |
1000-60000 |
| حسابات الخدمات |
معرفة حسب التطبيق |
معرفة حسب التطبيق |