إدارة المستخدمين والصلاحيات في بيئة لينكس
إدارة المستخدمين والصلاحيات تُعد من الأساسيات الحيوية لضمان أمان وكفاءة نظام لينكس. تتيح هذه الإدارة التحكم في من يمكنه الوصول إلى الموارد المختلفة داخل النظام، وتحديد ما يمكن لكل مستخدم القيام به. في هذا الدليل الشامل، سنستعرض كافة جوانب إدارة المستخدمين والصلاحيات في بيئة لينكس مع أمثلة عملية ونصائح مفيدة.
1. إنشاء المستخدمين
أ. استخدام adduser
و useradd
في لينكس، هناك أمران رئيسيان لإنشاء مستخدم جديد:
adduser
: هو واجهة تفاعلية عالية المستوى تُبسط عملية إنشاء المستخدم، وتقوم بإعداد المجلدات الأساسية تلقائيًا.مثال:
bashsudo adduser john
سيطلب منك إدخال كلمة مرور ومعلومات إضافية مثل الاسم الكامل وما إلى ذلك. يمكنك تخطي هذه المعلومات بالضغط على مفتاح Enter.
useradd
: هو أمر منخفض المستوى ويحتاج إلى خيارات إضافية لتخصيص إنشاء المستخدم بشكل كامل.مثال:
bashsudo useradd -m -s /bin/bash john
sudo passwd john
هنا،
-m
ينشئ المجلد الرئيسي للمستخدم، و-s
يحدد الصدفة الافتراضية للمستخدم.
ب. إنشاء مستخدمين مع صلاحيات محددة
يمكنك إنشاء مستخدمين مع صلاحيات محددة دون منحهم صلاحيات إدارية.
مثال:
sudo adduser alice
بعد إنشاء المستخدم، يمكنك إضافته إلى مجموعات معينة تمنحه صلاحيات محددة.
2. حذف المستخدمين
أ. استخدام deluser
و userdel
لحذف مستخدم من النظام، يمكنك استخدام أحد الأمرين التاليين:
deluser
: يُفضل استخدامه لأنه يقوم بإزالة المستخدم مع ملفاته بشكل آمن.مثال:
bashsudo deluser john
لإزالة المستخدم مع ملفاته:
bashsudo deluser --remove-home john
userdel
: هو أمر منخفض المستوى ويحتاج إلى خيارات إضافية لتحقيق نفس النتيجة.مثال:
bashsudo userdel john
لإزالة المستخدم مع ملفاته:
bashsudo userdel -r john
3. إدارة المجموعات
أ. إنشاء المجموعات
المجموعات تُستخدم لتنظيم المستخدمين ومنحهم صلاحيات مشتركة.
مثال:
sudo groupadd developers
ب. حذف المجموعات
لحذف مجموعة غير ضرورية:
مثال:
sudo groupdel developers
ج. إضافة مستخدم إلى مجموعة
يمكنك إضافة مستخدم إلى مجموعة معينة باستخدام الأمر usermod
.
مثال:
sudo usermod -aG developers john
هنا، -aG
تعني إضافة المستخدم إلى المجموعة دون إزالة عضويته في المجموعات الأخرى.
د. إزالة مستخدم من مجموعة
مثال:
sudo gpasswd -d john developers
4. إدارة الصلاحيات
أ. مفهوم الصلاحيات في لينكس
كل ملف أو مجلد في لينكس يمتلك ثلاثة أنواع من الصلاحيات لكل من:
- المالك (Owner)
- المجموعة (Group)
- الآخرون (Others)
والصلاحيات تشمل:
- القراءة (Read – r)
- الكتابة (Write – w)
- التنفيذ (Execute – x)
ب. تغيير صلاحيات الملفات والمجلدات باستخدام chmod
يمكنك تغيير صلاحيات ملف أو مجلد باستخدام الأمر chmod
بثلاث طرق:
- الطريقة الرمزية:
أمثلة:
- إضافة صلاحية التنفيذ للمالك:
bash
chmod u+x script.sh
- إزالة صلاحية الكتابة من المجموعة:
bash
chmod g-w file.txt
- تعيين صلاحيات القراءة والكتابة للمالك فقط:
bash
chmod u=rw, g=, o= file.txt
- إضافة صلاحية التنفيذ للمالك:
- الطريقة الرقمية:
تُستخدم أرقام لتمثيل الصلاحيات:
- 4: قراءة (r)
- 2: كتابة (w)
- 1: تنفيذ (x)
أمثلة:
- تعيين صلاحيات 755:
- المالك: قراءة + كتابة + تنفيذ (7)
- المجموعة: قراءة + تنفيذ (5)
- الآخرون: قراءة + تنفيذ (5)
bashchmod 755 script.sh
ج. تغيير مالك الملف أو المجلد باستخدام chown
لتغيير مالك ملف أو مجلد:
مثال:
sudo chown alice file.txt
لتغيير المالك والمجموعة معًا:
sudo chown alice:developers file.txt
د. تغيير مجموعة الملف أو المجلد باستخدام chgrp
مثال:
sudo chgrp developers file.txt
5. إدارة صلاحيات Sudo
sudo
يسمح للمستخدمين بتنفيذ أوامر بامتيازات المستخدم الجذر (root) دون الحاجة لتسجيل الدخول كجذر.
أ. منح صلاحيات Sudo لمستخدم
يمكنك إضافة المستخدم إلى مجموعة sudo
(على أنظمة Debian/Ubuntu) أو wheel
(على أنظمة CentOS/Fedora).
على Debian/Ubuntu:
sudo usermod -aG sudo alice
على CentOS/Fedora:
sudo usermod -aG wheel alice
ب. تحرير ملف sudoers
لاستعراض أو تعديل صلاحيات sudo
، استخدم الأمر visudo
لتحرير ملف /etc/sudoers
بأمان.
مثال:
sudo visudo
يمكنك إضافة السطر التالي لمنح مستخدم معين صلاحيات sudo
بدون الحاجة لكلمة مرور:
alice ALL=(ALL) NOPASSWD:ALL
تحذير: تأكد من كتابة الصلاحيات بشكل صحيح لتجنب ثغرات أمنية. يفضل استخدام مجموعات بدلاً من منح صلاحيات لكل مستخدم على حدة.
6. استخدام ACLs (Access Control Lists) لتفاصيل الصلاحيات
ACLs تتيح تحديد صلاحيات أكثر تفصيلاً من نظام الصلاحيات التقليدي.
أ. تثبيت أدوات ACL
على بعض التوزيعات، قد تحتاج إلى تثبيت أدوات ACL:
sudo apt install acl # على Debian/Ubuntu
sudo dnf install acl # على CentOS/Fedora
ب. تمكين ACL على نظام الملفات
تأكد من أن نظام الملفات يدعم ACL. يمكنك تعديل /etc/fstab
لإضافة الخيار acl
.
مثال:
sudo nano /etc/fstab
أضف acl
إلى خيارات نظام الملفات، مثل:
/dev/sda1 /mnt/data ext4 defaults,acl 0 2
ثم أعد تحميل النظام:
sudo mount -o remount,acl /mnt/data
ج. تعيين ACLs باستخدام setfacl
أمثلة:
- إعطاء صلاحيات قراءة وكتابة لمستخدم معين:
bash
setfacl -m u:john:rw /mnt/data/file.txt
- إعطاء صلاحيات تنفيذ لمجموعة معينة:
bash
setfacl -m g:developers:x /mnt/data/script.sh
د. عرض ACLs باستخدام getfacl
مثال:
getfacl /mnt/data/file.txt
7. إدارة كلمات المرور
أ. تعيين وتغيير كلمات المرور
يمكنك تعيين أو تغيير كلمة مرور مستخدم باستخدام الأمر passwd
.
مثال:
- تعيين كلمة مرور للمستخدم الحالي:
bash
passwd
- تعيين كلمة مرور لمستخدم آخر (يتطلب صلاحيات جذر):
bash
sudo passwd john
ب. سياسات كلمات المرور
يمكنك تعزيز أمان النظام عن طريق تطبيق سياسات قوية لكلمات المرور باستخدام أدوات مثل passwd
و chage
.
مثال:
- تحديد مدة صلاحية كلمة المرور:
bash
sudo chage -M 90 john
هنا،
-M 90
يعني أن كلمة المرور تنتهي صلاحيتها بعد 90 يومًا.
8. إدارة الجلسات وتسجيل الدخول
أ. مراقبة الجلسات
يمكنك مراقبة الجلسات النشطة باستخدام أوامر مثل who
, w
, و last
.
أمثلة:
- عرض المستخدمين الحاليين:
bash
who
- عرض تفاصيل الجلسات:
bash
w
- عرض آخر عمليات تسجيل الدخول:
bash
last
ب. قفل الحسابات
إذا كنت ترغب في منع مستخدم معين من تسجيل الدخول، يمكنك قفله باستخدام الأمر passwd
.
مثال:
sudo passwd -l john
لفك قفل الحساب:
sudo passwd -u john
9. أفضل الممارسات
- تقليل استخدام حساب root: استخدم حسابات مستخدمين مع صلاحيات محدودة واستخدم
sudo
عند الحاجة. - استخدام كلمات مرور قوية: تأكد من أن جميع الحسابات تستخدم كلمات مرور قوية ومعقدة.
- تعطيل حسابات غير مستخدمة: إذا لم يعد المستخدم بحاجة للوصول، قم بتعطيل حسابه أو حذفه.
- مراجعة الصلاحيات بانتظام: تحقق دوريًا من الصلاحيات الممنوحة وتأكد من أنها لا تتجاوز ما هو ضروري.
- استخدام المصادقة الثنائية (2FA): لتعزيز أمان الحسابات التي لديها صلاحيات إدارية.
- تسجيل ومراقبة النشاطات: استخدم أدوات مثل
auditd
لمراقبة وتسجيل أنشطة المستخدمين المهمة.
10. أدوات مساعدة لإدارة المستخدمين والصلاحيات
sudo
: لإدارة الصلاحيات الإدارية.visudo
: لتحرير ملف sudoers بأمان.getent
: لعرض معلومات المستخدمين والمجموعات.passwd
: لإدارة كلمات المرور.chage
: لإدارة سياسات كلمات المرور.sudoers
: لإدارة صلاحيات sudo.acl
: لإدارة ACLs للصلاحيات التفصيلية.- أدوات GUI مثل
Webmin
: لإدارة المستخدمين والصلاحيات من واجهة رسومية.
خاتمة
إدارة المستخدمين والصلاحيات في بيئة لينكس تُعد جزءًا أساسيًا من صيانة أمان وكفاءة النظام. من خلال اتباع الخطوات والممارسات المذكورة أعلاه، يمكنك ضمان بيئة آمنة ومنظمة تقيّد الوصول إلى الموارد حسب الحاجة وتقلل من مخاطر الأمان. تذكر دائمًا مراجعة الصلاحيات بانتظام وتحديث السياسات الأمنية لمواكبة التغيرات والتهديدات الجديدة.