.TH "SU" "1" "2022-05-11" "util-linux 2.38.1" "دستورات کاربر" .SH "نام (NAME)" su \- اجرای یک دستور با شناسه کاربر و گروه جایگزین .SH "خلاصه دستور (SYNOPSIS)" \fBsu\fP [\fIگزینه‌ها\fP] [\fB\-\fP] [\fIکاربر\fP [\fIآرگومان\fP...]] .SH "توضیحات (DESCRIPTION)" دستور \fBsu\fP اجازه می‌دهد دستورها با شناسه کاربر و گروه جایگزین اجرا شوند. .PP هنگامی که بدون مشخص کردن \fIکاربر\fP فراخوانی شود، \fBsu\fP به طور پیش‌فرض یک پوسته تعاملی را به عنوان \fIroot\fP اجرا می‌کند. هنگامی که \fIکاربر\fP مشخص شود، می‌توان \fIآرگومان\fPهای بیشتری تعیین کرد که در این صورت به پوسته منتقل می‌شوند. .PP برای سازگاری با گذشته، \fBsu\fP به طور پیش‌فرض دایرکتوری جاری را تغییر نمی‌دهد و تنها متغیرهای محیطی \fBHOME\fP و \fBSHELL\fP (به علاوه \fBUSER\fP و \fBLOGNAME\fP اگر \fIکاربر\fP هدف root نباشد) را مقداردهی می‌کند. توصیه می‌شود همیشه از گزینه \fB\-\-login\fP (به جای فرم کوتاه آن \fB\-\fP) استفاده شود تا از عوارض جانبی ناشی از ترکیب محیط‌ها جلوگیری به عمل آید. .PP این نسخه از \fBsu\fP برای احراز هویت، مدیریت حساب و نشست از PAM استفاده می‌کند. برخی از گزینه‌های پیکربندی موجود در پیاده‌سازی‌های دیگر \fBsu\fP، مانند پشتیبانی از گروه wheel، باید از طریق PAM پیکربندی شوند. .PP دستور \fBsu\fP عمدتاً برای کاربران بدون امتیاز طراحی شده است؛ راهکار پیشنهادی برای کاربران دارای امتیاز (مانند اسکریپت‌هایی که توسط کاربر ریشه اجرا می‌شوند) استفاده از دستور غیر set-user-ID به نام \fBrunuser\fP(1) است که نیازی به احراز هویت ندارد و پیکربندی PAM مجزایی ارائه می‌دهد. اگر به نشست PAM اصلاً نیازی نباشد، راهکار پیشنهادی استفاده از دستور \fBsetpriv\fP(1) است. .PP توجه داشته باشید که \fBsu\fP در تمام موارد برای اعمال تغییر نهایی متغیرهای محیطی از PAM (\fBpam_getenvlist\fP(3)) استفاده می‌کند. گزینه‌های خط فرمان مانند \fB\-\-login\fP و \fB\-\-preserve\-environment\fP محیط را قبل از تغییر توسط PAM تحت تأثیر قرار می‌دهند. .PP از نسخه 2.38 دستور \fBsu\fP محدودیت‌های منابع فرایند شامل RLIMIT_NICE، RLIMIT_RTPRIO، RLIMIT_FSIZE، RLIMIT_AS و RLIMIT_NOFILE را بازنشانی می‌کند. .SH "گزینه‌ها (OPTIONS)" .TP \fB\-c\fP, \fB\-\-command\fP=\fIدستور\fP ارسال \fIدستور\fP به پوسته با گزینه \fB\-c\fP. .TP \fB\-f\fP, \fB\-\-fast\fP ارسال \fB\-f\fP به پوسته، که بسته به پوسته ممکن است مفید باشد یا نباشد. .TP \fB\-g\fP, \fB\-\-group\fP=\fIگروه\fP مشخص کردن گروه اصلی. این گزینه فقط برای کاربر root در دسترس است. .TP \fB\-G\fP, \fB\-\-supp\-group\fP=\fIگروه\fP مشخص کردن گروه تکمیلی. این گزینه فقط برای کاربر root در دسترس است. اولین گروه تکمیلی مشخص‌شده در صورتی که گزینه \fB\-\-group\fP مشخص نشده باشد، به عنوان گروه اصلی نیز استفاده می‌شود. .TP \fB\-\fP, \fB\-l\fP, \fB\-\-login\fP شروع پوسته به عنوان یک پوسته ورود (login shell) با محیطی مشابه ورود واقعی: .RS .IP \(bu 2 پاکسازی تمام متغیرهای محیطی به جز \fBTERM\fP و متغیرهای مشخص‌شده با \fB\-\-whitelist\-environment\fP .IP \(bu 2 مقداردهی اولیه متغیرهای محیطی \fBHOME\fP، \fBSHELL\fP، \fBUSER\fP، \fBLOGNAME\fP و \fBPATH\fP .IP \(bu 2 تغییر مسیر به دایرکتوری خانگی کاربر هدف .IP \(bu 2 تنظیم argv[0] پوسته به '\fB\-\fP' به منظور تبدیل پوسته به یک پوسته ورود .RE .TP \fB\-m\fP, \fB\-p\fP, \fB\-\-preserve\-environment\fP حفظ کل متغیرهای محیطی، یعنی عدم مقداردهی \fBHOME\fP، \fBSHELL\fP، \fBUSER\fP یا \fBLOGNAME\fP. در صورت مشخص شدن گزینه \fB\-\-login\fP، این گزینه نادیده گرفته می‌شود. .TP \fB\-P\fP, \fB\-\-pty\fP ایجاد یک ترمینال کاذب (pseudo-terminal) برای نشست. ترمینال مستقل امنیت بهتری فراهم می‌کند زیرا کاربر ترمینال را با نشست اصلی به اشتراک نمی‌گذارد. این کار می‌تواند برای جلوگیری از تزریق ترمینال از طریق \fBTIOCSTI\fP ioctl و سایر حملات امنیتی علیه توصیف‌کننده‌های فایل ترمینال استفاده شود. کل نشست را می‌توان به پس‌زمینه نیز منتقل کرد (مانند \fBsu \-\-pty\fP \fB\-\fP \fIنام_کاربر\fP \fB\-c\fP \fIبرنامه\fP \fB&\fP). اگر ترمینال کاذب فعال باشد، \fBsu\fP به عنوان یک پروکسی بین نشست‌ها عمل می‌کند (همگام‌سازی ورودی و خروجی استاندارد). .IP این ویژگی عمدتاً برای نشست‌های تعاملی طراحی شده است. اگر ورودی استاندارد یک ترمینال نباشد، بلکه به عنوان مثال یک پایپ (pipe) باشد (مانند \fBecho "date" | su \-\-pty\fP)، پرچم \fBECHO\fP برای ترمینال کاذب غیرفعال می‌شود تا از خروجی نامرتب جلوگیری شود. .TP \fB\-s\fP, \fB\-\-shell\fP=\fIپوسته\fP اجرای \fIپوسته\fP مشخص‌شده به جای پوسته پیش‌فرض. پوسته مورد نظر بر اساس قوانین زیر و به ترتیب انتخاب می‌شود: .RS .IP \(bu 2 پوسته مشخص‌شده با \fB\-\-shell\fP .IP \(bu 2 پوسته مشخص‌شده در متغیر محیطی \fBSHELL\fP، در صورتی که گزینه \fB\-\-preserve\-environment\fP استفاده شده باشد .IP \(bu 2 پوسته فهرست‌شده در مدخل passwd کاربر هدف .IP \(bu 2 /bin/sh .RE .IP اگر کاربر هدف دارای یک پوسته محدودشده باشد (یعنی در \fI/etc/shells\fP فهرست نشده باشد)، گزینه \fB\-\-shell\fP و متغیر محیطی \fBSHELL\fP نادیده گرفته می‌شوند مگر اینکه کاربر فراخوان root باشد. .TP \fB\-\-session\-command=\fP\fIدستور\fP مشابه \fB\-c\fP، اما یک نشست جدید ایجاد نمی‌کند (استفاده از آن توصیه نمی‌شود). .TP \fB\-w\fP, \fB\-\-whitelist\-environment\fP=\fIفهرست\fP هنگام پاکسازی محیط برای \fB\-\-login\fP، متغیرهای محیطی مشخص‌شده در \fIفهرست\fP جداشده با ویرگول را بازنشانی نمی‌کند. فهرست سفید برای متغیرهای محیطی \fBHOME\fP، \fBSHELL\fP، \fBUSER\fP، \fBLOGNAME\fP و \fBPATH\fP نادیده گرفته می‌شود. .TP \fB\-h\fP, \fB\-\-help\fR نمایش راهنما و خروج. .TP \fB\-V\fP, \fB\-\-version\fR نمایش نسخه و خروج. .SH "سیگنال‌ها (SIGNALS)" به هنگام دریافت \fBSIGINT\fP، \fBSIGQUIT\fP یا \fBSIGTERM\fP، دستور \fBsu\fP فرایند فرزند خود را خاتمه داده و سپس با همان سیگنال دریافتی خود را خاتمه می‌دهد. فرزند ابتدا با \fBSIGTERM\fP خاتمه می‌یابد؛ پس از تلاش ناموفق و ۲ ثانیه تأخیر، فرزند توسط \fBSIGKILL\fP کشته می‌شود. .SH "فایل‌های پیکربندی (CONFIG FILES)" دستور \fBsu\fP فایل‌های پیکربندی \fI/etc/default/su\fP و \fI/etc/login.defs\fP را می‌خواند. موارد پیکربندی زیر برای \fBsu\fP مرتبط هستند: .TP \fBFAIL_DELAY\fP (عدد) میزان تأخیر بر حسب ثانیه در صورت شکست در احراز هویت. این عدد باید یک عدد صحیح غیرمنفی باشد. .TP \fBENV_PATH\fP (رشته) متغیر محیطی \fBPATH\fP را برای یک کاربر معمولی تعریف می‌کند. مقدار پیش‌فرض \fI/usr/local/bin:/bin:/usr/bin\fP است. .TP \fBENV_ROOTPATH\fP (رشته)، \fBENV_SUPATH\fP (رشته) متغیر محیطی \fBPATH\fP را برای کاربر root تعریف می‌کند. \fBENV_SUPATH\fP اولویت دارد. مقدار پیش‌فرض \fI/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\fP است. .TP \fBALWAYS_SET_PATH\fP (بولی) اگر روی \fIyes\fP تنظیم شود و گزینه‌های \fB\-\-login\fP و \fB\-\-preserve\-environment\fP مشخص نشده باشند، \fBsu\fP متغیر \fBPATH\fP را مقداردهی اولیه می‌کند. .PP متغیر محیطی \fBPATH\fP ممکن است در سیستم‌هایی که \fI/bin\fP و \fI/sbin\fP در \fI/usr\fP ادغام شده‌اند متفاوت باشد؛ این متغیر همچنین تحت تأثیر گزینه خط فرمان \fB\-\-login\fP و تنظیمات سیستم PAM (مانند \fBpam_env\fP(8)) قرار می‌گیرد. .SH "وضعیت خروج (EXIT STATUS)" دستور \fBsu\fP به طور معمول وضعیت خروج دستوری را که اجرا کرده بازمی‌گرداند. اگر دستور توسط یک سیگنال کشته شده باشد، \fBsu\fP شماره آن سیگنال را به علاوه ۱۲۸ بازمی‌گرداند. .PP وضعیت خروج ایجاد شده توسط خود \fBsu\fP: .TP 1 خطای عمومی پیش از اجرای دستور درخواستی .TP 126 دستور درخواستی قابل اجرا نبود .TP 127 دستور درخواستی پیدا نشد .SH "فایل‌ها (FILES)" .TP \fI/etc/pam.d/su\fP فایل پیکربندی پیش‌فرض PAM .TP \fI/etc/pam.d/su\-l\fP فایل پیکربندی PAM در صورت مشخص شدن \fB\-\-login\fP .TP \fI/etc/default/su\fP فایل پیکربندی logindef مخصوص دستور .TP \fI/etc/login.defs\fP فایل پیکربندی logindef سراسری .SH "نکات (NOTES)" به دلایل امنیتی، \fBsu\fP همیشه تلاش‌های ناموفق برای ورود را در فایل \fIbtmp\fP ثبت می‌کند، اما اصلاً در فایل \fIlastlog\fP نمی‌نویسد. از این راهکار می‌توان برای کنترل رفتار \fBsu\fP از طریق پیکربندی PAM استفاده کرد. اگر می‌خواهید از ماژول \fBpam_lastlog\fP(8) برای چاپ پیام هشدار در مورد تلاش‌های ناموفق برای ورود استفاده کنید، باید \fBpam_lastlog\fP(8) پیکربندی شود تا فایل \fIlastlog\fP را نیز به‌روزرسانی کند؛ به عنوان مثال توسط: .PP session required pam_lastlog.so nowtmp .SH "تاریخچه (HISTORY)" این دستور \fBsu\fP از \fBsu\fP در coreutils گرفته شده است که بر اساس پیاده‌سازی David MacKenzie بود. نسخه util-linux توسط Karel Zak بازنویسی و بازسازی شده است. .SH "نویسنده (AUTHOR)" نوشته شده توسط Karel Zak و David MacKenzie. .SH "گزارش باگ‌ها (REPORTING BUGS)" برای گزارش باگ‌ها از سامانه پیگیری مشکلات در آدرس زیر استفاده کنید: .br .SH "حق نشر (COPYRIGHT)" حق نشر \(co 2014 Karel Zak .br مجوز GPLv2+: مجوز عمومی همگانی گنو نسخه ۲ یا بالاتر. این نرم‌افزار آزاد است: شما می‌توانید آن را تغییر داده و دوباره توزیع کنید. هیچ ضمانتی وجود ندارد، تا حدی که قانون اجازه می‌دهد. .SH "همچنین ببینید (SEE ALSO)" \fBsetpriv\fP(1), \fBlogin.defs\fP(5), \fBshells\fP(5), \fBpam\fP(8), \fBrunuser\fP(1)