'\" t .TH "RUN0" "1" "" "systemd 261.2" "run0" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" run0 \- اجرای امن دستور با دسترسی کاربر دیگر (جایگزین مدرن sudo) .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBrun0\fR\ 'u \fBrun0\fR [OPTIONS...] [COMMAND...] .SH "توضیحات (DESCRIPTION)" .PP دستور \fBrun0\fR می‌تواند برای دستیابی موقت و تعاملی به دسترسی‌های ارتقایافته یا متفاوت به کار رود\&. این ابزار هدفی مشابه با \fBsudo\fR(8) را دنبال می‌کند، اما در چند زمینه کلیدی عملکرد متفاوتی دارد: .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 .\} احراز هویت از طریق \m[blue]\fBpolkit\fR\m[]\&\s-2\u[1]\d\s+2 صورت می‌پذیرد، بنابراین اعلان احراز هویت (در صورت امکان) از ترمینال ایزوله می‌گردد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یک شبه‌ترمینال (pseudo\-tty) مستقل برای دستور فراخوانی‌شده اختصاص می‌یابد، که چرخه حیات آن را تفکیک کرده و برای امنیت بیشتر آن را جداسازی می‌کند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} هیچ سازوکار بیت دسترسی فایل SetUID/SetGID در پیاده‌سازی این ابزار به کار نرفته است\&. .RE .PP در مجموع، این موارد باید جایگزینی امن‌تر و پایدارتر برای سازوکار \fBsudo\fR فراهم سازند، به‌ویژه در محیط‌های سیستم‌عامل که پشتیبانی از SetUID/SetGID در دسترس نیست (برای نمونه با تنظیم متغیر \fINoNewPrivileges=\fR در \fBsystemd-system.conf\fR(5))\&. .PP هر نشستی که از طریق \fBrun0\fR فراخوانی شود، از طریق پشته PAM با عنوان "systemd\-run0" اجرا خواهد شد\&. .PP توجه داشته باشید که \fBrun0\fR به عنوان یک فراخوانی چندمنظوره (multi\-call) جایگزین برای \fBsystemd-run\fR(1) پیاده‌سازی شده است\&. بدین معنی که \fBrun0\fR یک پیوند نمادین (symbolic link) به فایل اجرایی \fBsystemd\-run\fR است؛ اگر از طریق این پیوند نمادین فراخوانی شود رفتاری مطابق با \fBrun0\fR خواهد داشت، و در غیر این صورت مانند \fBsystemd\-run\fR عمل می‌کند\&. .SH "گزینه‌ها (OPTIONS)" .PP گزینه‌های زیر پشتیبانی می‌شوند: .PP \fB\-\-unit=\fR .RS 4 استفاده از این نام واحد به‌جای نامی که به طور خودکار تولید می‌شود\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fB\-\-property=\fR .RS 4 تنظیم یک ویژگی برای واحد سرویسی که ایجاد می‌شود\&. این گزینه مقداری را در همان قالب دستور \fBset\-property\fR در \fBsystemctl\fR(1) می‌پذیرد\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fB\-\-description=\fR .RS 4 ارائه توضیحات برای واحد سرویسی که فراخوانی می‌شود\&. در صورت تعیین نشدن، خود دستور به عنوان توضیحات به کار خواهد رفت\&. بخش \fIDescription=\fR در \fBsystemd.unit\fR(5) را ببینید\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fB\-\-slice=\fR .RS 4 قرار دادن واحد \&.service جدید به عنوان بخشی از برش (slice) مشخص‌شده، به‌جای user\&.slice\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fB\-\-slice\-inherit\fR .RS 4 قرار دادن واحد \&.service جدید در همان برشی (slice) که خود \fBrun0\fR در آن فراخوانی شده است\&. این گزینه می‌تواند با \fB\-\-slice=\fR ترکیب شود، که در این حالت برش تعیین‌شده از طریق \fB\-\-slice=\fR درون برشی قرار می‌گیرد که دستور \fBrun0\fR در آن فراخوانی شده است\&. .sp مثال: فرض کنید \fBrun0\fR در برش foo\&.slice فراخوانی شده و آرگومان \fB\-\-slice=\fR برابر با bar باشد\&. در این صورت واحد زیرمجموعه foo\-bar\&.slice قرار خواهد گرفت\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fB\-\-user=\fR, \fB\-u\fR, \fB\-\-group=\fR, \fB\-g\fR .RS 4 تغییر وضعیت به کاربر/گروه مشخص‌شده\&. در صورت تعیین نشدن، پیش‌فرض "root" خواهد بود، مگر آنکه از \fB\-\-area=\fR یا \fB\-\-empower\fR استفاده شود (به پایین مراجعه کنید)، که در این صورت پیش‌فرض کاربر فراخواننده خواهد بود\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fB\-\-nice=\fR .RS 4 اجرای نشست فراخوانی‌شده با سطح nice مشخص‌شده\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fB\-\-chdir=\fR, \fB\-D\fR .RS 4 اجرای نشست فراخوانی‌شده با دایرکتوری کاری مشخص‌شده\&. در صورت تعیین نشدن، در صورت جابجایی به کاربر ریشه (root)، پیش‌فرض دایرکتوری کاری فعلی کلاینت خواهد بود و در غیر این صورت پوشه خانگی کاربر هدف خواهد بود\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fB\-\-via\-shell\fR .RS 4 فراخوانی شل ورود (login shell) کاربر هدف و اجرای دستور مشخص‌شده (در صورت وجود) از طریق آن\&. .sp اضافه‌شده در نگارش ۲۵۸\&. .RE .PP \fB\-i\fR .RS 4 میان‌بری برای \fB\-\-via\-shell \-\-chdir=\*(Aq~\*(Aq\fR\&. .sp اضافه‌شده در نگارش ۲۵۸\&. .RE .PP \fB\-\-setenv=\fR\fB\fINAME\fR\fR\fB[=\fR\fB\fIVALUE\fR\fR\fB]\fR .RS 4 اجرای نشست فراخوانی‌شده با مقداردهی متغیر محیطی مشخص‌شده\&. این پارامتر می‌تواند بیش از یک بار برای تعیین چندین متغیر به کار رود\&. هنگامی که "=" و \fIVALUE\fR حذف شوند، مقدار متغیر هم‌نام در محیط فراخواننده استفاده خواهد شد\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fB\-\-background=\fR\fB\fICOLOR\fR\fR .RS 4 تغییر رنگ پس‌زمینه ترمینال به رنگ ANSI مشخص‌شده تا زمانی که نشست ادامه دارد\&. در صورت تعیین نشدن، پس‌زمینه هنگام کار به عنوان کاربر ریشه (root) به رنگ متمایل به قرمز، و هنگام کار تحت UID دیگر به رنگ متمایل به زرد تغییر می‌یابد تا تغییری در دسترسی‌ها را یادآوری کند\&. رنگ مشخص‌شده باید یک رنگ پس‌زمینه ANSI X3\&.64 SGR باشد، یعنی رشته‌هایی نظیر "40", "41", \&..., "47", "48;2;\&...", "48;5;\&..."\&. برای جزئیات بیشتر به \m[blue]\fBANSI Escape Code (Wikipedia)\fR\m[]\&\s-2\u[2]\d\s+2 مراجعه کنید\&. برای غیرفعال‌سازی، این گزینه را روی یک رشته خالی تنظیم نمایید\&. .sp مثال: "\-\-background=44" برای پس‌زمینه آبی\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fB\-\-pty\fR, \fB\-\-pty\-late\fR, \fB\-\-pipe\fR .RS 4 درخواست تخصیص یک شبه‌TTY برای نشست \fBrun0\fR (در صورت استفاده از \fB\-\-pty\fR یا \fB\-\-pty\-late\fR)، یا درخواست انتقال مستقیم توصیف‌کننده‌های فایل STDIO فراخواننده (در صورت استفاده از \fB\-\-pipe\fR)\&. گزینه \fB\-\-pty\-late\fR بسیار شبیه به \fB\-\-pty\fR است، اما پردازش TTY را تنها پس از تکمیل راه‌اندازی واحد آغاز می‌کند و ورودی را تا آن زمان برای رمزهای عبور یا عامل‌های polkit باقی می‌گذارد\&. اگر هیچ‌یک از این سوییچ‌ها تعیین نشود، یا اگر هم \fB\-\-pipe\fR و هم یکی از گزینه‌های \fB\-\-pty\fR/\fB\-\-pty\-late\fR تعیین شوند، حالت به طور خودکار انتخاب خواهد شد: اگر ورودی استاندارد، خروجی استاندارد و خطای استاندارد همگی به یک TTY متصل باشند، یک شبه‌TTY تخصیص می‌یابد (در حالت \fB\-\-pty\-late\fR مگر آنکه \fB\-\-no\-ask\-password\fR تعیین شده باشد که در آن صورت \fB\-\-pty\fR انتخاب می‌شود)، در غیر این صورت توصیف‌کننده‌های فایل مربوطه به صورت مستقیم منتقل می‌شوند\&. .sp گزینه‌های \fB\-\-pty\fR و \fB\-\-pipe\fR در نگارش ۲۵۷ اضافه شدند\&. .sp گزینه \fB\-\-pty\-late\fR در نگارش ۲۵۸ اضافه شد\&. .RE .PP \fB\-\-shell\-prompt\-prefix=\fR\fB\fISTRING\fR\fR .RS 4 تنظیم یک رشته به عنوان پیشوند اعلان (پرامپت) شل\&. این گزینه در نهایت متغیر محیطی \fI$SHELL_PROMPT_PREFIX\fR را برای برنامه فراخوانی‌شده کنترل می‌کند، که معمولاً به اعلان شل وارد می‌شود\&. به طور پیش‌فرض \(en در صورت پشتیبانی از ایموجی‌ها \(en، یک ایموجی ابرقهرمان نمایش داده می‌شود (🦸)\&. این مقدار پیش‌فرض را همچنین می‌توان با ارسال متغیر محیطی \fI$SYSTEMD_RUN_SHELL_PROMPT_PREFIX\fR به \fIrun0\fR تغییر داد (یا غیرفعال کرد)؛ به پایین مراجعه کنید\&. برای غیرفعال کردن پیشوند اعلان شل، آن را روی یک رشته خالی تنظیم کنید\&. .sp اضافه‌شده در نگارش ۲۵۷\&. .RE .PP \fB\-\-lightweight=\fR\fB\fIBOOLEAN\fR\fR .RS 4 کنترل می‌کند که آیا مدیر سرویس مختص کاربر (per\-user service manager) برای کاربر هدف فعال شود یا خیر\&. به طور پیش‌فرض (تنظیم‌نشده یا تنظیم روی \fBauto\fR)، اگر کاربر هدف "root" یا یک کاربر سیستمی باشد، مدیر سرویس کاربر در اثر فراخوانی \fBrun0\fR فعال نمی‌شود؛ در غیر این صورت فعال خواهد شد\&. .sp این گزینه در نهایت متغیر محیطی \fI$XDG_SESSION_CLASS\fR را که \fBpam_systemd\fR(8) از آن پیروی می‌کند، کنترل می‌نماید\&. .sp اضافه‌شده در نگارش ۲۵۸\&. .RE .PP \fB\-\-area=\fR\fB\fIAREA\fR\fR .RS 4 کنترل "ناحیه" (area) حساب کاربری هدف جهت ورود\&. نواحی در واقع دایرکتوری‌های خانگی ثانویه درون دایرکتوری خانگی اصلی کاربر هدف هستند؛ به عنوان مثال ورود به ناحیه "foobar" از یک حساب به این معنی است که در هنگام ورود، مقدار \fI$HOME\fR برابر با ~/Areas/foobar تنظیم می‌شود\&. .sp در صورت استفاده از این گزینه، کاربر پیش‌فرض برای انتقال از ریشه (root) به خود کاربر فراخواننده تغییر می‌یابد (اما گزینه \fB\-\-user=\fR اولویت دارد؛ به بالا مراجعه کنید)\&. یا به عبارت دیگر، تعیین ناحیه بدون مشخص کردن کاربر، سازوکاری برای ایجاد یک نشست جدید از کاربر فراخواننده صرفاً با یک ناحیه متفاوت است\&. .sp این گزینه در نهایت متغیر محیطی \fI$XDG_AREA\fR را که \fBpam_systemd\fR(8) از آن پیروی می‌کند، کنترل می‌نماید\&. .sp برای جزئیات بیشتر درباره مفهوم ناحیه (area)، به \fBpam_systemd_home\fR(8) مراجعه فرمایید\&. .sp اضافه‌شده در نگارش ۲۵۸\&. .RE .PP \fB\-\-empower\fR .RS 4 در صورت تعیین، run0 دسترسی‌های کاربر انتخاب‌شده (با استفاده از \fB\-\-user=\fR) یا کاربر فعلی را (اگر کاربری صراحتاً انتخاب نشده باشد) ارتقا می‌دهد\&. در حال حاضر این به معنای اعطای تمام قابلیت‌های لینوکس (capabilities) به فرآیند فراخوانی‌شده و افزودن گروه "empower" به عنوان یک گروه تکمیلی است (که تمام کنش‌های polkit به طور پیش‌فرض برای آن مجاز است)، اما ممکن است در آینده دسترسی‌های دیگری نیز هنگام استفاده از این گزینه اعطا شود\&. .sp توجه داشته باشید که سایر فرآیندهای (غیرممتاز) کاربر انتخاب‌شده نسبت به فرآیند فراخوانی‌شده دارای دسترسی کنترل خواهند بود\&. در محیط‌هایی که ممکن است فرآیندهای مخربی تحت عنوان کاربر انتخاب‌شده در حال اجرا باشند، توصیه می‌شود از این گزینه استفاده نکنید\&. .sp اضافه‌شده در نگارش ۲۵۹\&. .RE .PP \fB\-\-same\-root\-dir\fR .RS 4 اجرای نشست \fBrun0\fR در همان دایرکتوری ریشه‌ای (root directory) که دستور \fBrun0\fR در آن اجرا شده است\&. .sp اضافه‌شده در نگارش ۲۵۹\&. .RE .PP \fB\-\-machine=\fR .RS 4 اجرای عملیات در یک کانتینر محلی\&. نام کانتینر را جهت اتصال مشخص کنید\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fB\-\-no\-ask\-password\fR .RS 4 عدم درخواست احراز هویت از کاربر برای عملیات دارای دسترسی ویژه\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 چاپ متن راهنمای کوتاه و خروج\&. .RE .PP \fB\-\-version\fR .RS 4 چاپ رشته نگارش کوتاه و خروج\&. .RE .PP تمامی آرگومان‌های خط فرمان پس از نخستین آرگومان غیرگزینه‌ای، بخشی از خط فرمان فرآیند راه‌اندازی‌شده خواهند شد\&. اگر هیچ خط فرمانی مشخص نشود، یک شل تعاملی فراخوانی می‌گردد\&. شلی که فراخوانی می‌شود را می‌توان از طریق گزینه \fB\-\-via\-shell\fR \- که در صورت تعیین، شل کاربر هدف استفاده می‌شود \- یا \fB\-\-setenv=SHELL=\&...\fR کنترل کرد\&. به طور پیش‌فرض، در صورت اجرای محلی، شل \fIکاربر مبدأ\fR اجرا می‌شود، یا در صورت استفاده از \fB\-\-machine=\fR مسیر /bin/sh اجرا خواهد شد\&. .PP توجه داشته باشید که بر خلاف \fBsudo\fR، ابزار \fBrun0\fR همیشه شل‌ها را با ویژگی‌های معنایی شل ورود (login shell) اجرا می‌کند، بدون توجه به اینکه گزینه \fB\-i\fR تعیین شده باشد یا خیر\&. .SH "کدهای خروج (EXIT STATUS)" .PP در صورت موفقیت، مقدار 0 برگردانده می‌شود\&. اگر \fBrun0\fR در آغاز نشست با شکست روبرو شود یا دستور تعیین‌شده ناموفق باشد، یک مقدار بازگشتی غیرصفر برگردانده خواهد شد\&. .SH "محیط (ENVIRONMENT)" .PP همانند \fBsystemd\-run\fR، این نشست محیط سیستم را از مدیر سرویس به ارث می‌برد\&. علاوه بر این، متغیرهای محیطی زیر تنظیم خواهند شد: .PP \fI$TERM\fR .RS 4 از \fI$TERM\fR کاربر فراخواننده کپی می‌شود\&. می‌توان با \fB\-\-setenv=\fR آن را بازنویسی کرد\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fI$SUDO_USER\fR .RS 4 روی نام کاربری کاربر مبدأ تنظیم می‌شود\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fI$SUDO_UID\fR .RS 4 روی شناسه عددی یونیکس (UID) کاربر مبدأ تنظیم می‌شود\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fI$SUDO_GID\fR .RS 4 روی شناسه عددی گروه اصلی یونیکس (GID) نشست مبدأ تنظیم می‌شود\&. .sp اضافه‌شده در نگارش ۲۵۶\&. .RE .PP \fI$SHELL_PROMPT_PREFIX\fR .RS 4 به طور پیش‌فرض روی ایموجی ابرقهرمان (در صورت پشتیبانی) تنظیم می‌شود، اما می‌تواند با متغیر محیطی \fI$SYSTEMD_RUN_SHELL_PROMPT_PREFIX\fR (به پایین مراجعه کنید) یا سوییچ \fB\-\-shell\-prompt\-prefix=\fR (به بالا مراجعه کنید) بازنویسی شود\&. .sp اضافه‌شده در نگارش ۲۵۷\&. .RE .PP متغیرهای زیر می‌توانند به \fBrun0\fR ارسال شوند: .PP \fI$SYSTEMD_RUN_SHELL_PROMPT_PREFIX\fR .RS 4 در صورت تنظیم، پیشوند پیش‌فرض اعلان شل را که \fBrun0\fR برای شل فراخوانی‌شده تنظیم می‌کند (ایموجی ابرقهرمان) بازنویسی می‌نماید\&. برای غیرفعال کردن پیشوند اعلان شل، آن را روی یک رشته خالی تنظیم کنید\&. .sp اضافه‌شده در نگارش ۲۵۷\&. .RE .SH "همچنین ببینید (SEE ALSO)" .PP \fBsystemd\fR(1), \fBsystemd-run\fR(1), \fBsudo\fR(8), \fBmachinectl\fR(1), \fBpam_systemd\fR(8) .SH "نکات (NOTES)" .IP " 1." 4 polkit .RS 4 \%https://www.freedesktop.org/wiki/Software/polkit .RE .IP " 2." 4 ANSI Escape Code (Wikipedia) .RS 4 \%https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters .RE