كلاود
أمن سيبراني

إدارة صلاحيات المستخدمين على السيرفر

كلاود|١٧ يناير ٢٠٢٦|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 وجدار ناري متقدم. راجع اتفاقية مستوى الخدمة وسياسة الخصوصية.

مشاركة