'\" t .\" Title: runuser .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-09-02 .\" Manual: User Commands .\" Source: util-linux 2.42.3 .\" Language: Persian .\" .TH "RUNUSER" "1" "2026-09-02" "util\-linux 2.42.3" "دستورات کاربر" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "نام (NAME)" runuser \- اجرای یک دستور با هویت کاربر و گروه مشخص .SH "خلاصه دستور (SYNOPSIS)" .sp \fBrunuser\fP [options] \fB\-u\fP \fIuser\fP [[\-\-] \fIcommand\fP [\fIargument\fP.\|.\|.]] .sp \fBrunuser\fP [options] [\fB\-\fP] [\fIuser\fP [\fIargument\fP.\|.\|.]] .SH "توضیحات (DESCRIPTION)" .sp دستور \fBrunuser\fP می‌تواند برای اجرای دستورها با شناسه کاربر و گروه جایگزین استفاده شود. اگر گزینه \fB\-u\fP داده نشود، \fBrunuser\fP به معناشناسی سازگار با \fBsu\fP برگشت می‌کند و یک پوسته اجرا می‌شود. تفاوت بین دستورهای \fBrunuser\fP و \fBsu\fP در این است که \fBrunuser\fP گذرواژه درخواست نمی‌کند (زیرا فقط می‌تواند توسط کاربر root اجرا شود) و از پیکربندی PAM متفاوتی استفاده می‌کند. دستور \fBrunuser\fP نیازی ندارد با مجوزهای set\-user\-ID نصب شود. .sp اگر نشست PAM مورد نیاز نباشد، راهکار پیشنهادی استفاده از دستور \fBsetpriv\fP(1) است. .sp هنگامی که بدون آرگومان فراخوانی شود، \fBrunuser\fP به طور پیش‌فرض یک پوسته تعاملی را به عنوان \fIroot\fP اجرا می‌کند. .sp برای سازگاری با گذشته، \fBrunuser\fP به طور پیش‌فرض دایرکتوری جاری را تغییر نمی‌دهد و تنها متغیرهای محیطی \fBHOME\fP و \fBSHELL\fP (به علاوه \fBUSER\fP و \fBLOGNAME\fP اگر \fIکاربر\fP هدف root نباشد) را تنظیم می‌کند. این نسخه از \fBrunuser\fP برای مدیریت نشست از PAM استفاده می‌کند. .sp توجه داشته باشید که \fBrunuser\fP در همه موارد برای اعمال تغییر نهایی متغیرهای محیطی از PAM (\fBpam_getenvlist\fP(3)) استفاده می‌کند. گزینه‌های خط فرمان مانند \fB\-\-login\fP و \fB\-\-preserve\-environment\fP محیط را قبل از تغییر توسط PAM تحت تأثیر قرار می‌دهند. .sp از نسخه ۲.۳۸ دستور \fBrunuser\fP محدودیت‌های منابع فرایند شامل RLIMIT_NICE، RLIMIT_RTPRIO، RLIMIT_FSIZE، RLIMIT_AS و RLIMIT_NOFILE را بازنشانی می‌کند. .SH "گزینه‌ها (OPTIONS)" .sp \fB\-c\fP, \fB\-\-command\fP=\fIcommand\fP .RS 4 ارسال \fIcommand\fP به پوسته با گزینه \fB\-c\fP. یک نشست جدید از طریق \fBsetsid\fP(2) ایجاد می‌کند. برای حفظ همان نشست به \fB\-\-session\-command\fP مراجعه کنید. .RE .sp \fB\-f\fP, \fB\-\-fast\fP .RS 4 ارسال \fB\-f\fP به پوسته، که بسته به نوع پوسته ممکن است مفید باشد یا نباشد. .RE .sp \fB\-g\fP, \fB\-\-group\fP=\fIgroup\fP .RS 4 گروه اصلی مورد استفاده. این گزینه فقط برای کاربر root مجاز است. .RE .sp \fB\-G\fP, \fB\-\-supp\-group\fP=\fIgroup\fP .RS 4 مشخص کردن یک گروه تکمیلی. این گزینه فقط برای کاربر root در دسترس است. اگر گزینه \fB\-\-group\fP مشخص نشده باشد، اولین گروه تکمیلی مشخص‌شده به عنوان گروه اصلی نیز استفاده می‌شود. .RE .sp \fB\-\fP, \fB\-l\fP, \fB\-\-login\fP .RS 4 شروع پوسته به عنوان یک پوسته ورود (login shell) با محیطی مشابه یک ورود واقعی: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} پاکسازی تمام متغیرهای محیطی به جز \fBTERM\fP، \fBCOLORTERM\fP، \fBNO_COLOR\fP و متغیرهای مشخص‌شده توسط \fB\-\-whitelist\-environment\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} مقداردهی اولیه متغیرهای محیطی \fBHOME\fP، \fBSHELL\fP، \fBUSER\fP، \fBLOGNAME\fP و \fBPATH\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} تغییر مسیر به دایرکتوری خانگی کاربر هدف .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} تنظیم argv[0] پوسته به \*(Aq\fB\-\fP\*(Aq به منظور تبدیل پوسته به یک پوسته ورود .RE .RE .sp \fB\-m\fP, \fB\-p\fP, \fB\-\-preserve\-environment\fP .RS 4 حفظ کل محیط، یعنی عدم تنظیم \fBHOME\fP، \fBSHELL\fP، \fBUSER\fP یا \fBLOGNAME\fP. در صورت مشخص شدن گزینه \fB\-\-login\fP، این گزینه نادیده گرفته می‌شود. .RE .sp \fB\-P\fP, \fB\-\-pty\fP .RS 4 ایجاد یک ترمینال کاذب (pseudo\-terminal) برای نشست. ترمینال مستقل امنیت بهتری فراهم می‌کند زیرا کاربر ترمینال را با نشست اصلی به اشتراک نمی‌گذارد. لطفاً به توصیه امنیتی درباره آسیب‌پذیری TIOCSTI در ادامه توجه کنید. .sp کل نشست را می‌توان به پس‌زمینه نیز منتقل کرد (مانند \fBrunuser \-\-pty\fP \fB\-u\fP \fIuser\fP \fB\-\-\fP \fIcommand\fP \fB&\fP). اگر ترمینال کاذب فعال باشد، \fBrunuser\fP به عنوان یک پروکسی بین نشست‌ها عمل می‌کند (همگام‌سازی stdin و stdout). .sp این قابلیت عمدتاً برای نشست‌های تعاملی طراحی شده است. اگر ورودی استاندارد یک ترمینال نباشد، بلکه به عنوان مثال یک پایپ (pipe) باشد (مانند \fBecho "date" | runuser \-\-pty \-u\fP \fIuser\fP)، پرچم \fBECHO\fP برای ترمینال کاذب غیرفعال می‌شود تا از خروجی نامرتب جلوگیری شود. .RE .sp \fB\-s\fP, \fB\-\-shell\fP=\fIshell\fP .RS 4 اجرای \fIshell\fP مشخص‌شده به جای پوسته پیش‌فرض. پوسته مورد اجرا به ترتیب بر اساس قوانین زیر انتخاب می‌شود: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} پوسته مشخص‌شده با \fB\-\-shell\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} پوسته مشخص‌شده در متغیر محیطی \fBSHELL\fP در صورتی که گزینه \fB\-\-preserve\-environment\fP استفاده شده باشد .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} پوسته فهرست‌شده در مدخل passwd کاربر هدف .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} /bin/sh .sp اگر کاربر هدف دارای یک پوسته محدودشده باشد (یعنی در \fI/etc/shells\fP فهرست نشده باشد)، گزینه \fB\-\-shell\fP و متغیر محیطی \fBSHELL\fP نادیده گرفته می‌شوند مگر اینکه کاربر فراخوان root باشد. .RE .RE .sp \fB\-\-session\-command=\fP\fIcommand\fP .RS 4 مشابه \fB\-c\fP، اما یک نشست جدید ایجاد نمی‌کند. (توصیه نمی‌شود.) لطفاً به توصیه امنیتی درباره آسیب‌پذیری TIOCSTI در ادامه توجه کنید. .RE .sp \fB\-T\fP, \fB\-\-no\-pty\fP .RS 4 عدم ایجاد ترمینال کاذب، برعکس \fB\-\-pty\fP و \fB\-P\fP. لطفاً به توصیه امنیتی درباره آسیب‌پذیری TIOCSTI در ادامه توجه کنید. .RE .sp \fB\-u\fP, \fB\-\-user\fP=\fIuser\fP .RS 4 اجرای \fIcommand\fP با شناسه کاربری (UID) و شناسه گروهی (GID) مؤثر نام کاربری \fIuser\fP. .RE .sp \fB\-w\fP, \fB\-\-whitelist\-environment\fP=\fIlist\fP .RS 4 هنگام پاکسازی محیط برای \fB\-\-login\fP، متغیرهای محیطی مشخص‌شده در \fIlist\fP جداشده با ویرگول را بازنشانی نکنید. فهرست سفید برای متغیرهای محیطی \fBHOME\fP، \fBSHELL\fP، \fBUSER\fP، \fBLOGNAME\fP و \fBPATH\fP نادیده گرفته می‌شود. .RE .sp \fB\-h\fP, \fB\-\-help\fP .RS 4 نمایش متن راهنما و خروج. .RE .sp \fB\-V\fP, \fB\-\-version\fP .RS 4 نمایش نسخه و خروج. .RE .SH "فایل‌های پیکربندی (CONFIG FILES)" .sp دستور \fBrunuser\fP فایل‌های پیکربندی \fI/etc/default/runuser\fP و \fI/etc/login.defs\fP را می‌خواند. موارد پیکربندی زیر برای \fBrunuser\fP مرتبط هستند: .sp \fBENV_PATH\fP (رشته) .RS 4 متغیر محیطی \fBPATH\fP را برای یک کاربر معمولی تعریف می‌کند. مقدار پیش‌فرض \fI/usr/local/bin:/bin:/usr/bin\fP است. .RE .sp \fBENV_ROOTPATH\fP (رشته)، \fBENV_SUPATH\fP (رشته) .RS 4 متغیر محیطی \fBPATH\fP را برای root تعریف می‌کند. \fBENV_SUPATH\fP اولویت دارد. مقدار پیش‌فرض \fI/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\fP است. .RE .sp \fBALWAYS_SET_PATH\fP (بولی) .RS 4 اگر روی \fIyes\fP تنظیم شود و \fB\-\-login\fP و \fB\-\-preserve\-environment\fP مشخص نشده باشند، \fBrunuser\fP متغیر \fBPATH\fP را مقداردهی اولیه می‌کند. .RE .sp متغیر محیطی \fBPATH\fP ممکن است در سیستم‌هایی که \fI/bin\fP و \fI/sbin\fP در \fI/usr\fP ادغام شده‌اند متفاوت باشد؛ این متغیر همچنین تحت تأثیر گزینه خط فرمان \fB\-\-login\fP و تنظیمات سیستم PAM (مانند \fBpam_env\fP(8)) قرار می‌گیرد. .SH "وضعیت خروج (EXIT STATUS)" .sp دستور \fBrunuser\fP به طور معمول وضعیت خروج دستوری را که اجرا کرده بازمی‌گرداند. اگر دستور توسط یک سیگنال کشته شده باشد، \fBrunuser\fP شماره سیگنال را به علاوه ۱۲۸ بازمی‌گرداند. .sp وضعیت خروج ایجاد شده توسط خود \fBrunuser\fP: .sp 1 .RS 4 خطای عمومی پیش از اجرای دستور درخواستی .RE .sp 126 .RS 4 دستور درخواستی قابل اجرا نبود .RE .sp 127 .RS 4 دستور درخواستی پیدا نشد .RE .SH "فایل‌ها (FILES)" .sp \fI/etc/pam.d/runuser\fP .RS 4 فایل پیکربندی پیش‌فرض PAM .RE .sp \fI/etc/pam.d/runuser\-l\fP .RS 4 فایل پیکربندی PAM در صورت مشخص شدن \fB\-\-login\fP .RE .sp \fI/etc/default/runuser\fP .RS 4 فایل پیکربندی logindef اختصاصی runuser .RE .sp \fI/etc/login.defs\fP .RS 4 فایل پیکربندی logindef سراسری .RE .SH "نکات امنیتی (SECURITY NOTES)" .sp اگر \fBrunuser\fP یک ترمینال را با نشست اصلی به اشتراک بگذارد، به طور بالقوه در برابر ارتقای دسترسی از طریق تزریق دستور ioctl مربوط به TIOCSTI/TIOCLINUX آسیب‌پذیر است. دو راهکار توکار برای جلوگیری از این مورد وجود دارد: یا می‌توانید از \fBrunuser\fP با گزینه \fB\-c\fP استفاده کنید که یک نشست جدید را از طریق \fBsetsid\fP(2) بدون یک ترمینال کنترلی آغاز می‌کند. یا اگر مورد کاربردی شما به یک ترمینال کنترلی نیاز دارد (مثلاً یک نشست تعاملی)، می‌توانید با گزینه \fB\-\-pty\fP یا \fB\-P\fP به \fBrunuser\fP دستور دهید که از یک ترمینال کاذب استفاده کند. .SH "تاریخچه (HISTORY)" .sp این دستور \fBrunuser\fP از دستور \fBsu\fP در coreutils که بر اساس پیاده‌سازی David MacKenzie بود، و دستور \fBrunuser\fP فدورا توسط Dan Walsh برگرفته شده است. .SH "همچنین ببینید (SEE ALSO)" .sp \fBsetpriv\fP(1), \fBsu\fP(1), \fBlogin.defs\fP(5), \fBshells\fP(5), \fBpam\fP(8) .SH "گزارش باگ‌ها (REPORTING BUGS)" .sp برای گزارش باگ‌ها، از \c .URL "https://github.com/util\-linux/util\-linux/issues" "سامانه پیگیری مشکلات" "." استفاده کنید. .SH "دسترس‌پذیری (AVAILABILITY)" .sp دستور \fBrunuser\fP بخشی از بسته util\-linux است که می‌تواند از \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux" "بایگانی هسته لینوکس" "." دریافت شود.