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