كيفية تبديل المستخدم في Ubuntu: su و sudo و رفع الصلاحيات
- ٩ نوفمبر ٢٠٢٥
- ١٠:١٥ م
- دروس

مقدّمة
إدارة عدة حسابات مستخدمين والتنقّل بينها جانب أساسي من إدارة أنظمة Linux. Ubuntu، أشهر توزيعة Linux في العالم، توفّر عدّة طرق لتغيير المستخدم النشط، ولكل طريقة استخداماتها وتبعاتها الأمنية. إتقان هذه الآليات يتيح سير عمل متعدد المستخدمين بكفاءة، وعمليات إدارة آمنة، وإدارة سليمة للامتيازات.
يستعرض هذا الدليل الشامل كل الطرق لتبديل المستخدمين في Ubuntu، من أساسيات سطر الأوامر إلى تقنيات تصعيد الامتيازات المتقدّمة. سواء كنت تدير أنظمة مشتركة أو مهام إدارية أو بيئات متعدّدة المستأجرين، فإن إتقان تبديل المستخدمين أمر أساسي لإتقان Ubuntu.
فهم إدارة المستخدمين في Ubuntu
أنواع حسابات المستخدمين
المستخدمون العاديون: حسابات قياسية بصلاحيات محدودة، ووصول مقيد للملفات، وعدم القدرة على تعديل تكوين النظام.
المستخدم root: مستخدم خارق بوصول غير مقيد إلى جميع موارد النظام، قادر على أي عملية بما في ذلك الخطيرة.
مستخدمو النظام: حسابات خاصة لخدمات النظام (www-data لخوادم الويب، mysql لقواعد البيانات).
مستخدمو sudo: حسابات عادية بصلاحيات مستخدم خارق مفوضة عبر تكوين sudo.
رفع الامتيازات
Why Escalate?: Most administrative tasks require elevated privileges. Rather than logging in as root (dangerous), Ubuntu uses privilege escalation to grant specific elevated permissions temporarily.
المبادئ: نفّذ العمليات بأقل الصلاحيات الضرورية؛ قلّل الوقت مع الوصول المرتفع؛ راجع جميع العمليات المميزة.
أمر su (تبديل المستخدم)
الصيغة الأساسية
su [OPTIONS] [USERNAME]
Switching to Another Usersu john
Prompts for the target user’s password, then switches to that account. The environment remains the user’s original environment (not recommended).تبديل المستخدم مع بيئة جديدة
su - john
The hyphen (-) loads the complete environment of the target user, including:
-
متغير HOME يشير إلى الدليل المنزلي للمستخدم
-
متغير PATH يحتوي على مسارات أوامر المستخدم
-
ملفات تكوين shell (.bashrc, .profile)
-
تم تغيير دليل العمل إلى الـ home الخاص بالمستخدم
Best Practice: Always use su - to ensure proper environment configuration.
التبديل إلى مستخدم root
su -
يتحول إلى المستخدم root مع بيئة root الكاملة. يطلب كلمة مرور root.
خيارات أمر su
-c (Command): Execute single command as another user without full session
su - john -c "ls -la /home/john"-l (Login): Identical to using hyphen; creates login shell
su --login john
-s (Shell): تحديد الصدفة للجلسة
su - john -s /bin/zsh
-m (Preserve environment): Keep current environment while switching
su -m johnأمر sudo (تنفيذ بصلاحيات مسؤول)
الصيغة الأساسية
sudo [OPTIONS] COMMAND
تنفيذ أمر بصلاحيات مرتفعة
sudo apt-get update # Update package lists (requires root)sudo systemctl restart ssh # Restart SSH servicesudo reboot # Reboot system
تشغيل قشرة root تفاعلية
sudo -i
يبدأ قشرة root تفاعلية دون تسجيل الدخول كـ root.
تشغيل أمر كمستخدم آخر
sudo -u username commandينفّذ الأمر بصلاحيات المستخدم المحدد (وليس root فقط).
خيارات أمر sudo
-l (List): Display allowed commands
sudo -l
-k (Invalidate): Clear sudo credentials (requires password on next use)
sudo -k
-p (Prompt): Custom password prompt
sudo -p "Enter admin password: " apt-get update-v (Validate): Extend sudo timeoutsudo -v
-H (Home): Set HOME to target user’s home
sudo -H -u username commandsu – مقابل su: الفروق الأساسية
| الميزة | su | su – |
|---|---|---|
| البيئة | يحافظ على بيئة الـ shell الأم | يحمّل بيئة المستخدم الهدف |
| متغير HOME | يبقى في الـ home الخاص بالمستخدم الأصلي | ينتقل إلى الـ home الخاص بالمستخدم الهدف |
| متغير PATH | قد يتضمن مسارات المستخدم الأصلي | يحتوي على المسارات القياسية للمستخدم الهدف |
| إعدادات Shell | لا يحمّل .bashrc أو .profile | يحمّل ~/.bashrc, ~/.profile |
| دليل العمل | يبقى في الدليل الحالي | ينتقل إلى الـ home الخاص بالمستخدم |
| موصى به | نادراً؛ احتمال الإرباك | دائماً عند تبديل المستخدم |
| مستوى الخطر | أعلى (بيئات مختلطة) | أقل (بيئة نظيفة) |
مثال على الفرق
# استخدام su (BAD)
$ su johnPassword:
$ echo $HOME
/root # Still shows original home!
$ pwd
/path/to/original # Still in original directory# استخدام su - (GOOD)
$ su - johnPassword:
$ echo $HOME
/home/john # Correct home directory$ pwd
/home/john # Correct directoryالتبديل إلى مستخدم root
استخدام su
su -
Password: (enter root password)
root@hostname:~#استخدام sudo
sudo -i[sudo] password for john: (enter john's password)
root@hostname:~#الفروق بين su – و sudo -i
| الجانب | su – | sudo -i |
|---|---|---|
| كلمة المرور مطلوبة | كلمة مرور root | كلمة مرور المستخدم الحالي |
| التسجيل | غير مسجل | يُسجَّل بواسطة sudo |
| سجل التدقيق | الحد الأدنى | سجل تدقيق كامل |
| الأمان | أقل (يتطلب مشاركة كلمة مرور root) | أعلى (مسؤولية فردية) |
| الإعداد المؤسسي النموذجي | غير محبذ | Recommended |
Security Note: Modern Ubuntu systems typically don’t require root password; instead, sudoers are granted authority through sudo configuration.
تشغيل أوامر بصفة مستخدم آخر
تنفيذ أمر واحد
sudo -u apache /usr/bin/apache2ctl restartsu - testuser -c "python /home/testuser/script.py"
تشغيل أوامر متعددة
sudo bash -c "echo 'Line 1' > /tmp/file; cat /tmp/file"
تشغيل الأوامر مع الحفاظ على الدليل الحالي
sudo -u john pwd # Prints john's home (working directory changed)sudo -u john -C pwd # Prints current directory (with -C flag)تغيير كلمة مرور المستخدم
تغيير كلمة المرور الخاصة
passwdيطلب كلمة المرور الحالية، ثم كلمة المرور الجديدة (مرتين للتأكيد).
تغيير كلمة مرور مستخدم آخر (يتطلب root)
sudo passwd john
لا تتطلب كلمة المرور الحالية؛ تطلب كلمة المرور الجديدة (صلاحية root).
تعيين سياسة انتهاء الصلاحية
sudo chage -l john # View password aging infosudo chage -M 90 john # Force password change every 90 dayssudo chage -d 0 john # Force password change on next login
صلاحيات المستخدمين والمجموعات
عرض مجموعات المستخدمين
groups john # Show groups current user belongs togroups # Show own groupsid john # Detailed UID, GID, groupsإضافة مستخدم إلى مجموعة
sudo usermod -aG groupname username
Example: Add user to sudo group
sudo usermod -aG sudo john
إزالة مستخدم من مجموعة
sudo deluser username groupname
إنشاء مستخدم جديد
sudo useradd -m -s /bin/bash newuser
sudo passwd newuser
Options:
-
-m: Create home directory -
-s: Specify shell -
-G: تعيين إلى مجموعات
أمثلة عملية
Example 1: Administrative Task with رفع الامتيازات
#!/bin/bash
# Install software update as regular user with privilege escalation
sudo apt-get updatesudo apt-get upgrade -y
echo "System update complete"
المثال 2: تشغيل مهام خادم الويب
# Stop web server as specific service user
sudo -u www-data /opt/webapp/stop.sh# Check web server permissions as www-data
sudo -u www-data ls -la /var/www/htmlالمثال 3: تشغيل صيانة قاعدة البيانات
# Backup database as specific user
sudo -u mysql mysqldump -u root -p database_name > backup.sql
# Run database optimization
sudo -u mysql mysql -u root -p -e "OPTIMIZE TABLE table_name;"
المثال 4: إدارة المستخدمين الدفعية
#!/bin/bash# Create multiple usersfor user in user1 user2 user3; dosudo useradd -m -s /bin/bash "$user"echo "Please set password for $user:"sudo passwd "$user"done# Add all to sudo groupfor user in user1 user2 user3; dosudo usermod -aG sudo "$user"doneاعتبارات الأمان
أمان كلمات المرور
كلمة مرور root: حافظ على أمانها؛ لا تشاركها أبدًا مع أفراد غير موثوقين
تكوين sudo: فوّض صلاحيات محددة بدلاً من وصول root كامل
انتهاء صلاحية كلمات المرور: افرض تغييرات دورية لكلمة المرور
# Configure password agingsudo chage -M 90 -m 1 -W 7 username
# Forces change every 90 days, minimum 1 day between changes, 7-day warningالتدقيق والتسجيل
All sudo commands are logged:
sudo grep COMMAND /var/log/auth.log
View detailed sudo history:
sudo journalctl _COMM=sudoRestricting رفع الامتيازات
Configure sudoers file safely:
sudo visudo # Always use visudo for editing sudoers
مثال على تكوين sudoers (limiting what john can run):
john ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginxjohn ALL=(ALL) /usr/bin/apt-getانتهاء مهلة الجلسة
# Set sudo timeoutsudo -v # Extend timeoutsudo -k # Invalidate sudo credentialsلماذا تستخدم البنية البعيدة تبديل المستخدمين
تتطلب البنية التحتية لـ RDP و SSH بشكل متكرر:
-
عدة مستخدمين إداريين بمستويات صلاحيات مختلفة
-
حسابات خدمة للعمليات الآلية
-
سجلات تدقيق للامتثال (تسجيل sudo)
-
رفع الصلاحيات للمهام الإدارية
إدارة البنية التحتية عبر RDP.Monster
Managing Ubuntu systems remotely requires robust, secure access:
وصول SSH لتنفيذ الأوامر
-
تنفيذ أوامر تبديل المستخدم عن بُعد
-
الإدارة الآلية عبر النصوص البرمجية
-
تحكم كامل في إدارة المستخدمين
دعم حسابات المستخدمين المتعددة
-
إنشاء مستخدمين إداريين
-
تفويض الصلاحيات بشكل مناسب
-
الحفاظ على سجلات التدقيق
إدارة عن بُعد آمنة
-
تشفير SSH لجميع عمليات تبديل المستخدمين
-
المصادقة المعتمدة على المفاتيح للوصول البرمجي
-
تسجيل ومراقبة شاملة
انشر بنية تحتية Ubuntu VPS مع قدرات إدارة آمنة للمستخدمين عبر RDP.Monster
خلاصة
يعد تبديل المستخدمين ورفع الصلاحيات من المهارات الأساسية لإدارة Ubuntu. فهم الاختلافات بين su و sudo وإدارة كلمات المرور يمكّن من إدارة فعّالة للأنظمة متعددة المستخدمين مع الحفاظ على الأمان من خلال تفويض الصلاحيات المناسب وسجلات التدقيق.
تفضل أفضل ممارسات Ubuntu الحديثة بقوة استخدام sudo بدلاً من su لرفع الصلاحيات، مما يتيح المساءلة والتسجيل الشامل مع تقليل مشاركة كلمة مرور root. التكوين الصحيح لـ sudoers مع تفويض صلاحيات محددة يوفر توازنًا أمنيًا ممتازًا بين قابلية الاستخدام والوصول control.
Managing complex Ubuntu infrastructure requiring sophisticated user management and secure administrative access? RDP.Monster provides SSH-based Ubuntu VPS solutions enabling seamless user management and privilege escalation across your infrastructure. Deploy professionally-managed Ubuntu systems today.
استضافة VPS أوبونتو قوية
استمتع بتحكّم كامل وأداء فائق السرعة مع VPS لينكس لدينا. مثاليّ لاستضافة التطبيقات وإدارة الخوادم وتحسين سير العمل.
خوادم مخصّصة عالية الأداء
هل تحتاج إلى أقصى تحكّم وقوة؟ توفّر خوادمنا المخصّصة أداءً لا مثيل له للمهام المتطلّبة.
الأسئلة الشائعة
هل أستخدم su أم sudo؟
يتيح المساءلة، ويستلزم كلمات مرور فردية، ويوفّر سجلات تدقيق كاملة.
لماذا لا يعمل أمر su لديّ؟
Try sudo -u username instead if you have sudo privileges.
هل يمكنني تبديل المستخدم دون كلمة مرور؟
أما su فيحتاج دائمًا إلى كلمة مرور المستخدم المستهدف.
ما الفرق بين su - و su --login؟
كم تدوم صلاحية sudo؟
هل يمكنني تنفيذ عدة أوامر بصفة مستخدم آخر؟
كيف أرى صلاحيات sudo الخاصة بي؟
لماذا يتغيّر PATH عند تبديل المستخدمين؟
مقالات ذات صلة




