.\" Automatically generated by Pandoc 3.10.2 .\" .TH "mkosi\-sandbox" "1" "" "" .SH "نام (NAME)" mkosi\-sandbox \- اجرای دستورها در یک سندباکس سفارشی .SH "خلاصه دستور (SYNOPSIS)" \f[B]mkosi\-sandbox [options\&...] command [arguments]\f[R] .SH "توضیحات (DESCRIPTION)" دستور \f[B]mkosi\-sandbox\f[R] دستور داده‌شده را در یک سندباکس (محیط ایزوله) سفارشی اجرا می‌کند. این سندباکس با تعیین گزینه‌های خط فرمان که بخش‌های مختلف آن را پیکربندی می‌کنند، تنظیم می‌شود. .PP اگر هیچ دستوری مشخص نشود، \f[B]mkosi\-sandbox\f[R] پوستهٔ \f[B]bash\f[R] را درون سندباکس اجرا خواهد کرد. .PP توجه داشته باشید که این سندباکس به عنوان یک مرز امنیتی طراحی نشده است. هدف اصلی آن فراهم آوردن امکان اجرای دستورها در یک محیط ایزوله است تا تحت تأثیر سیستم میزبان قرار نگیرند. .PP می‌توان از \f[B]mkosi\-sandbox\f[R] برای ایجاد یک سندباکس درون‌فرآیندی برای برنامه‌های پایتون استفاده کرد؛ این کار با وارد کردن (import) آن به عنوان یک ماژول و فراخوانی تابع \f[B]enter\f[R] آن تنها با گزینه‌ها انجام می‌شود. در این حالت نیازی به تعیین خط فرمان برای اجرا نیست. به عنوان مثال: .IP .EX \f[B]import\f[R] mkosi.sandbox mkosi.sandbox.enter([\(dq\-\-become\-root\(dq]) print(os.getuid()) .EE .PP تنها فراخوانی تابع \f[B]enter\f[R] مجاز است. فراخوانی هر تابع دیگری از \f[B]mkosi.sandbox\f[R] پشتیبانی نمی‌شود و ممکن است در نسخه‌های آینده با خطا مواجه شود. .SH "گزینه‌ها (OPTIONS)" .TP \f[B]\-\-tmpfs DST\f[R] یک سیستم‌فایل \f[B]tmpfs\f[R] جدید را در مسیر \f[B]DST\f[R] درون سندباکس سوار (mount) می‌کند. .TP \f[B]\-\-dev DST\f[R] یک دایرکتوری \f[B]/dev\f[R] اختصاصی در مسیر \f[B]DST\f[R] در سندباکس برپا می‌کند. این \f[B]/dev\f[R] اختصاصی فقط شامل گره‌های دستگاه پایه‌ای مورد نیاز برای عملکرد سندباکس (مانند \f[B]/dev/null\f[R]) خواهد بود و دستگاه‌های واقعی را شامل نمی‌شود. .TP \f[B]\-\-dir DST\f[R] یک دایرکتوری و تمام دایرکتوری‌های والد ناموجود را در مسیر \f[B]DST\f[R] در سندباکس ایجاد می‌کند. تمام دایرکتوری‌ها با دسترسی 755 ایجاد می‌شوند، مگر اینکه مسیر به \f[B]/tmp\f[R] یا \f[B]/var/tmp\f[R] ختم شود که در این صورت با دسترسی 1777 ایجاد خواهد شد. .TP \f[B]\-\-bind SRC DST\f[R] مسیر مبدأ \f[B]SRC\f[R] به‌طور بازگشتی در مسیر \f[B]DST\f[R] درون سندباکس متصل (bind mount) می‌شود. اگر نقطه اتصال در سندباکس وجود نداشته باشد، ایجاد می‌شود. هر دایرکتوری والد ناموجود نیز در سندباکس ایجاد خواهد شد. مسیر مبدأ به صورت اختیاری می‌تواند با یک نویسهٔ \f[B]+\f[R] پیشوندگذاری شود. در این صورت، مسیر مبدأ به جای دایرکتوری ریشهٔ میزبان، نسبت به دایرکتوری ریشهٔ سندباکس تفسیر خواهد شد. .TP \f[B]\-\-bind\-try SRC DST\f[R] مانند \f[B]\-\-bind\f[R] است، اما در صورتی که مسیر مبدأ وجود نداشته باشد با شکست مواجه نمی‌شود. .TP \f[B]\-\-ro\-bind SRC DST\f[R] مانند \f[B]\-\-bind\f[R] است، اما عمل bind mount را به صورت بازگشتی و فقط‌خواندنی انجام می‌دهد. .TP \f[B]\-\-ro\-bind\-try SRC DST\f[R] مانند \f[B]\-\-bind\-try\f[R] است، اما عمل bind mount را به صورت بازگشتی و فقط‌خواندنی انجام می‌دهد. .TP \f[B]\-\-bind\-foreign SRC DST\f[R] مانند \f[B]\-\-bind\f[R] است، اما \f[B]mkosi\-sandbox\f[R] یک فضای‌نام کاربری (user namespace) تخصیص داده و با استفاده از \f[B]systemd\-nsresourced\f[R] یک محدودهٔ UID گذرا برای آن فراهم می‌کند؛ سپس برای هر اتصال \f[B]\-\-bind\-foreign\f[R] با استفاده از \f[B]systemd\-mountfsd\f[R]، محدودهٔ UID بیگانه را به این محدودهٔ UID گذرا نگاشت شناسه (idmap) می‌کند. در نهایت، \f[B]mkosi\-sandbox\f[R] درست پیش از اجرای دستور پیکربندی در سندباکس به فضای‌نام کاربری می‌پیوندد. .RS استفاده از این گزینه نیازمند \f[B]systemd\-nsresourced\f[R] و \f[B]systemd\-mountfsd\f[R] نسخهٔ v260 یا جدیدتر است. .RE .TP \f[B]\-\-ro\-bind\-foreign SRC DST\f[R] مانند \f[B]\-\-bind\-foreign\f[R] است، اما سوار کردن را به صورت فقط‌خواندنی انجام می‌دهد. .TP \f[B]\-\-bind\-nofollow SRC DST\f[R] مانند \f[B]\-\-bind\f[R] است، اما پیوندهای نمادین (symlinks) را برای \f[B]SRC\f[R] دنبال نمی‌کند. اگر \f[B]SRC\f[R] خود یک پیوند نمادین باشد، خود پیوند بدون تغییر متصل می‌شود نه هدف آن. .TP \f[B]\-\-ro\-bind\-nofollow SRC DST\f[R] مانند \f[B]\-\-bind\-nofollow\f[R] است، اما سوار کردن را به صورت فقط‌خواندنی انجام می‌دهد. .TP \f[B]\-\-symlink SRC DST\f[R] یک پیوند نمادین در مسیر \f[B]DST\f[R] درون سندباکس ایجاد می‌کند که به \f[B]SRC\f[R] اشاره دارد. اگر \f[B]DST\f[R] از قبل وجود داشته باشد و یک فایل یا پیوند نمادین باشد، یک پیوند نمادین موقت ایجاد شده و روی \f[B]DST\f[R] سوار می‌شود. .TP \f[B]\-\-write DATA DST\f[R] رشتهٔ داده‌شده در \f[B]DATA\f[R] را در مسیر \f[B]DST\f[R] در سندباکس می‌نویسد. .TP \f[B]\-\-overlay\-lowerdir DIR\f[R] دایرکتوری \f[B]DIR\f[R] از سیستم میزبان را به عنوان یک دایرکتوری پایینی (lower directory) جدید برای سوار کردن بعدی overlayfs اضافه می‌کند. .TP \f[B]\-\-overlay\-upperdir DIR\f[R] دایرکتوری بالایی (upper directory) را برای سوار کردن بعدی overlayfs روی \f[B]DIR\f[R] از سیستم میزبان تنظیم می‌کند. اگر روی \f[B]tmpfs\f[R] تنظیم شود، دایرکتوری بالایی و دایرکتوری کاری (workdir) زیردایرکتوری‌هایی از یک سوار کردن تازهٔ tmpfs خواهند بود. .TP \f[B]\-\-overlay\-workdir DIR\f[R] دایرکتوری کاری را برای سوار کردن بعدی overlayfs به \f[B]DIR\f[R] از سیستم میزبان تنظیم می‌کند. .TP \f[B]\-\-overlay DST\f[R] یک سیستم‌فایل overlay جدید را در مسیر \f[B]DST\f[R] در سندباکس سوار می‌کند. دایرکتوری‌های پایینی، دایرکتوری بالایی و دایرکتوری کاری به ترتیب با استفاده از گزینه‌های \f[B]\-\-overlay\-lowerdir\f[R]، \f[B]\-\-overlay\-upperdir\f[R] و \f[B]\-\-overlay\-workdir\f[R] تعیین می‌شوند. پس از تجزیه و پردازش هر گزینهٔ \f[B]\-\-overlay\f[R]، سایر گزینه‌های overlay بازنشانی می‌شوند. .TP \f[B]\-\-unsetenv NAME\f[R] متغیر محیطی \f[B]NAME\f[R] را در سندباکس لغو (unset) می‌کند. .TP \f[B]\-\-setenv NAME VALUE\f[R] متغیر محیطی \f[B]NAME\f[R] را به مقدار \f[B]VALUE\f[R] در سندباکس تنظیم می‌کند. .TP \f[B]\-\-chdir DIR\f[R] دایرکتوری کاری را در سندباکس به \f[B]DIR\f[R] تغییر می‌دهد. .TP \f[B]\-\-same\-dir\f[R] دایرکتوری کاری در سندباکس را به همان دایرکتوری کاری فعلی که \f[B]mkosi\-sandbox\f[R] در آن روی میزبان اجرا شده است، تغییر می‌دهد. .TP \f[B]\-\-become\-root\f[R] کاربر فعلی را به کاربر ریشه (root) در سندباکس نگاشت می‌کند. اگر این گزینه مشخص نشود، کاربر فعلی به خودش در سندباکس نگاشت خواهد شد. صرف‌نظر از اینکه این گزینه مشخص شده باشد یا نه، کاربر فعلی دارای مجموعهٔ کاملی از قابلیت‌های محیطی (ambient capabilities) در سندباکس خواهد بود. این قابلیت‌ها شامل \f[B]CAP_SYS_ADMIN\f[R] می‌شود، بدین معنا که فرآیند فراخوانی‌شده در سندباکس قادر به انجام bind mount و عملیات‌های دیگر خواهد بود. .RS اگر \f[B]mkosi\-sandbox\f[R] توسط کاربر ریشه اجرا شود، این گزینه اثری نخواهد داشت. .RE .TP \f[B]\-\-map\-foreign\f[R] محدودهٔ UID بیگانه (foreign) را در سندباکس نگاشت می‌کند. برای اطلاعات بیشتر در مورد محدودهٔ UID بیگانه، ببینید: \c .UR https://systemd.io/UIDS-GIDS Users, Groups, UIDs and GIDs on systemd Systems .UE \c \&. .RS هنگام اجرای \f[B]mkosi\-sandbox\f[R] بدون دسترسی ویژه (unprivileged)، این گزینه نیازمند \f[B]systemd\-nsresourced\f[R] نسخهٔ v260 یا جدیدتر است. .RE .TP \f[B]\-\-map\-delegate N\f[R] تعداد N محدودهٔ اضافی ۶۴ هزارتایی UID/GID را در سندباکس نگاشت می‌کند. .RS این گزینه برای اجرای \f[B]systemd\-nspawn\f[R] یا هر برنامه‌ای که تلاش می‌کند از طریق \f[B]systemd\-nsresourced\f[R] از داخل محیط \f[B]mkosi\-sandbox\f[R] یک محدودهٔ UID گذرا تخصیص دهد، لازم است. این گزینه نیازمند \f[B]systemd\-nsresourced\f[R] نسخهٔ v260 یا جدیدتر است. .RE .TP \f[B]\-\-suppress\-chown\f[R] مشخص کردن این گزینه باعث می‌شود تمام فراخوانی‌های \f[B]chown()\f[R] یا فراخوانی‌های سیستمی مشابه در سندباکس به صورت بی‌اثر (noop) درآیند. این ویژگی در درجهٔ اول هنگام اجرای مدیر بسته‌ها در سندباکس کاربرد دارد، زیرا ممکن است تلاش کنند با \f[B]chown()\f[R] مالکیت فایل‌ها را به کاربران یا گروه‌های مختلف تغییر دهند؛ کاری که در صورت اجرا نشدن \f[B]mkosi\-sandbox\f[R] توسط کاربر مدیر سیستم، با شکست مواجه خواهد شد. .TP \f[B]\-\-suppress\-sync\f[R] مشخص کردن این گزینه باعث می‌شود تمام فراخوانی‌های \f[B]sync()\f[R] یا فراخوانی‌های سیستمی مشابه در سندباکس به صورت بی‌اثر (noop) درآیند. این ویژگی در درجهٔ اول هنگام فراخوانی مدیر بسته‌ها در سندباکس کاربرد دارد، زیرا ممکن است هنگام استخراج بسته‌ها فایل‌ها را \f[B]sync()\f[R] کنند که این کار هنگام ساخت ایمیج غیرضروری است و سرعت اجرا را به میزان چشمگیری کاهش می‌دهد. .TP \f[B]\-\-unshare\-net\f[R] مشخص کردن این گزینه باعث می‌شود \f[B]mkosi\-sandbox\f[R] در صورت امکان، یک فضای‌نام شبکه (network namespace) را تفکیک (unshare) کند. .TP \f[B]\-\-unshare\-ipc\f[R] مشخص کردن این گزینه باعث می‌شود \f[B]mkosi\-sandbox\f[R] در صورت امکان، یک فضای‌نام IPC را تفکیک (unshare) کند. .TP \f[B]\-\-pack\-fds\f[R] توصیف‌کننده‌های فایل به ارث‌رسیده را از شمارهٔ ۳ به بعد کنار هم فشرده کرده و \f[B]$LISTEN_FDS\f[R] را برابر با تعداد توصیف‌کننده‌های فایل فشرده‌شده و \f[B]$LISTEN_PID\f[R] را برابر با pid فرآیند جاری قرار می‌دهد. .TP \f[B]\-\-debug\f[R] پیام‌های مختلفی را در شرح نحوهٔ برپایی سندباکس ثبت می‌کند. .TP \f[B]\-\-version\f[R] نمایش نسخهٔ بسته. .TP \f[B]\-\-help\f[R], \f[B]\-h\f[R] نمایش اطلاعات مختصر در مورد نحوهٔ استفاده. .SH "مثال‌ها (EXAMPLES)" اجرای \f[B]bash\f[R] در دایرکتوری کاری فعلی در فضای‌نام شبکهٔ اختصاصی خود به عنوان کاربر فعلی: .IP .EX mkosi\-sandbox \-\-bind / / \-\-same\-dir \-\-unshare\-net .EE .PP اجرای \f[B]id\f[R] به عنوان کاربر ریشه در سندباکسی که تنها شامل \f[B]/usr\f[R] از سیستم میزبان به همراه پیوندهای نمادین لازم برای توانایی اجرای دستورها است: .IP .EX mkosi\-sandbox \(rs \-\-ro\-bind /usr /usr \(rs \-\-symlink usr/bin /bin \(rs \-\-symlink usr/lib /lib \(rs \-\-symlink usr/lib64 /lib64 \(rs \-\-symlink usr/sbin /sbin \(rs \-\-dev /dev \(rs \-\-bind /proc /proc \(rs \-\-tmpfs /tmp \(rs \-\-become\-root \(rs id .EE .SH "همچنین ببینید (SEE ALSO)" \f[B]mkosi(1)\f[R]