أمن سيبراني
إدارة صلاحيات المستخدمين على السيرفر
كلاود|١٧ يناير ٢٠٢٦|4 دقائق قراءة|٤٢٧ مشاهدة

root مو للكل. كل مطور يحتاج صلاحيات محددة. نشرح: إنشاء مستخدمين، مجموعات، sudo، وأفضل ممارسات الأمان.
لماذا إدارة الصلاحيات مهمة؟
صلاحية root لكل مستخدم على السيرفر كارثة أمنية. مبدأ الصلاحيات الأقل (Principle of Least Privilege) يقول: كل مستخدم يحصل فقط على الصلاحيات التي يحتاجها لأداء عمله — لا أكثر. تطبيق هذا المبدأ يحمي السيرفر من الأخطاء البشرية والاختراقات.
فهم نظام الصلاحيات في Linux
المستخدمون والمجموعات
كل ملف في Linux له ثلاثة مستويات صلاحيات:
# عرض صلاحيات ملف
ls -la /var/www/app/
# النتيجة:
# -rw-r--r-- 1 www-data www-data 1234 Jan 15 index.php
# │││ │││ │││
# │││ │││ └── الآخرون (Others)
# │││ └──── المجموعة (Group)
# └────── المالك (Owner)
| الرمز | على ملف | على مجلد |
|---|---|---|
| r (4) | قراءة المحتوى | عرض محتويات المجلد |
| w (2) | تعديل المحتوى | إنشاء/حذف ملفات داخله |
| x (1) | تنفيذ كبرنامج | الدخول للمجلد |
إنشاء وإدارة المستخدمين
إنشاء مستخدم جديد
# إنشاء مستخدم مع مجلد رئيسي
sudo useradd -m -s /bin/bash developer1
# تعيين كلمة مرور
sudo passwd developer1
# إنشاء مستخدم مع مجموعة محددة
sudo useradd -m -s /bin/bash -G www-data,developers developer2
إدارة المجموعات
# إنشاء مجموعة
sudo groupadd developers
sudo groupadd devops
# إضافة مستخدم لمجموعة
sudo usermod -aG developers developer1
sudo usermod -aG devops developer1
# عرض مجموعات المستخدم
groups developer1
# عرض أعضاء مجموعة
getent group developers
حذف مستخدم
# حذف المستخدم مع مجلده الرئيسي
sudo userdel -r developer1
# قفل حساب مستخدم (بدون حذف)
sudo usermod -L developer1
# فك القفل
sudo usermod -U developer1
إعداد صلاحيات الملفات
الأوامر الأساسية
# تغيير المالك
sudo chown www-data:www-data /var/www/app/ -R
# تغيير الصلاحيات بالأرقام
sudo chmod 755 /var/www/app/
sudo chmod 644 /var/www/app/index.php
# تغيير الصلاحيات بالرموز
sudo chmod u+x script.sh # إضافة تنفيذ للمالك
sudo chmod g+w file.txt # إضافة كتابة للمجموعة
sudo chmod o-r file.txt # إزالة قراءة من الآخرين
صلاحيات شائعة لتطبيقات الويب
# Laravel / PHP Application
sudo chown -R www-data:developers /var/www/app
# المجلدات: 775 (المالك والمجموعة كامل الصلاحيات)
sudo find /var/www/app -type d -exec chmod 775 {} \;
# الملفات: 664 (قراءة/كتابة للمالك والمجموعة)
sudo find /var/www/app -type f -exec chmod 664 {} \;
# مجلدات التخزين والكاش
sudo chmod -R 775 /var/www/app/storage
sudo chmod -R 775 /var/www/app/bootstrap/cache
# ملف البيئة (حساس — المالك فقط)
sudo chmod 600 /var/www/app/.env
إعداد sudo
ملف sudoers
# تعديل ملف sudoers (استخدم visudo دائماً — لا تعدّل مباشرة)
sudo visudo
أمثلة على القواعد
# صلاحية sudo كاملة
developer1 ALL=(ALL:ALL) ALL
# صلاحية sudo بدون كلمة مرور (للأتمتة)
deploy ALL=(ALL) NOPASSWD: ALL
# صلاحيات محددة فقط
developer2 ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/systemctl restart php8.3-fpm
# مجموعة كاملة تحصل على sudo
%devops ALL=(ALL:ALL) ALL
# مجموعة بصلاحيات محددة
%developers ALL=(ALL) /usr/bin/git pull, /usr/bin/composer install
ملفات الصلاحيات المنفصلة
# أنشئ ملف لكل دور بدلاً من تعديل sudoers مباشرة
sudo visudo -f /etc/sudoers.d/developers
# المحتوى:
%developers ALL=(www-data) /usr/bin/php artisan *
sudo visudo -f /etc/sudoers.d/devops
# المحتوى:
%devops ALL=(ALL) NOPASSWD: /usr/bin/systemctl, /usr/bin/docker
إعداد SSH لكل مستخدم
# إنشاء مفاتيح SSH للمستخدم
sudo -u developer1 ssh-keygen -t ed25519
# إضافة مفتاح عام لمستخدم
sudo mkdir -p /home/developer1/.ssh
sudo nano /home/developer1/.ssh/authorized_keys
# الصق المفتاح العام هنا
# ضبط الصلاحيات
sudo chmod 700 /home/developer1/.ssh
sudo chmod 600 /home/developer1/.ssh/authorized_keys
sudo chown -R developer1:developer1 /home/developer1/.ssh
تقييد SSH في إعدادات sshd
# ملف: /etc/ssh/sshd_config
# السماح لمستخدمين محددين فقط
AllowUsers admin developer1 developer2
# أو السماح لمجموعة
AllowGroups devops developers
# منع root من الدخول بـ SSH
PermitRootLogin no
# إجبار استخدام المفاتيح (بدون كلمة مرور)
PasswordAuthentication no
sudo systemctl restart sshd
نموذج هيكل الصلاحيات
| الدور | المستخدم | المجموعات | صلاحيات sudo | وصول SSH |
|---|---|---|---|---|
| مدير النظام | admin | devops, sudo | كاملة | مفتاح SSH |
| مطور أول | dev-lead | developers, www-data | nginx, php, git, composer | مفتاح SSH |
| مطور | developer | developers, www-data | git, composer فقط | مفتاح SSH |
| نشر تلقائي | deploy | www-data | أوامر النشر فقط | مفتاح SSH (بدون كلمة مرور) |
| نسخ احتياطي | backup | backup | mysqldump فقط | مفتاح SSH (مقيّد) |
مراجعة الصلاحيات
# ملف: /opt/scripts/audit-permissions.sh
#!/bin/bash
echo "=== المستخدمون بصلاحية sudo ==="
grep -E '^[^#].*ALL' /etc/sudoers /etc/sudoers.d/* 2>/dev/null
echo ""
echo "=== الملفات بصلاحية SUID ==="
find / -perm -4000 -type f 2>/dev/null
echo ""
echo "=== الملفات القابلة للكتابة من الجميع ==="
find /var/www -perm -o+w -type f 2>/dev/null
echo ""
echo "=== آخر تسجيلات الدخول ==="
last -10
سيرفرات كلاود والصلاحيات
سيرفرات كلاود (cloud.net.sa) تأتي بصلاحية root كاملة عبر SSH. من هنا تبدأ ببناء هيكل صلاحيات آمن — أنشئ مستخدمين بصلاحيات محددة وعطّل الدخول بـ root مباشرة. كلاود يوفر سيرفرات VPS بنظام KVM معزولة بالكامل — ما يحصل داخل سيرفرك يبقى داخل سيرفرك.
ابدأ الآن
تبي بيئة آمنة لتطبيقاتك؟ اختر سيرفر محمي بحماية DDoS وجدار ناري متقدم. راجع اتفاقية مستوى الخدمة وسياسة الخصوصية.
مشاركة


