إدارة المستخدمين والمجموعات (Users and Groups Management)
أهلاً بك في هذا الدرس السريع والمفيد عن إدارة المستخدمين والمجموعات في أنظمة Linux. الموضوع ده أساسي جداً لأي حد بيتعامل مع لينكس، سواء كنت sysadmin أو مطور. هنركز على الأوامر الشائعة والملفات المهمة.
المستخدمون (Users)
المستخدم هو الكيان اللي بيقدر يتفاعل مع النظام. كل عملية بتشتغل على لينكس بتكون تحت هوية مستخدم معين. عشان تعرف مين أنت حالياً، استخدم:
whoami
id
الأمر id بيديك معلومات أكتر زي الـ User ID (UID) والـ Group ID (GID) والمجموعات اللي أنت عضو فيها.
إنشاء مستخدم جديد (useradd / adduser)
في معظم التوزيعات، هتستخدم useradd أو adduser. adduser عادة بيكون سكريبت بيسهل عملية الإنشاء وبيعمل حاجات إضافية زي إنشاء مجلد المنزل (home directory) للمستخدم. useradd هو الأمر الأساسي.
لإنشاء مستخدم جديد اسمه testuser:
sudo useradd -m testuser
ملاحظة: الخيار
-mلإنشاء مجلد المنزل للمستخدم (home directory). لو ما استخدمتوش، المستخدم هيتنشأ بس ملوش مجلد خاص بيه.
بعد ما تنشئ المستخدم، لازم تحدد له كلمة مرور:
sudo passwd testuser
هيطلب منك تدخل كلمة المرور مرتين.
تعديل معلومات المستخدم (usermod)
عايز تغير اسم المستخدم؟ أو تضيفه لمجموعة معينة؟ أو تغير مجلد المنزل بتاعه؟ usermod هو الحل.
لتغيير اسم مستخدم من oldname إلى newname (مع نقل مجلد المنزل):
sudo usermod -l newname -d /home/newname -m oldname
ملاحظة: الأمر ده معقد شوية. لو عايز تغير اسم المستخدم، الأفضل إنك تعمل backup وبعدين تحذف المستخدم وتنشئه من جديد بالاسم الجديد، أو تستخدم أدوات أعلى مستوى لو متاحة.
لإضافة مستخدم testuser لمجموعة sudo (عشان يقدر يستخدم sudo):
sudo usermod -aG sudo testuser
ملاحظة: الخيار
-aيعني "append" (إضافة)، و-Gلتحديد المجموعات الإضافية. لو نسيت-a، المستخدم هيتم إزالته من كل المجموعات اللي كان فيها وهيتم إضافته للمجموعات اللي أنت حددتها بس! انتبه جداً.
حذف مستخدم (userdel)
لحذف مستخدم اسمه testuser:
sudo userdel testuser
لو عايز تحذف المستخدم ومجلد المنزل بتاعه كمان، استخدم الخيار -r:
sudo userdel -r testuser
ملفات المستخدمين المهمة
/etc/passwd: بيحتوي على معلومات أساسية عن المستخدمين (اسم المستخدم، UID، GID، مجلد المنزل، الـ shell الافتراضي)./etc/shadow: بيحتوي على كلمات المرور المشفرة للمستخدمين وصلاحياتها (مين اللي يقدر يغيرها، تاريخ انتهاء الصلاحية). الملف ده حساس جداً ومحدش بيقدر يشوفه غير الـ root.
المجموعات (Groups)
المجموعات بتسهل إدارة الصلاحيات. بدل ما تعطي صلاحيات لكل مستخدم على حدة، بتجمع المستخدمين في مجموعات وتدي الصلاحيات للمجموعة دي.
عشان تعرف أنت عضو في أي مجموعات:
groups
إنشاء مجموعة جديدة (groupadd / addgroup)
نفس فكرة useradd و adduser. addgroup بيكون أسهل في الاستخدام.
لإنشاء مجموعة اسمها developers:
sudo groupadd developers
إدارة أعضاء المجموعة (gpasswd أو usermod)
لإضافة مستخدم testuser إلى مجموعة developers:
sudo gpasswd -a testuser developers
أو باستخدام usermod زي ما شفنا قبل كده:
sudo usermod -aG developers testuser
لحذف مستخدم testuser من مجموعة developers:
sudo gpasswd -d testuser developers
تعديل مجموعة (groupmod)
لتغيير اسم مجموعة من oldgroup إلى newgroup:
sudo groupmod -n newgroup oldgroup
حذف مجموعة (groupdel)
لحذف مجموعة اسمها developers:
sudo groupdel developers
ملاحظة: ما تقدرش تحذف مجموعة لو كانت هي الـ primary group (المجموعة الأساسية) لأي مستخدم.
ملفات المجموعات المهمة
/etc/group: بيحتوي على معلومات أساسية عن المجموعات وأعضائها./etc/gshadow: بيحتوي على كلمات المرور المشفرة للمجموعات (لو المجموعة ليها كلمة مرور، وده مش شائع أوي) وصلاحياتها.
نظرة سريعة على الصلاحيات (Permissions)
إدارة المستخدمين والمجموعات مرتبطة ارتباط وثيق بالصلاحيات. عشان تشوف صلاحيات ملف أو مجلد:
ls -l
الأمر ده هيوريك مين المالك (owner) للملف، ومين المجموعة المالكة (group owner)، والصلاحيات (read, write, execute) للمالك، للمجموعة، وللآخرين.
chmod: لتغيير صلاحيات ملف أو مجلد.chown: لتغيير مالك ملف أو مجلد.chgrp: لتغيير المجموعة المالكة لملف أو مجلد.
الموضوع ده كبير لوحده، بس مهم تعرف ارتباطه بالمستخدمين والمجموعات.
صلاحيات الـ Root مع sudo
sudo (superuser do) بيسمح للمستخدمين العاديين بتنفيذ أوامر بصلاحيات الـ root (المستخدم الخارق) أو مستخدم آخر، بدون ما يكونوا عارفين كلمة مرور الـ root نفسها.
عشان تسمح لمستخدم معين باستخدام sudo، لازم يكون عضو في مجموعة sudo أو wheel (حسب التوزيعة) أو يتم إضافة اسمه صراحة لملف إعدادات sudo.
التحكم في sudo بيتم من خلال ملف /etc/sudoers. الأفضل إنك تعدل الملف ده عن طريق الأمر visudo عشان تضمن إنك ما تعملش أي أخطاء في التنسيق اللي ممكن تقفل عليك صلاحية الـ sudo خالص.
sudo visudo
داخل الملف ده، بتلاقي سطور زي:
%sudo ALL=(ALL:ALL) ALL
السطر ده بيسمح لأي عضو في مجموعة sudo إنه ينفذ أي أمر (ALL) كأي مستخدم (ALL) وكأي مجموعة (ALL) من أي مكان (ALL).
وبكده نكون غطينا أساسيات إدارة المستخدمين والمجموعات في Linux. الموضوع ده أساسي جداً لأي مهندس أنظمة أو أي حد بيتعامل مع الخوادم. تدرب على الأوامر دي كتير عشان تثبت في دماغك!