انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

إدارة المستخدمين والصلاحيات في Linux: sudo والمجموعات

إدارة مستخدمي Linux مع useradd/usermod/userdel، إدارة المجموعات، إعداد sudo، المصادقة بمفتاح SSH ومبدأ الصلاحيات الدنيا.

وقت القراءة: 13 دقيقة إدارة الخادم
linuxإدارة المستخدمينsudoمجموعاتsshأمانuseraddصلاحيات

جدول المحتويات

إدارة المستخدمين والصلاحيات في Linux: sudo والمجموعات

تُعدّ إدارة المستخدمين والصلاحيات في Linux ركيزة أساسية لأمان الخادم. تمنع الحسابات والأذونات المُعدّة بشكل صحيح الوصول غير المصرح به وتحدّ من تأثير الاختراقات الأمنية. يغطي هذا الدليل إدارة مستخدمي Linux وهيكل المجموعات وإعداد sudo والمصادقة بمفتاح SSH.

إدارة المستخدمين

إنشاء المستخدمين

hljs bash
# إنشاء مستخدم أساسي
sudo useradd اسم_المستخدم

# إنشاء مستخدم مع مجلد المنزل
sudo useradd -m اسم_المستخدم

# مع مجلد المنزل والصدفة والتعليق
sudo useradd -m -s /bin/bash -c "الاسم الكامل" اسم_المستخدم

# بـ UID محدد
sudo useradd -m -u 1500 اسم_المستخدم

# مع المجموعة الأساسية
sudo useradd -m -g www-data اسم_المستخدم

# تعيين كلمة المرور
sudo passwd اسم_المستخدم

# عرض معلومات المستخدم
id اسم_المستخدم
getent passwd اسم_المستخدم

تعديل المستخدمين

hljs bash
# إعادة تسمية المستخدم
sudo usermod -l الاسم_الجديد الاسم_القديم

# تغيير مجلد المنزل
sudo usermod -d /مجلد/منزل/جديد -m اسم_المستخدم

# تغيير الصدفة
sudo usermod -s /bin/bash اسم_المستخدم

# قفل الحساب
sudo usermod -L اسم_المستخدم

# فتح الحساب
sudo usermod -U اسم_المستخدم

# تعيين تاريخ انتهاء الحساب
sudo usermod -e 2025-12-31 اسم_المستخدم

# إجبار تغيير كلمة المرور عند تسجيل الدخول التالي
sudo chage -d 0 اسم_المستخدم

حذف المستخدمين

hljs bash
# حذف المستخدم (يُحفظ مجلد المنزل)
sudo userdel اسم_المستخدم

# حذف المستخدم ومجلد المنزل
sudo userdel -r اسم_المستخدم

# البحث عن الملفات المملوكة للمستخدم
find / -user اسم_المستخدم 2>/dev/null

إدارة المجموعات

hljs bash
# إنشاء مجموعة
sudo groupadd المطورون

# إضافة مستخدم إلى مجموعة
sudo usermod -aG المطورون اسم_المستخدم

# إضافة إلى مجموعات متعددة
sudo usermod -aG مجموعة1,مجموعة2,مجموعة3 اسم_المستخدم

# عرض مجموعات المستخدم
groups اسم_المستخدم
id اسم_المستخدم

# سرد المستخدمين في مجموعة
getent group المطورون

# إزالة مستخدم من مجموعة
sudo gpasswd -d اسم_المستخدم المطورون

# حذف مجموعة
sudo groupdel المطورون

# إعادة تسمية مجموعة
sudo groupmod -n الاسم_الجديد الاسم_القديم

إعداد sudo

منح صلاحية sudo

hljs bash
# إضافة مستخدم إلى مجموعة sudo (Debian/Ubuntu)
sudo usermod -aG sudo اسم_المستخدم

# إضافة مستخدم إلى مجموعة wheel (RHEL/CentOS)
sudo usermod -aG wheel اسم_المستخدم

# اختبار التغيير
su - اسم_المستخدم
sudo whoami  # يجب أن يُخرج: root

إعداد ملف sudoers

hljs bash
# تعديل ملف sudoers بأمان
sudo visudo
# محتوى /etc/sudoers

# صلاحية sudo كاملة للمستخدم
اسم_المستخدم ALL=(ALL:ALL) ALL

# sudo بدون كلمة مرور (استخدم بحذر)
اسم_المستخدم ALL=(ALL) NOPASSWD: ALL

# sudo لأوامر محددة فقط
اسم_المستخدم ALL=(ALL) /usr/bin/systemctl, /usr/bin/apt

# صلاحية sudo لمجموعة
%المطورون ALL=(ALL:ALL) ALL

# بدون كلمة مرور لأمر محدد
اسم_المستخدم ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
hljs bash
# إنشاء ملف منفصل (الطريقة الموصى بها)
sudo nano /etc/sudoers.d/اسم_المستخدم

# محتوى الملف
اسم_المستخدم ALL=(ALL:ALL) ALL

# تعيين أذونات الملف
sudo chmod 440 /etc/sudoers.d/اسم_المستخدم

أذونات الملفات

hljs bash
# عرض الأذونات
ls -la /مجلد/

# تغيير الأذونات (رقمي)
chmod 755 سكريبت.sh    # rwxr-xr-x
chmod 644 ملف.txt      # rw-r--r--
chmod 600 سري.key      # rw-------

# تغيير الأذونات (رمزي)
chmod u+x سكريبت.sh    # إضافة تنفيذ للمالك
chmod g-w ملف.txt      # إزالة الكتابة من المجموعة
chmod o-r سري.txt      # إزالة القراءة من الآخرين

# تغيير الملكية
chown اسم_المستخدم ملف.txt
chown اسم_المستخدم:مجموعة ملف.txt

# تغيير المجلد ومحتوياته بشكل متكرر
chown -R اسم_المستخدم:مجموعة /مجلد/

المصادقة بمفتاح SSH

توليد زوج مفاتيح SSH

hljs bash
# توليد المفتاح على الجهاز المحلي
ssh-keygen -t ed25519 -C "email@example.com"

# مفتاح RSA (للأنظمة القديمة)
ssh-keygen -t rsa -b 4096 -C "email@example.com"

# يتم إنشاء المفاتيح في ~/.ssh/:
# ~/.ssh/id_ed25519 (المفتاح الخاص)
# ~/.ssh/id_ed25519.pub (المفتاح العام)

نسخ المفتاح العام إلى الخادم

hljs bash
# باستخدام ssh-copy-id (أسهل طريقة)
ssh-copy-id مستخدم@ip_الخادم

# نسخ يدوي
cat ~/.ssh/id_ed25519.pub | ssh مستخدم@ip_الخادم "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

# إعداد يدوي على الخادم
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys  # لصق المفتاح العام
chmod 600 ~/.ssh/authorized_keys

إعداد أمان SSH

hljs bash
sudo nano /etc/ssh/sshd_config
# تعطيل المصادقة بكلمة المرور (بعد إعداد المفتاح)
PasswordAuthentication no

# تعطيل تسجيل دخول root
PermitRootLogin no

# عدم السماح بكلمات المرور الفارغة
PermitEmptyPasswords no

# الحد الأقصى لمحاولات تسجيل الدخول
MaxAuthTries 3

# السماح لمستخدمين محددين
AllowUsers مستخدم1 مستخدم2

# السماح لمجموعة محددة
AllowGroups ssh-users
hljs bash
# إعادة تشغيل SSH
sudo systemctl restart sshd

# اختبار الإعداد
sudo sshd -t

مبدأ الصلاحيات الدنيا

ينص مبدأ الصلاحيات الدنيا على أن كل مستخدم وعملية يجب أن يمتلكا فقط الحد الأدنى من الأذونات اللازمة لأداء مهمتهما.

hljs bash
# إنشاء مستخدم مخصص للتطبيق (بدون صدفة)
sudo useradd -r -s /usr/sbin/nologin -d /var/lib/myapp myapp_user

# إنشاء مجلد المنزل لمستخدم الخدمة
sudo mkdir -p /var/lib/myapp
sudo chown myapp_user:myapp_user /var/lib/myapp
sudo chmod 750 /var/lib/myapp

تجنب استخدام حساب root مباشرة. أنشئ حسابات منفصلة لكل مسؤول وفوّض عبر sudo. بهذه الطريقة يمكن تتبع جميع الإجراءات.

مراقبة نشاط المستخدمين

hljs bash
# عرض آخر عمليات تسجيل الدخول
last
lastlog

# عرض محاولات تسجيل الدخول الفاشلة
lastb

# عرض المستخدمين النشطين
who
w

# مراقبة استخدام sudo
sudo grep sudo /var/log/auth.log

الخلاصة

تُشكّل إدارة المستخدمين والصلاحيات في Linux أساس أمان الخادم. امنح كل مستخدم فقط الأذونات التي يحتاجها، واستخدم المصادقة بمفتاح SSH، وقيّد وصول root. تحمي هذه الممارسات خوادم REXE من الوصول غير المصرح به.