'\" t .\" Title: bwrap .\" Author: Alexander Larsson .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 08/26/2026 .\" Manual: User Commands .\" Source: Containers .\" Language: English .\" .TH "BWRAP" "1" "" "Containers" "دستورات کاربر" .\" ----------------------------------------------------------------- .\" * 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)" bwrap \- ابزار راه‌اندازی و برپایی کانتینر .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBbwrap\fR\ 'u \fBbwrap\fR [\fIگزینه\fR...] [\fIدستور\fR] .SH "توضیحات (DESCRIPTION)" .PP دستور \fBbwrap\fR یک ابزار ایزوله‌سازی (sandboxing) سطح‌پایین بدون دسترسی ویژه (unprivileged) است\&. بعید است که مستقیماً از آن در خط فرمان استفاده کنید، هرچند این کار ممکن است\&. .PP عملکرد آن از طریق ایجاد یک فضای نام سیستم پرونده جدید و کاملاً خالی است که ریشه آن روی یک tmpfs نامرئی از سیستم میزبان قرار دارد، و پس از خروج آخرین فرآیند به‌طور خودکار پاکسازی خواهد شد\&. سپس می‌توانید از گزینه‌های خط فرمان برای ساخت سیستم پرونده ریشه و محیط فرآیند جهت اجرای دستور در فضای نام استفاده کنید\&. .PP به‌طور پیش‌فرض، \fBbwrap\fR یک فضای نام سوار کردن (mount namespace) جدید برای محیط ایزوله ایجاد می‌کند\&. به‌طور اختیاری همچنین فضاهای نام جدید کاربر، ipc، pid، شبکه و uts را نیز تنظیم می‌کند (اما توجه داشته باشید که اگر bwrap با دسترسی کاربر ریشه اجرا نشود، فضای نام کاربر الزامی است)\&. برنامه درون سندباکس را می‌توان به گونه‌ای تنظیم کرد که با UID و GID متفاوتی اجرا شود\&. .PP در صورت نیاز (مانند زمان استفاده از فضای نام PID)، \fBbwrap\fR یک فرآیند کمینه با شناسه فرآیند ۱ (pid 1) را در سندباکس اجرا می‌کند که مسئول جمع‌آوری فرآیندهای زامبی (zombie reaping) است\&. همچنین متوقف شدن فرآیند اولیه برنامه (pid 2) را تشخیص داده و وضعیت خروج آن را به ایجادکننده اصلی گزارش می‌دهد\&. فرآیند pid 1 پس از باقی نماندن هیچ فرآیند دیگری در سندباکس خارج می‌شود تا محیط سندباکس را پاکسازی کند\&. .SH "گزینه‌ها (OPTIONS)" .PP هنگامی که گزینه‌ها چندین بار استفاده شوند، آخرین گزینه اعمال می‌شود مگر اینکه خلاف آن مشخص شده باشد\&. .PP گزینه‌های عمومی: .PP \fB\-\-help\fR .RS 4 چاپ راهنما و خروج .RE .PP \fB\-\-version\fR .RS 4 چاپ نسخه .RE .PP \fB\-\-args \fR\fBFD\fR .RS 4 تجزیه آرگومان‌های جداشده با نویسه تهی (nul-separated) از توصیف‌گر پرونده مشخص‌شده\&. این گزینه می‌تواند چندین بار برای تجزیه گزینه‌ها از چندین منبع استفاده شود\&. .RE .PP \fB\-\-argv0 \fR\fBVALUE\fR .RS 4 تنظیم مقدار argv[0] به VALUE پیش از اجرای برنامه .RE .PP \fB\-\-level\-prefix\fR .RS 4 پیشوند قرار دادن سطح اهمیت عددی درون قلاب‌های شکسته در ابتدای هر خط از خروجی تشخیصی\&. سطوح اهمیت استفاده‌شده بر اساس ثابت‌های به‌کاررفته در \fBsyslog\fR(3) است: برای مثال، <4> نشان‌دهنده یک هشدار است، زیرا LOG_WARNING مقدار عددی ۴ دارد\&. اعداد کوچکتر از ۴ خطاهای مهلک و اعداد بزرگتر از ۴ پیام‌های اطلاعاتی را نشان می‌دهند\&. این پیشوندها می‌توانند توسط ابزارهای سازگار با logger \-\-prio\-prefix (نگاه کنید به \fBlogger\fR(1)) یا systemd\-cat \-\-level\-prefix=1 (نگاه کنید به \fBsystemd-cat\fR(1)) تجزیه شوند\&. .RE .PP گزینه‌های مربوط به فضاهای نام کرنل: .PP \fB\-\-unshare\-user\fR .RS 4 ایجاد یک فضای نام کاربر (user namespace) جدید .RE .PP \fB\-\-unshare\-user\-try\fR .RS 4 ایجاد فضای نام کاربر جدید در صورت امکان، در غیر این صورت صرف‌نظر کردن از آن .RE .PP \fB\-\-unshare\-ipc\fR .RS 4 ایجاد یک فضای نام ipc جدید .RE .PP \fB\-\-unshare\-pid\fR .RS 4 ایجاد یک فضای نام pid جدید .RE .PP \fB\-\-unshare\-net\fR .RS 4 ایجاد یک فضای نام شبکه (network namespace) جدید .RE .PP \fB\-\-unshare\-uts\fR .RS 4 ایجاد یک فضای نام uts جدید .RE .PP \fB\-\-unshare\-cgroup\fR .RS 4 ایجاد یک فضای نام cgroup جدید .RE .PP \fB\-\-unshare\-cgroup\-try\fR .RS 4 ایجاد فضای نام cgroup جدید در صورت امکان، در غیر این صورت صرف‌نظر کردن از آن .RE .PP \fB\-\-unshare\-all\fR .RS 4 جدا کردن (unshare) تمام فضاهای نام ممکن\&. در حال حاضر معادل است با: \fB\-\-unshare\-user\-try\fR \fB\-\-unshare\-ipc\fR \fB\-\-unshare\-pid\fR \fB\-\-unshare\-net\fR \fB\-\-unshare\-uts\fR \fB\-\-unshare\-cgroup\-try\fR .RE .PP \fB\-\-share\-net\fR .RS 4 حفظ فضای نام شبکه، لغو کردن دستور قبلی \fB\-\-unshare\-all\fR یا \fB\-\-unshare\-net\fR .RE .PP \fB\-\-userns \fR\fBFD\fR .RS 4 استفاده از فضای نام کاربر موجود به جای ایجاد فضای جدید\&. فضای نام باید الزامات مجوز مربوط به ()setns را برآورده کند، که عموماً به این معناست که باید از نوادگان فضای نام کاربر فعال فعلی بوده و متعلق به همان کاربر باشد\&. .RE .PP \fB\-\-userns2 \fR\fBFD\fR .RS 4 پس از راه‌اندازی فضای نام جدید، تغییر وضعیت به فضای نام مشخص‌شده\&. برای کارکرد صحیح، فضای نام مشخص‌شده باید از نوادگان فضای نام کاربر استفاده‌شده برای برپایی باشد، بنابراین این گزینه فقط همراه با userns\-\- کاربرد دارد\&. .sp این گزینه زمانی مفید است که bubblewrap فضاهای نام کاربر تودرتو ایجاد می‌کند (برای دور زدن برخی مشکلات کرنل) و می‌توان از userns2\-\- برای ورود به آن‌ها استفاده کرد\&. .RE .PP \fB\-\-disable\-userns\fR .RS 4 جلوگیری از ایجاد فضاهای نام کاربر بیشتر توسط فرآیند داخل سندباکس، به طوری که نتواند فضای نام سیستم پرونده را مجدداً سازماندهی کند یا تغییرات پیچیده‌تری در فضای نام اعمال نماید\&. این ویژگی در حال حاضر با تنظیم متغیر sysctl با نام user.max_user_namespaces روی ۱ و سپس ورود به فضای نام کاربر تودرتویی که قادر به افزایش آن محدودیت در فضای نام خارجی نیست پیاده‌سازی شده است\&. این گزینه نیاز به \fB\-\-unshare\-user\fR دارد\&. .RE .PP \fB\-\-assert\-userns\-disabled\fR .RS 4 تأیید اینکه فرآیند درون سندباکس از ایجاد فضاهای نام کاربر بیشتر منع شده است، بدون انجام اقدام خاصی برای جلوگیری از آن\&. به عنوان مثال، می‌توان این را با \fB\-\-userns\fR ترکیب کرد تا بررسی شود که آیا فضای نام کاربر داده‌شده قبلاً برای جلوگیری از ایجاد فضاهای نام بیشتر تنظیم شده است یا خیر\&. .RE .PP \fB\-\-pidns \fR\fBFD\fR .RS 4 استفاده از فضای نام pid موجود به جای ایجاد یک فضای نام جدید\&. این گزینه اغلب با userns\-\- استفاده می‌شود، زیرا فضای نام pid باید متعلق به همان فضای نام کاربری باشد که bwrap از آن استفاده می‌کند\&. .sp توجه داشته باشید که این گزینه می‌تواند با unshare-pid\-\- ترکیب شود و در این صورت به این معنی است که سندباکس در فضای نام pid اختصاصی خود که فرزند فضای ارسال‌شده است قرار خواهد گرفت\&. .RE .PP \fB\-\-uid \fR\fBUID\fR .RS 4 استفاده از شناسه کاربر (UID) سفارشی در سندباکس (نیازمند \fB\-\-unshare\-user\fR) .RE .PP \fB\-\-gid \fR\fBGID\fR .RS 4 استفاده از شناسه گروه (GID) سفارشی در سندباکس (نیازمند \fB\-\-unshare\-user\fR) .RE .PP \fB\-\-hostname \fR\fBHOSTNAME\fR .RS 4 استفاده از نام میزبان (hostname) سفارشی در سندباکس (نیازمند \fB\-\-unshare\-uts\fR) .RE .PP گزینه‌های مربوط به تنظیم محیط: .PP \fB\-\-chdir \fR\fBDIR\fR .RS 4 تغییر دایرکتوری به DIR .RE .PP \fB\-\-setenv \fR\fBVAR\fR\fB \fR\fBVALUE\fR .RS 4 تنظیم مقدار یک متغیر محیطی .RE .PP \fB\-\-unsetenv \fR\fBVAR\fR .RS 4 حذف یک متغیر محیطی .RE .PP \fB\-\-clearenv\fR .RS 4 پاک کردن تمام متغیرهای محیطی، به جز \fBPWD\fR و مواردی که متعاقباً توسط \fB\-\-setenv\fR تنظیم می‌شوند .RE .PP گزینه‌های پایش سندباکس از خارج: .PP \fB\-\-lock\-file \fR\fBDEST\fR .RS 4 گرفتن قفل روی DEST در حین اجرای سندباکس\&. این گزینه می‌تواند چندین بار برای قفل کردن چند پرونده استفاده شود\&. .RE .PP \fB\-\-sync\-fd \fR\fBFD\fR .RS 4 باز نگه داشتن این توصیف‌گر پرونده در حین اجرای سندباکس .RE .PP گزینه‌های مربوط به سیستم پرونده\&. این‌ها تمام عملیاتی هستند که سیستم پرونده را مستقیماً تغییر می‌دهند، یا مواردی را در سیستم پرونده سوار (mount) می‌کنند\&. این موارد به ترتیبی که به عنوان آرگومان داده شده‌اند اعمال می‌شوند\&. .PP هرگونه دایرکتوری والد گم‌شده که برای ایجاد یک مقصد معین مورد نیاز باشد، به صورت خودکار ایجاد می‌شود\&. مجوزهای آن‌ها معمولاً روی 0755 (rwxr\-xr\-x) تنظیم می‌شود\&. با این حال، اگر گزینه \fB\-\-perms\fR اعمال شده باشد و مجوز گروه یا دیگران را روی صفر تنظیم کند، دایرکتوری‌های والد تازه ایجادشده نیز مجوز مربوطه خود را روی صفر خواهند داشت\&. گزینه \fB\-\-size\fR اندازه نقطه سوارشدن ایجادشده را هنگام قرار گرفتن پیش از یک عمل \fB\-\-tmpfs\fR تغییر می‌دهد؛ \fB\-\-perms\fR و \fB\-\-size\fR می‌توانند ترکیب شوند\&. .PP \fB\-\-perms \fR\fBOCTAL\fR .RS 4 این گزینه به خودی خود کاری انجام نمی‌دهد و باید بعد از آن یکی از گزینه‌هایی که تحت تأثیر قرار می‌دهد آورده شود\&. مجوزها را برای عملیات بعدی به صورت هشت‌هشتی OCTAL تنظیم می‌کند\&. عملیات بعدی تحت تأثیر قرار نمی‌گیرند: برای مثال، --perms 0700 --tmpfs /a --tmpfs /b مسیر /a را با مجوزهای 0700 سوار می‌کند، سپس به مجوزهای پیش‌فرض برای /b بازمی‌گردد\&. توجه داشته باشید که \fB\-\-perms\fR و \fB\-\-size\fR می‌توانند ترکیب شوند: --perms 0700 --size 10485760 --tmpfs /s مجوزها و همچنین حداکثر اندازه را روی tmpfs ایجادشده اعمال می‌کند\&. .RE .PP \fB\-\-size \fR\fBBYTES\fR .RS 4 این گزینه به خودی خود کاری انجام نمی‌دهد و باید پیش از tmpfs\-\- بیاید\&. اندازه را بر حسب بایت برای tmpfs بعدی تعیین می‌کند\&. به عنوان مثال، --size 10485760 --tmpfs /tmp یک tmpfs در /tmp با اندازه ۱۰ مگابایت ایجاد می‌کند\&. عملیات بعدی تحت تأثیر قرار نمی‌گیرند: برای مثال، --size 10485760 --tmpfs /a --tmpfs /b مسیر /a را با اندازه ۱۰ مگابایت سوار می‌کند، سپس به اندازه پیش‌فرض برای /b بازمی‌گردد\&. توجه داشته باشید که \fB\-\-perms\fR و \fB\-\-size\fR می‌توانند ترکیب شوند: --size 10485760 --perms 0700 --tmpfs /s مجوزها و حداکثر اندازه را روی tmpfs ایجادشده اعمال می‌کند\&. .RE .PP \fB\-\-bind \fR\fBSRC\fR\fB \fR\fBDEST\fR .RS 4 سوار کردن متصل (Bind mount) مسیر مبدا میزبان SRC بر روی مقصد DEST .RE .PP \fB\-\-bind\-try \fR\fBSRC\fR\fB \fR\fBDEST\fR .RS 4 معادل \fB\-\-bind\fR است اما در صورت عدم وجود مسیر SRC از آن صرف‌نظر می‌کند\&. .RE .PP \fB\-\-dev\-bind \fR\fBSRC\fR\fB \fR\fBDEST\fR .RS 4 سوار کردن متصل مسیر مبدا میزبان SRC روی DEST همراه با اجازه دسترسی به دستگاه‌ها .RE .PP \fB\-\-dev\-bind\-try \fR\fBSRC\fR\fB \fR\fBDEST\fR .RS 4 معادل \fB\-\-dev\-bind\fR است اما در صورت عدم وجود مسیر SRC از آن صرف‌نظر می‌کند\&. .RE .PP \fB\-\-ro\-bind \fR\fBSRC\fR\fB \fR\fBDEST\fR .RS 4 سوار کردن متصل مسیر مبدا میزبان SRC به صورت فقط‌خواندنی روی مقصد DEST .RE .PP \fB\-\-ro\-bind\-try \fR\fBSRC\fR\fB \fR\fBDEST\fR .RS 4 معادل \fB\-\-ro\-bind\fR است اما در صورت عدم وجود مسیر SRC از آن صرف‌نظر می‌کند\&. .RE .PP \fB\-\-remount\-ro \fR\fBDEST\fR .RS 4 سوار کردن مجدد مسیر DEST به صورت فقط‌خواندنی\&. این گزینه فقط بر روی نقطه سوارشدن مشخص‌شده کار می‌کند، بدون اینکه هیچ نقطه سوارشدن دیگری را در زیر مسیر مشخص‌شده تغییر دهد\&. .RE .PP \fB\-\-overlay\-src \fR\fBSRC\fR .RS 4 این گزینه به خودی خود کاری انجام نمی‌دهد و باید بعد از آن یکی از دیگر گزینه‌های overlay آورده شود\&. مسیر میزبانی را مشخص می‌کند که در صورت عدم وجود پرونده‌ها در لایه بالاتر، پرونده‌ها باید از آن خوانده شوند\&. .sp این گزینه می‌تواند چندین بار برای ارائه منابع چندگانه استفاده شود\&. منابع به ترتیبی که داده شده‌اند روی هم قرار می‌گیرند و اولین منبع در خط فرمان در پایین‌ترین لایه قرار دارد: اگر مسیر معینی برای خواندن در بیش از یک منبع وجود داشته باشد، پرونده از آخرین منبع مشخص‌شده خوانده می‌شود\&. .sp (برای کاربرانی که با overlayfs آشنا هستند، توجه داشته باشید که این ترتیب برعکس ترتیبی است که توسط گزینه سوارشدن lowerdir کرنل استفاده می‌شود\&.) .RE .PP \fB\-\-overlay \fR\fBRWSRC\fR\fB \fR\fBWORKDIR\fR\fB \fR\fBDEST\fR .RS 4 .RE .PP \fB\-\-tmp\-overlay \fR\fBDEST\fR .RS 4 .RE .PP \fB\-\-ro\-overlay \fR\fBDEST\fR .RS 4 استفاده از overlayfs برای سوار کردن مسیرهای میزبان مشخص‌شده توسط RWSRC و تمام گزینه‌های بلافاصله ماقبل \fB\-\-overlay\-src\fR روی DEST\&. مقصد DEST شامل اجتماع تمام پرونده‌ها در تمامی لایه‌ها خواهد بود\&. .sp با استفاده از \-\-overlay تمام عملیات نوشتن به مسیر RWSRC هدایت می‌شود\&. عملیات خواندن ترجیحاً از RWSRC و سپس از مسیرهای مشخص‌شده در \fB\-\-overlay\-src\fR انجام می‌گیرد\&. مسیر WORKDIR باید یک دایرکتوری خالی روی همان سیستم پرونده RWSRC باشد، و به صورت داخلی توسط کرنل استفاده می‌شود\&. .sp با استفاده از \-\-tmp\-overlay تمام عملیات نوشتن به tmpfs که میزبان ریشه سندباکس است می‌رود، در مکانی که نه از میزبان و نه از فرآیند فرزند قابل دسترسی نیست\&. بنابراین نوشته‌ها در طول اجراهای مکرر باقی نمی‌مانند\&. .sp با استفاده از \-\-ro\-overlay سیستم پرونده به صورت فقط‌خواندنی سوار می‌شود\&. این گزینه نیاز دارد که حداقل دو گزینه \fB\-\-overlay\-src\fR پیش از آن آمده باشند\&. .sp استفاده از \-\-ro\-overlay یا مشخص کردن بیش از یک \fB\-\-overlay\-src\fR نیازمند کرنل لینوکس نسخه ۴.۰ یا بالاتر است\&. .sp به دلیل محدودیت‌های overlayfs، هیچ دایرکتوری میزبانی که از طریق overlay-src\-\- یا overlay\-\- داده شده است، نباید پس از تفکیک پیوندهای نمادین، والد یا جد دیگری باشد\&. بسته به نسخه، کرنل لینوکس ممکن است این مورد را اعمال کند یا نکند، اما اگر اعمال نکند رفتار overlayfs تعریف‌نشده خواهد بود\&. .sp برای اطلاعات بیشتر، اسناد Overlay Filesystem را در کرنل لینوکس در نشانی https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt ببینید\&. .RE .PP \fB\-\-proc \fR\fBDEST\fR .RS 4 سوار کردن procfs روی DEST .RE .PP \fB\-\-dev \fR\fBDEST\fR .RS 4 سوار کردن devtmpfs جدید روی DEST .RE .PP \fB\-\-tmpfs \fR\fBDEST\fR .RS 4 سوار کردن tmpfs جدید روی DEST\&. اگر گزینه قبلی \fB\-\-perms\fR بوده باشد، حالت مجوز tmpfs را تعیین می‌کند؛ در غیر این صورت، tmpfs دارای حالت 0755 خواهد بود\&. اگر گزینه قبلی \fB\-\-size\fR بوده باشد، اندازه بر حسب بایت tmpfs را تعیین می‌کند؛ در غیر این صورت tmpfs اندازه پیش‌فرض را خواهد داشت\&. .RE .PP \fB\-\-mqueue \fR\fBDEST\fR .RS 4 سوار کردن mqueue جدید روی DEST .RE .PP \fB\-\-dir \fR\fBDEST\fR .RS 4 ایجاد یک دایرکتوری در مسیر DEST\&. اگر دایرکتوری از قبل وجود داشته باشد، مجوزهای آن بدون تغییر باقی می‌ماند و از \fB\-\-perms\fR صرف‌نظر می‌شود (اگر نیاز به تغییر مجوزهای یک دایرکتوری موجود باشد از \fB\-\-chmod\fR استفاده کنید)\&. اگر دایرکتوری به تازگی ایجاد شده باشد و گزینه قبلی \fB\-\-perms\fR بوده باشد، حالت دایرکتوری را تنظیم می‌کند؛ در غیر این صورت، دایرکتوری‌های تازه‌تأسیس دارای حالت 0755 هستند\&. .RE .PP \fB\-\-file \fR\fBFD\fR\fB \fR\fBDEST\fR .RS 4 کپی از توصیف‌گر پرونده FD به DEST\&. اگر گزینه قبلی \fB\-\-perms\fR بوده باشد، حالت پرونده جدید را تنظیم می‌کند؛ در غیر این صورت پرونده دارای حالت 0666 است (توجه داشته باشید که این با \fB\-\-bind\-data\fR یکسان نیست)\&. .RE .PP \fB\-\-bind\-data \fR\fBFD\fR\fB \fR\fBDEST\fR .RS 4 کپی از توصیف‌گر پرونده FD به پرونده‌ای که به صورت bind-mount روی DEST سوار می‌شود\&. اگر گزینه قبلی \fB\-\-perms\fR بوده باشد، حالت پرونده جدید را تنظیم می‌کند؛ در غیر این صورت پرونده دارای حالت 0600 است (توجه داشته باشید که این با \fB\-\-file\fR یکسان نیست)\&. .RE .PP \fB\-\-ro\-bind\-data \fR\fBFD\fR\fB \fR\fBDEST\fR .RS 4 کپی از توصیف‌گر پرونده FD به پرونده‌ای که به صورت bind-mount فقط‌خواندنی روی DEST سوار می‌شود\&. اگر گزینه قبلی \fB\-\-perms\fR بوده باشد، حالت پرونده جدید را تنظیم می‌کند؛ در غیر این صورت پرونده دارای حالت 0600 است (توجه داشته باشید که این با \fB\-\-file\fR یکسان نیست)\&. .RE .PP \fB\-\-symlink \fR\fBSRC\fR\fB \fR\fBDEST\fR .RS 4 ایجاد پیوند نمادین در DEST با هدف SRC\&. .sp از نسخه 0.9.0 به بعد، اگر DEST از قبل به عنوان پیوند نمادین وجود داشته باشد و هدف آن دقیقاً SRC باشد، خطا در نظر گرفته نمی‌شود\&. .sp قبل از نسخه 0.9.0، اگر DEST از قبل وجود داشت، این به عنوان خطا تلقی می‌شد (حتی اگر هدف آن با SRC یکسان بود)\&. .RE .PP \fB\-\-chmod \fR\fBOCTAL\fR\fB \fR\fBPATH\fR .RS 4 تنظیم مجوزهای مسیر PATH (که باید از قبل وجود داشته باشد) به مقدار هشت‌هشتی OCTAL\&. .RE .PP گزینه‌های قفل امنیتی (Lockdown): .PP \fB\-\-seccomp \fR\fBFD\fR .RS 4 بارگذاری و استفاده از قوانین seccomp از توصیف‌گر FD\&. قوانین باید در قالب یک برنامه کامپایل‌شده cBPF باشند، همان‌طور که توسط seccomp_export_bpf تولید می‌شود\&. اگر این گزینه بیش از یک بار داده شود، فقط آخرین مورد استفاده می‌شود\&. در صورت نیاز به چندین برنامه seccomp از \fB\-\-add\-seccomp\-fd\fR استفاده کنید\&. .RE .PP \fB\-\-add\-seccomp\-fd \fR\fBFD\fR .RS 4 بارگذاری و استفاده از قوانین seccomp از FD\&. قوانین باید در قالب یک برنامه کامپایل‌شده cBPF باشند، همان‌طور که توسط seccomp_export_bpf تولید می‌شود\&. این گزینه می‌تواند تکرار شود، که در این حالت تمام برنامه‌های seccomp به ترتیبی که داده شده‌اند بارگذاری می‌شوند (توجه داشته باشید که کرنل آن‌ها را به ترتیب معکوس ارزیابی می‌کند، بنابراین آخرین برنامه در خط فرمان bwrap اول ارزیابی می‌شود)\&. همه آن‌ها به جز احتمالاً آخرین مورد، باید اجازه استفاده از فراخوانی prctl دستور PR_SET_SECCOMP را بدهند\&. این گزینه نمی‌تواند با \fB\-\-seccomp\fR ترکیب شود\&. .RE .PP \fB\-\-exec\-label \fR\fBLABEL\fR .RS 4 برچسب اجرایی از سندباکس\&. در یک سیستم SELinux می‌توانید زمینه (context) مربوط به SELinux را برای فرآیند(های) سندباکس مشخص کنید\&. .RE .PP \fB\-\-file\-label \fR\fBLABEL\fR .RS 4 برچسب پرونده برای محتوای موقت سندباکس\&. در یک سیستم SELinux می‌توانید زمینه SELinux را برای محتوای سندباکس مشخص کنید\&. .RE .PP \fB\-\-block\-fd \fR\fBFD\fR .RS 4 مسدود کردن اجرای سندباکس روی خواندن از FD تا زمانی که داده‌ای در دسترس قرار گیرد\&. .RE .PP \fB\-\-userns\-block\-fd \fR\fBFD\fR .RS 4 عدم مقداردهی اولیه فضای نام کاربر و انتظار روی FD تا آماده شدن آن\&. این به فرآیندهای خارجی (مانند newuidmap/newgidmap) اجازه می‌دهد تا فضای نام کاربر را قبل از استفاده توسط فرآیند سندباکس تنظیم کنند\&. .RE .PP \fB\-\-info\-fd \fR\fBFD\fR .RS 4 نوشتن اطلاعات مربوط به سندباکس با قالب JSON در FD\&. .RE .PP \fB\-\-json\-status\-fd \fR\fBFD\fR .RS 4 چندین سند JSON در FD نوشته می‌شود، هر سند در یک خط (قالب JSON Lines)\&. هر خط یک شیء منفرد JSON است\&. پس از اینکه \fBbwrap\fR فرآیند فرزند را درون سندباکس راه‌اندازی کرد، شیئی با عضو child\-pid در \fB\-\-json\-status\-fd\fR می‌نویسد (این کارکرد گزینه قدیمی‌تر \fB\-\-info\-fd\fR را تکرار می‌کند)\&. مقدار متناظر، شناسه فرآیند (PID) فرزند در فضای نام pid است که \fBbwrap\fR از آن اجرا شده است\&. در صورت وجود، شناسه‌های فضای نام نیز در شیء همراه با child-pid گنجانده می‌شوند؛ این نیز گزینه قدیمی‌تر \fB\-\-info\-fd\fR را تکرار می‌کند\&. هنگامی که فرآیند فرزند داخل سندباکس خارج می‌شود، \fBbwrap\fR شیئی با عضو exit-code می‌نویسد و سپس \fB\-\-json\-status\-fd\fR را می‌بندد\&. مقدار متناظر با exit\-code وضعیت خروج فرزند با کدگذاری معمول شل است (n اگر به طور عادی با وضعیت n خارج شود، یا 128+n اگر با سیگنال n خاتمه یافته باشد)\&. اعضای دیگری ممکن است در نسخه‌های بعدی \fBbwrap\fR به این اشیاء افزوده شوند، و اشیاء JSON دیگری ممکن است قبل یا بعد از اشیاء فعلی اضافه شوند، بنابراین خوانندگان باید اعضا و اشیایی را که متوجه نمی‌شوند نادیده بگیرند\&. .RE .PP \fB\-\-new\-session\fR .RS 4 ایجاد یک نشست ترمینال جدید برای سندباکس (فراخوانی ()setsid)\&. این کار سندباکس را از ترمینال کنترل‌کننده قطع می‌کند، به این معنی که سندباکس نمی‌تواند به عنوان مثال ورودی به ترمینال تزریق کند\&. .sp نکته: در یک سندباکس عمومی، اگر از new-session\-\- استفاده نکنید، توصیه می‌شود از seccomp برای غیرمجاز کردن ioctl فرمان TIOCSTI استفاده کنید، در غیر این صورت برنامه می‌تواند ورودی صفحه‌کلید را به ترمینال وارد کند که می‌تواند منجر به اجرای دستور خارج از سندباکس شود (نگاه کنید به CVE\-2017\-5226)\&. .RE .PP \fB\-\-die\-with\-parent\fR .RS 4 اطمینان از متوقف شدن فرآیند فرزند (COMMAND) هنگام خروج یا مرگ والد bwrap\&. تمام فرآیندهای سندباکس bwrap را به ترتیب از والد به فرزند از جمله فرآیند COMMAND در هنگام مرگ bwrap یا والد آن با سیگنال SIGKILL متوقف می‌کند\&. نگاه کنید به prctl, PR_SET_PDEATHSIG\&. .RE .PP \fB\-\-as\-pid\-1\fR .RS 4 فرآیندی با PID=1 در سندباکس برای درو کردن فرآیندهای فرزند ایجاد نکن\&. .RE .PP \fB\-\-cap\-add \fR\fBCAP\fR .RS 4 افزودن قابلیت (capability) مشخص‌شده CAP مانند CAP_DAC_READ_SEARCH هنگام اجرا به عنوان کاربر دارای دسترسی ویژه\&. مقدار ویژه ALL را برای افزودن تمامی قابلیت‌های مجاز می‌پذیرد\&. .RE .PP \fB\-\-cap\-drop \fR\fBCAP\fR .RS 4 حذف قابلیت مشخص‌شده هنگام اجرا به عنوان کاربر دارای دسترسی ویژه\&. مقدار ویژه ALL را برای حذف تمام قابلیت‌ها می‌پذیرد\&. به‌طور پیش‌فرض هیچ قابلیتی در فرآیند سندباکس‌شده باقی نمی‌ماند\&. گزینه‌های \fB\-\-cap\-add\fR و \fB\-\-cap\-drop\fR به ترتیبی که در خط فرمان مشخص شده‌اند پردازش می‌شوند\&. لطفاً به ترتیب مشخص‌کردن آن‌ها دقت فرمایید\&. .RE .PP \fB\-\-not\-a\-security\-boundary\fR .RS 4 اعلام اینکه این فراخوانی از \fBbwrap\fR برای ایجاد یک مرز امنیتی بین سندباکس و سیستم میزبان در نظر گرفته نشده است\&. هنگامی که این گزینه داده شود، برخی از خرابی‌های غیرمهلک راه‌اندازی سندباکس (مانند ناموفق بودن سوار شدن مجدد یک زیرشاخه به دلیل پاسخ ندادن به موقع automounter) به جای ایجاد خطا و خروج \fBbwrap\fR، یک هشدار تولید کرده و نادیده گرفته می‌شوند\&. در نسخه‌های بعدی bubblewrap ممکن است اثر این گزینه برای غیرمهلک کردن سایر عملیات راه‌اندازی سندباکس گسترش یابد\&. .sp این گزینه برای برنامه‌های فراخواننده‌ای مانند xdg\-dbus\-proxy یا Steam در نظر گرفته شده است که از \fBbwrap\fR برای تنظیم چیدمان سیستم پرونده برای یک فرآیند استفاده می‌کنند، اما برای ایجاد مرز امنیتی به آن متکی نیستند\&. .sp سایر عملیاتی که برای ایجاد سندباکس اساسی هستند (ایجاد فضاهای نام، \fBpivot_root\fR، حذف قابلیت‌ها) صرف‌نظر از این گزینه همچنان باعث خطای قطعی خواهند شد\&. .RE .SH "محیط (ENVIRONMENT)" .PP \fBHOME\fR .RS 4 به عنوان پوشه کاری جاری (cwd) در سندباکس استفاده می‌شود اگر \fB\-\-chdir\fR به‌طور صریح مشخص نشده باشد و cwd فعلی در داخل سندباکس وجود نداشته باشد\&. گزینه \fB\-\-setenv\fR می‌تواند برای جایگزینی مقداری که در اینجا استفاده می‌شود به کار رود\&. .RE .SH "وضعیت خروج (EXIT STATUS)" .PP دستور \fBbwrap\fR وضعیت خروج فرآیند اولیه برنامه (pid 2 در سندباکس) را برمی‌گرداند\&. .SH "نکات (NOTES)" .IP " 1." 4 قالب "JSON lines" .RS 4 \%https://jsonlines.org .RE