| SU(1) | أوامر المستخدم | SU(1) |
الاسم
su - شغل أمراً بمعرّف مستخدم ومعرّف مجموعة بديلين
موجز
su [خيارات] [-] [user|UID [argument...]]
الوصف
يسمح su بتشغيل الأوامر بمعرّف مستخدم ومعرّف مجموعة بديلين.
عند استدعائه دون تحديد مستخدم، يشغل su صدفة تفاعلية كـ root مبدئياً. وعند تحديد المستخدم، يمكن توفير معطىات إضافية، وفي هذه الحالة تُمرّر إلى الصدفة.
للتوافق مع الإصدارات السابقة، لا يغير su الدليل الحالي مبدئياً ويضبط فقط متغيرات البيئة HOME و SHELL (إضافة إلى USER و LOGNAME إذا لم يكن المستخدم المستهدف هو root). يوصى دائماً باستخدام الخيار --login (بدلاً من اختصاره -) لتجنب الآثار الجانبية الناجمة عن خلط البيئات.
يستخدم هذا الإصدار من su نظام PAM للاستيثاق وإدارة الحسابات والجلسات. وبعض خيارات التهيئة الموجودة في عمليات تنفيذ su الأخرى، مثل دعم مجموعة wheel، يجب تهيئتها عبر PAM.
صُمّم su غالباً للمستخدمين غير ذوي الامتيازات، والحل الموصى به للمستخدمين ذوي الامتيازات (مثل البرمجيات النصية التي ينفذها root) هو استخدام أمر ليس من نوع set-user-ID وهو runuser(1) الذي لا يتطلب استيثاقاً ويوفر تهيئة PAM منفصلة. وإذا كانت جلسة PAM غير مطلوبة على الإطلاق، فإن الحل الموصى به هو استخدام الأمر setpriv(1).
لاحظ أن su يستخدم PAM (pam_getenvlist(3)) في جميع الحالات لإجراء تعديل البيئة النهائي. وتؤثر خيارات سطر الأوامر مثل --login و --preserve-environment على البيئة قبل أن يُعدلها PAM.
منذ الإصدار 2.38، يعيد su ضبط حدود موارد العملية RLIMIT_NICE و RLIMIT_RTPRIO و RLIMIT_FSIZE و RLIMIT_AS و RLIMIT_NOFILE.
الخيارات
-c، --command أمر
-f، --fast
-g، --group مجموعة
-G، --supp-group مجموعة
-، -l، --login
لاحظ أنه في الأنظمة المعتمدة على systemd(1)، قد تُعرف الجلسة الجديدة كنقطة دخول حقيقية للنظام. ومع ذلك، فإن su لا ينشئ جلسة حقيقية (عبر PAM) من وجهة النظر هذه. ستحتاج لاستخدام أدوات مثل systemd-run(1) أو machinectl(1) لبدء جلسة حقيقية كاملة.
يقوم su بـ:
-m، -p، --preserve-environment
-P، --pty
يمكن أيضاً نقل الجلسة بأكملها إلى الخلفية (على سبيل المثال، su --pty - user -c application &). إذا تم تفعيل الطرفية الزائفة، فإن su يعمل كوكيل بين الجلسات (مزامنة المداخل القياسية والمخارج القياسية).
صُممت هذه الميزة أساسًا للجلسات التفاعلية. إذا لم يكن المدخل القياسي طرفية، بل أنبوبًا على سبيل المثال (مثال: echo "date" | su --pty)، فعندئذٍ تُعطل علامة ECHO للطرفية الوهمية لتجنب المخرجات الفوضوية.
-s، --shell صدفة
تُختار الصدفة المراد تشغيلها وفقاً للقواعد التالية، بالترتيب:
--session-command=أمر
-T، --no-pty
-w، --whitelist-environment قائمة
-h، --help
-V، --version
إشارات
عند تلقي إما SIGINT أو SIGQUIT أو SIGTERM، ينهي su تابعه وبعد ذلك ينهي نفسه بالإشارة المتلقاة. يُنهى التابع بواسطة SIGTERM، وبعد محاولة غير ناجحة وتأخير مدته ثانيتان يُقتل التابع بواسطة SIGKILL.
ملفات الضبط
يقرأ su ملفي إعداد /etc/default/su و /etc/login.defs. عناصر الإعداد التالية ذات صلة بـ su:
FAIL_DELAY (number)
ENV_PATH (string)
ENV_ROOTPATH (string), ENV_SUPATH (سلسلة محارف)
ALWAYS_SET_PATH (منطقي)
قد يختلف متغير البيئة PATH في الأنظمة التي دُمج فيها /bin و /sbin ضمن /usr؛ يتأثر هذا المتغير أيضًا بخيار سطر الأوامر --login وإعدادات نظام PAM (مثل (8)pam_env).
حالة الخروج
يعيد su عادةً حالة الخروج للأمر الذي نفذه. إذا قُتل الأمر بواسطة إشارة، يعيد su رقم الإشارة + 128.
حالة الخروج المولّدة بواسطة su نفسه:
1
126
127
الملفات
/etc/pam.d/su
/etc/pam.d/su-l
/etc/default/su
/etc/login.defs
ملاحظات الأمان
إذا كان su يتشارك طرفية مع الجلسة الأصلية، فإنه يكون عرضة لثغرة تصعيد الامتيازات عبر حقن أوامر ioctl من نوع TIOCSTI/TIOCLINUX. توجد طريقتان مدمجتان لمنع ذلك: إما باستخدام su مع الخيار -c، والذي يبدأ جلسة جديدة عبر setsid(2) بدون طرفية تحكم. أو، إذا كانت حالة الاستخدام تتطلب طرفية تحكم، مثل الجلسة التفاعلية، يمكنك توجيه su لاستخدام طرفية زائفة عبر الخيار --pty أو -P.
لأسباب أمنية، يسجل su دائماً محاولات الولوج الفاشلة في ملف btmp، لكنه لا يكتب في ملف lastlog على الإطلاق. يمكن استخدام هذا الحل للتحكم في سلوك su عبر إعداد PAM. إذا كنت تريد استخدام ملحق pam_lastlog(8) لطباعة رسالة تحذير حول محاولات الولوج الفاشلة، فيجب ضبط pam_lastlog(8) لتحديث ملف lastlog أيضاً. على سبيل المثال عبر:
session required pam_lastlog.so nowtmp
تاريخ
اشتق أمر su هذا من su الخاص بـ coreutils، والذي اعتمد على تنفيذ بواسطة David MacKenzie. نُقّحت نسخة util-linux بواسطة Karel Zak.
انظر أيضاً
التبليغ عن الأخطاء
لتقارير العِلل، استخدم مُتتبع المشكلات https://github.com/util-linux/util-linux/issues.
التوفر
الأمر su جزء من حزمة util-linux التي يمكن تنزيلها من أرشيف نواة لينكس https://www.kernel.org/pub/linux/utils/util-linux/.
| 2026-05-18 | util-linux 2.42.1 |