| RUNUSER(1) | دستورات کاربر | RUNUSER(1) |
نام (NAME)
runuser - اجرای یک دستور با هویت کاربر و گروه مشخص
خلاصه دستور (SYNOPSIS)
runuser [options] -u user [[--] command [argument...]]
runuser [options] [-] [user [argument...]]
توضیحات (DESCRIPTION)
دستور 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 تحت تأثیر قرار میدهند.
از نسخه ۲.۳۸ دستور runuser محدودیتهای منابع فرایند شامل RLIMIT_NICE، RLIMIT_RTPRIO، RLIMIT_FSIZE، RLIMIT_AS و RLIMIT_NOFILE را بازنشانی میکند.
گزینهها (OPTIONS)
-c, --command=command
-f, --fast
-g, --group=group
-G, --supp-group=group
-, -l, --login
-m, -p, --preserve-environment
-P, --pty
کل نشست را میتوان به پسزمینه نیز منتقل کرد (مانند runuser --pty -u user -- command &). اگر ترمینال کاذب فعال باشد، runuser به عنوان یک پروکسی بین نشستها عمل میکند (همگامسازی stdin و stdout).
این قابلیت عمدتاً برای نشستهای تعاملی طراحی شده است. اگر ورودی استاندارد یک ترمینال نباشد، بلکه به عنوان مثال یک پایپ (pipe) باشد (مانند echo "date" | runuser --pty -u user)، پرچم ECHO برای ترمینال کاذب غیرفعال میشود تا از خروجی نامرتب جلوگیری شود.
-s, --shell=shell
اگر کاربر هدف دارای یک پوسته محدودشده باشد (یعنی در /etc/shells فهرست نشده باشد)، گزینه --shell و متغیر محیطی SHELL نادیده گرفته میشوند مگر اینکه کاربر فراخوان root باشد.
--session-command=command
-T, --no-pty
-u, --user=user
-w, --whitelist-environment=list
-h, --help
-V, --version
فایلهای پیکربندی (CONFIG FILES)
دستور runuser فایلهای پیکربندی /etc/default/runuser و /etc/login.defs را میخواند. موارد پیکربندی زیر برای runuser مرتبط هستند:
ENV_PATH (رشته)
ENV_ROOTPATH (رشته)، ENV_SUPATH (رشته)
ALWAYS_SET_PATH (بولی)
متغیر محیطی PATH ممکن است در سیستمهایی که /bin و /sbin در /usr ادغام شدهاند متفاوت باشد؛ این متغیر همچنین تحت تأثیر گزینه خط فرمان --login و تنظیمات سیستم PAM (مانند pam_env(8)) قرار میگیرد.
وضعیت خروج (EXIT STATUS)
دستور runuser به طور معمول وضعیت خروج دستوری را که اجرا کرده بازمیگرداند. اگر دستور توسط یک سیگنال کشته شده باشد، runuser شماره سیگنال را به علاوه ۱۲۸ بازمیگرداند.
وضعیت خروج ایجاد شده توسط خود runuser:
1
126
127
فایلها (FILES)
/etc/pam.d/runuser
/etc/pam.d/runuser-l
/etc/default/runuser
/etc/login.defs
نکات امنیتی (SECURITY NOTES)
اگر runuser یک ترمینال را با نشست اصلی به اشتراک بگذارد، به طور بالقوه در برابر ارتقای دسترسی از طریق تزریق دستور ioctl مربوط به TIOCSTI/TIOCLINUX آسیبپذیر است. دو راهکار توکار برای جلوگیری از این مورد وجود دارد: یا میتوانید از runuser با گزینه -c استفاده کنید که یک نشست جدید را از طریق setsid(2) بدون یک ترمینال کنترلی آغاز میکند. یا اگر مورد کاربردی شما به یک ترمینال کنترلی نیاز دارد (مثلاً یک نشست تعاملی)، میتوانید با گزینه --pty یا -P به runuser دستور دهید که از یک ترمینال کاذب استفاده کند.
تاریخچه (HISTORY)
این دستور runuser از دستور su در coreutils که بر اساس پیادهسازی David MacKenzie بود، و دستور runuser فدورا توسط Dan Walsh برگرفته شده است.
همچنین ببینید (SEE ALSO)
گزارش باگها (REPORTING BUGS)
برای گزارش باگها، از سامانه پیگیری مشکلات https://github.com/util-linux/util-linux/issues. استفاده کنید.
دسترسپذیری (AVAILABILITY)
دستور runuser بخشی از بسته util-linux است که میتواند از بایگانی هسته لینوکس https://www.kernel.org/pub/linux/utils/util-linux. دریافت شود.
| 2026-09-02 | util-linux 2.42.3 |