FIREJAIL(1) firejail man page FIREJAIL(1)

Firejail - برنامه سندباکس فضاهای نام لینوکس (Linux namespaces)

شروع یک سندباکس:

firejail [OPTIONS] [برنامه و آرگومان‌ها]

شروع یک برنامه AppImage:

firejail [OPTIONS] --appimage [OPTIONS] [فایل appimage و آرگومان‌ها]

انتقال فایل از یک سندباکس موجود:

firejail {--

شکل‌دهی ترافیک شبکه برای یک سندباکس موجود:

firejail --me|pid} bandwidth-command

پایش و مانیتورینگ:

firejail {--

متفرقه:

firejail {-? | --ebug-caps | --ebug-errnos | --ebug-syscalls | --ebug-syscalls32 | --ebug-protocols | --

دستور Firejail یک برنامه سندباکس دارای دسترسی SUID است که خطر رخنه و نفوذهای امنیتی را از طریق محدود ساختن محیط اجرای برنامه‌های غیرقابل‌اعتماد با استفاده از فضاهای نام لینوکس (namespaces)، مکانیزم seccomp-bpf و قابلیت‌های لینوکس (Linux capabilities) کاهش می‌دهد. این ابزار به یک فرآیند و تمام فرزندان آن امکان می‌دهد تا نمایی اختصاصی از منابع اشتراکی سراسری هسته مانند پشته شبکه (network stack)، جدول فرآیندها (process table) و جدول سوارکردن (mount table) داشته باشند. ابزار Firejail می‌تواند در محیط‌های SELinux یا AppArmor به کار گرفته شود و با گروه‌های کنترلی لینوکس (Linux Control Groups) نیز یکپارچه شده است.

این نرم‌افزار به زبان C و تقریباً بدون هیچ وابستگی جانبی نوشته شده است و روی هر رایانه لینوکسی با نسخه هسته 3.x یا جدیدتر اجرا می‌شود. این ابزار قادر است انواع مختلف فرآیندها را در سندباکس قرار دهد: سرورها، برنامه‌های گرافیکی و حتی نشست‌های ورود کاربران.

دستور Firejail به کاربر اجازه می‌دهد تا امنیت برنامه‌ها را با استفاده از پروفایل‌های امنیتی مدیریت کند. هر پروفایل مجموعه‌ای از مجوزها را برای یک برنامه خاص یا گروهی از برنامه‌ها تعریف می‌کند. این نرم‌افزار شامل پروفایل‌های امنیتی برای شماری از برنامه‌های پرکاربرد لینوکس مانند Mozilla Firefox، Chromium، VLC، Transmission و غیره است.

در حال حاضر Firejail به صورت یک باینری SUID پیاده‌سازی شده است؛ این بدان معناست که اگر یک حساب کاربری مخرب یا نفوذیافته موفق شود از نقصی در Firejail سوءاستفاده کند، این امر می‌تواند در نهایت به ارتقای دسترسی به کاربر ریشه (root) منجر شود. برای کاهش این ریسک، توصیه می‌شود فقط به کاربران مورد اعتماد اجازه اجرای firejail داده شود (برای جزئیات چگونگی دستیابی به این هدف، راهنمای firejail-users(5) را ببینید). برای جزئیات بیشتر درباره توازن میان امنیت و سهولت کاربری در Firejail، به نشانی زیر مراجعه کنید: #4601.

فناوری‌های جایگزین سندباکس مانند Snap (ببینید https://snapcraft.io) و Flatpak (ببینید https://flatpak.org) پشتیبانی نمی‌شوند. بسته‌های Snap و Flatpak ابزارهای مدیریتی بومی خود را دارند و هنگام قرار گرفتن در سندباکس با Firejail کار نخواهند کرد.

بدون مشخص کردن هیچ گزینه‌ای، سندباکس از یک سیستم فایل ساخته‌شده در یک فضای نام سوارکردن (mount namespace) جدید، و فضاهای نام جدید PID و UTS تشکیل می‌شود. فضاهای نام IPC، شبکه و کاربر را می‌توان با استفاده از گزینه‌های خط فرمان اضافه کرد. سیستم فایل پیش‌فرض Firejail بر پایه سیستم فایل میزبان بنا شده است که دایرکتوری‌های اصلی سیستم در آن به صورت فقط‌خواندنی سوار می‌شوند. این دایرکتوری‌ها عبارتند از /etc، /var، /usr، /bin، /sbin، /lib، /lib32، /libx32 و /lib64. فقط دایرکتوری‌های /home و /tmp قابل‌نوشتن هستند.

هنگام اجرا، Firejail ابتدا در مسیر ~/.config/firejail/ به دنبال پروفایل می‌گردد و در صورت نیافتن، مسیر /etc/firejail/ را جستجو می‌کند. اگر پروفایل مناسبی پیدا نشود، Firejail از یک پروفایل پیش‌فرض استفاده خواهد کرد. پروفایل پیش‌فرض بسیار محدودکننده است. در صورتی که برنامه کار نکرد، از گزینه --noprofile برای غیرفعال کردن آن استفاده کنید.

اگر هیچ آرگومان برنامه‌ای مشخص نشود، Firejail شل ترجیحی کاربر را اجرا می‌کند. مثال‌ها:

$ firejail [OPTIONS] # اجرای برنامه مشخص‌شده در متغیر $SHELL، معمولاً /bin/bash

$ firejail [OPTIONS] /usr/bin/firefox # اجرای Mozilla Firefox

# sudo firejail [OPTIONS] /etc/init.d/nginx start

هنگامی که یک گزینه چندین بار مشخص شود (چه در یک پروفایل، چه در خط فرمان، یا هر دو) یا با یک گزینه مرتبط تداخل داشته باشد، اولویت و رفتار مربوطه مختص همان گزینه بوده و معمولاً در بخش گزینه‌ها (OPTIONS) در ادامه مستند شده است. توجه داشته باشید که گزینه‌ای که در یک پروفایل مشخص شده است را معمولاً می‌توان در خط فرمان با استفاده از --ignore لغو و غیرفعال کرد.

--پایان گزینه‌ها را اعلام کرده و پردازش گزینه‌های بعدی را غیرفعال می‌کند.
به‌طور پیش‌فرض، firejail فایل اجرایی /usr/bin/bwrap را با برنامه‌ای که هیچ کاری انجام نمی‌دهد جایگزین می‌کند. جایگزین ما فقط هدف bubblewrap را اجرا می‌کند و تنها در داخل سندباکس firejail قابل مشاهده است. از این گزینه برای غیرفعال کردن این رفتار پیش‌فرض استفاده کنید.

مثال:
$ firejail --0profile --llow-bwrap bwrap --
firejail version 0.9.77

Parent pid 44129, child pid 44130
Base filesystem installed in 0.04 ms
Child process initialized in 5.02 ms
usage: bwrap [OPTIONS...] [--] COMMAND [ARGS...]


--lp
--rsion
--rgs FD Parse NUL-separated args from FD

اجازه دادن به ابزارهایی مانند strace و gdb درون سندباکس با افزودن فراخوان‌های سیستمی ptrace و process_vm_readv به فهرست سفید. این گزینه تنها هنگام اجرا روی هسته‌های لینوکس نسخه 4.8 یا جدیدتر در دسترس است - یک نقص هسته در فراخوان سیستمی ptrace امکان دور زدن کامل فیلتر seccomp را فراهم می‌سازد.

مثال:
$ firejail --allow-debuggers --profile=/etc/firejail/firefox.profile strace -f /usr/bin/firefox

همچنین --rivate-etc
و --race را ببینید.

تمام دایرکتوری‌های زیر /home درون سندباکس قابل مشاهده خواهند بود. به‌طور پیش‌فرض، فقط دایرکتوری خانگی کاربر جاری قابل مشاهده است.

مثال:
$ firejail --llusers

فعال‌سازی محدودسازی AppArmor با پروفایل "firejail-default". برای اطلاعات بیشتر، لطفاً بخش APPARMOR را در زیر ببینید.
فعال‌سازی محدودسازی AppArmor با یک پروفایل سفارشی. توجه داشته باشید که پروفایل مورد نظر باید از قبل در هسته بارگذاری شده باشد. برای اطلاعات بیشتر، لطفاً بخش APPARMOR را در زیر ببینید.
چاپ وضعیت محدودسازی AppArmor برای سندباکس مشخص‌شده با نام یا با PID.

مثال:
$ firejail --pparmor.print=browser
5074:netblue:/usr/bin/firejail /usr/bin/firefox-esr
AppArmor: firejail-default enforce

اجرای یک برنامه AppImage (ببینید https://appimage.org) درون سندباکس. اگر سندباکس به عنوان یک کاربر عادی اجرا شود، nonewprivs و فیلتر پیش‌فرض قابلیت‌ها فعال می‌شوند. هنگام اجرای appimageها گزینه‌های private-bin و private-lib به‌طور پیش‌فرض غیرفعال هستند.

مثال:
$ firejail --ppimage --rofile=krita
krita-3.0-x86_64.appimage
$ firejail --quiet --ppimage --rivate
--rofile=krita
krita-3.0-x86_64.appimage
$ firejail --ppimage --0t=none --1 --rofile=krita
krita-3.0-x86_64.appimage

نکته: هنگام استفاده هم‌زمان از هر دو گزینه --ppimage و --rofile،
توصیه می‌شود همیشه اولی پیش از دومی مشخص شود تا هرگونه شرط ?HAS_APPIMAGE درون پروفایل با مقدار درست ارزیابی شود (بخش ?CONDITIONAL در firejail-profile(5) را ببینید).

تنظیم محدودیت‌های پهنای باند برای سندباکس مشخص‌شده با نام یا PID، برای جزئیات بیشتر بخش TRAFFIC SHAPING را ببینید.
سوار کردن اتصالی (Mount-bind) فایل filename1 بر روی filename2. این گزینه تنها هنگام اجرا به عنوان کاربر ریشه در دسترس است.

مثال:
# firejail --g/etc/passwd,/etc/passwd

افزودن دایرکتوری یا فایل به فهرست سیاه. این کار باعث می‌شود فایل یا دایرکتوری کاملاً غیرقابل‌دسترس گردد. سایر فایل‌ها و دایرکتوری‌ها دست‌نخورده باقی می‌مانند. فایل یا دایرکتوری قرارگرفته در فهرست سیاه همچنان روی سیستم فایل قابل مشاهده است، حتی اگر دسترسی‌ناپذیر باشد.

مدیریت پیوندهای نمادین: افزودن مسیری که یک پیوند نمادین است به فهرست سیاه، مسیری را نیز که به آن اشاره می‌کند در فهرست سیاه قرار خواهد داد. برای نمونه، اگر ~/foo در فهرست سیاه قرار گیرد و به /bar اشاره داشته باشد، /bar نیز در فهرست سیاه قرار می‌گیرد.

تطبیق الگوهای فایلی (Globbing) پشتیبانی می‌شود، برای جزئیات بیشتر بخش FILE GLOBBING را ببینید.

مثال:
$ firejail --ist=/sbin --ist=/usr/sbin
$ firejail --ist=~/.mozilla
$ firejail --ist="/home/username/My Virtual Machines";

--
این دستور یک پروفایل بر پایه فهرست سفید می‌سازد. پروفایل روی صفحه نمایش داده می‌شود. برنامه در یک سندباکس بسیار منعطف اجرا می‌شود که تنها گزینه‌های --aps.drop=all و --ccomp=!chroot روی آن اعمال شده است. برنامه‌هایی که امتیازات کاربر را ارتقا می‌دهند پشتیبانی نمی‌شوند.

نکته: این گزینه برای اشکال‌زدایی و توسعه پروفایل طراحی شده است. پروفایل تولیدشده ممکن است ناقص، ناکارآمد و فاقد امنیت لازم باشد. اگر می‌خواهید ساخت یک پروفایل جدید را امتحان کنید، فایل CONTRIBUTING.md را ببینید.

مثال:
$ firejail --sr/bin/vlc ~/Videos/test.mp4
$ firejail --bsurface.AppImage

--
این دستور یک پروفایل بر پایه فهرست سفید می‌سازد و آن را در profile-file ذخیره می‌کند. برنامه در یک سندباکس بسیار منعطف اجرا می‌شود که تنها گزینه‌های --aps.drop=all و --ccomp=!chroot روی آن اعمال شده است. برنامه‌هایی که امتیازات کاربر را ارتقا می‌دهند پشتیبانی نمی‌شوند.

نکته: این گزینه برای اشکال‌زدایی و توسعه پروفایل طراحی شده است. پروفایل تولیدشده ممکن است ناقص، ناکارآمد و فاقد امنیت لازم باشد. اگر می‌خواهید ساخت یک پروفایل جدید را امتحان کنید، فایل CONTRIBUTING.md را ببینید.

مثال:
$ firejail --sr/bin/vlc ~/Videos/test.mp4
$ firejail --bsurface.profile --ppimage ~/Downloads/Subsurface.AppImage

گزینه سازگاری با شل لاگین. این گزینه توسط برخی برنامه‌های ورود هنگام اجرای شل لاگین به کار می‌رود، مانند مواقعی که firejail به عنوان شل لاگین محدودشده استفاده می‌شود. این گزینه در حال حاضر تاثیری در نحوه اجرای firejail ایجاد نمی‌کند.
--aps
قابلیت‌های لینوکس (Linux capabilities) یکی از امکانات هسته است که برای تفکیک امتیازات کاربر ریشه به مجموعه‌ای از امتیازات مجزا طراحی شده است. این امتیازات می‌توانند به طور مستقل فعال یا غیرفعال شوند، و بدین ترتیب آنچه را که یک فرآیند در حال اجرا با دسترسی ریشه می‌تواند در سیستم انجام دهد محدود سازند. برای جزئیات بیشتر به capabilities(7) مراجعه فرمایید.

به‌طور پیش‌فرض، برنامه‌های ریشه با تمامی قابلیت‌های فعال اجرا می‌شوند. گزینه --aps قابلیت‌های زیر را غیرفعال می‌کند: CAP_SYS_MODULE, CAP_SYS_RAWIO, CAP_SYS_BOOT, CAP_SYS_NICE, CAP_SYS_TTY_CONFIG, CAP_SYSLOG, CAP_MKNOD, CAP_SYS_ADMIN. این فیلتر روی تمامی فرآیندهای آغازشده در سندباکس اعمال می‌گردد.

مثال:
$ sudo firejail --aps /etc/init.d/nginx start

--aps.drop=all
حذف تمامی قابلیت‌ها برای فرآیندهای در حال اجرا در سندباکس. این گزینه برای اجرای برنامه‌های گرافیکی (GUI) یا هر برنامه دیگری که به امتیازات ریشه نیاز ندارد توصیه می‌شود. این یک گزینه ضروری برای اجرای امن برنامه‌های غیرقابل‌اعتماد نصب‌شده از منابع غیررسمی (مانند بازی‌ها، برنامه‌های جاوا و غیره) در سندباکس است.

مثال:
$ firejail --aps.drop=all /usr/bin/warzone2100

--aps.drop=capability,capability,capability
تعریف یک فیلتر فهرست سیاه سفارشی برای قابلیت‌های لینوکس.

مثال:
$ firejail --aps.drop=net_broadcast,net_admin,net_raw

--aps.keep=capability,capability,capability
تعریف یک فیلتر فهرست سفید سفارشی برای قابلیت‌های لینوکس.

مثال:
$ sudo firejail --aps.keep=chown,net_bind_service,setgid,\ setuid /etc/init.d/nginx start

--aps.print=name|pid
چاپ فیلتر قابلیت‌ها برای سندباکس مشخص‌شده با نام یا PID.

مثال:
$ firejail --0me=mygame --aps.drop=all /usr/bin/warzone2100 &
$ firejail --aps.print=mygame

مثال:
$ firejail --
3272:netblue::firejail --rivate
/usr/bin/firefox
$ firejail --aps.print=3272

--at=name|pid filename
چاپ محتوای فایل از ظرف سندباکس، برای جزئیات بیشتر بخش FILE TRANSFER را ببینید.
--hroot=dirname
تغییر ریشه (Chroot) سندباکس به یک سیستم فایل ریشه. بر خلاف ظرف سیستم فایل معمولی، دایرکتوری‌های سیستمی به صورت خواندنی-نوشتنی سوار می‌شوند. اگر سندباکس به عنوان یک کاربر عادی اجرا شود، nonewprivs و فیلتر پیش‌فرض قابلیت‌ها فعال می‌شوند.

مثال:
$ firejail --hroot=/media/ubuntu /usr/bin/warzone2100

جهت سوار کردن خودکار سوکت‌های X11 و PulseAudio متغیرهای محیطی FIREJAIL_CHROOT_X11 و FIREJAIL_CHROOT_PULSE را تنظیم نمایید.

نکته: پشتیبانی از این دستور در firejail.config با گزینه chroot کنترل می‌شود.

--pu=cpu-number,cpu-number,cpu-number
تنظیم وابستگی پردازنده (CPU affinity).

مثال:
$ firejail --pu=0,1 /usr/bin/handbrake

--pu.print=name|pid
چاپ هسته‌های پردازنده مورد استفاده توسط سندباکس مشخص‌شده با نام یا PID.

مثال:
$ firejail --0me=mygame --aps.drop=all /usr/bin/warzone2100 &
$ firejail --pu.print=mygame

مثال:
$ firejail --
3272:netblue::firejail --rivate
/usr/bin/firefox
$ firejail --pu.print=3272

مشخص کردن مسیر فایل لاگ DBus.

در صورتی که هر دو گزینه --dbus-system.log و --dbus-user.log مشخص شده باشند، فایل لاگ شامل رویدادهای مربوط به هر دو گذرگاه سیستم و نشست خواهد بود. اگر مسیری برای فایل لاگ داده نشود، لاگ‌ها به جای آن در خروجی استاندارد نوشته می‌شوند.

مثال:
$ firejail --bus-system=filter --bus-system.log \
--bus-log=dbus.txt

تنظیم خط‌مشی سندباکس DBus سیستمی.

خط‌مشی filter فیلتر DBus سیستمی را فعال می‌کند. این گزینه نیازمند نصب ابزار کمکی xdg-dbus-proxy است. مجوزهای نام‌های شناخته‌شده را می‌توان با گزینه‌های --dbus-system.talk و --dbus-system.own تعیین کرد.

خط‌مشی none دسترسی به DBus سیستم را غیرفعال می‌سازد.

تنها سوکت یونیکس معمولی DBus سیستم توسط این گزینه مدیریت می‌شود. برای غیرفعال کردن سوکت‌های انتزاعی (و اجبار برنامه‌ها به استفاده از سوکت فیلترشده یونیکس) باید با استفاده از دستور --0t یک فضای نام جدید شبکه درخواست کنید. گزینه دیگر حذف unix از مجموعه --rotocol
است.

مثال:
$ firejail --bus-system=none

به برنامه اجازه می‌دهد تا سیگنال‌های پخشی (broadcast) را از عضو رابط مشخص‌شده در مسیر شیء مشخص‌شده که توسط نام گذرگاهِ مشخص‌شده روی DBus سیستم عرضه شده است، دریافت کند. نام می‌تواند پسوند .* داشته باشد تا با تمامی نام‌های زیرمجموعه آن، شامل خودش، مطابقت یابد. عضو رابط می‌تواند دارای .* باشد تا با تمام اعضای یک رابط تطبیق یابد، یا * باشد تا با همه رابط‌ها مطابقت کند. مسیر می‌تواند پسوند /* داشته باشد تا کلیه اشیاء زیرمجموعه آن، شامل خودش را در بر گیرد. حذف عضو رابط یا مسیر شیء به ترتیب با کلیه اعضا و مسیرهای شیء مطابقت خواهد داشت.

مثال:
$ firejail --bus-system=filter --bus-system.broadcast=\
org.freedesktop.Notifications=\
org.freedesktop.Notifications.*@/org/freedesktop/Notifications

به برنامه اجازه می‌دهد تا عضو رابط مشخص‌شده را در مسیر شیء مشخص‌شده که توسط نام گذرگاه مشخص‌شده روی DBus سیستم عرضه شده است، فراخوانی کند. نام می‌تواند پسوند .* داشته باشد تا با تمام نام‌های زیرمجموعه آن، از جمله خودش، مطابقت یابد. عضو رابط می‌تواند دارای .* باشد تا با تمامی اعضای یک رابط مطابقت کند، یا * باشد تا با تمام رابط‌ها تطبیق یابد. مسیر می‌تواند پسوند /* داشته باشد تا کلیه اشیاء زیرمجموعه آن، شامل خودش را نشان دهد. حذف عضو رابط یا مسیر شیء به ترتیب با تمام اعضا و مسیرهای شیء مطابقت خواهد داشت.

مثال:
$ firejail --bus-system=filter --bus-system.call=\
org.freedesktop.Notifications=\
org.freedesktop.Notifications.*@/org/freedesktop/Notifications

روشن کردن لاگ‌گیری DBus برای DBus سیستم. این گزینه به --dbus-system=filter نیاز دارد.

مثال:
$ firejail --bus-system=filter --bus-system.log

به برنامه اجازه می‌دهد تا مالکیت نام شناخته‌شده مشخص‌شده را روی DBus سیستم در اختیار بگیرد. نام می‌تواند پسوند .* داشته باشد تا با کلیه نام‌های زیر آن، شامل خودش مطابقت کند (مثلاً "foo.bar.*" با "foo.bar"، "foo.bar.baz" و "foo.bar.baz.quux" تطبیق می‌یابد، اما نه با "foobar").

مثال:
$ firejail --bus-system=filter --bus-system.own=\
org.gnome.ghex.*

به برنامه امکان می‌دهد تا نام شناخته‌شده مشخص‌شده روی DBus سیستم را مشاهده کند، اما قادر به برقراری ارتباط با آن نباشد. نام می‌تواند پسوند .* داشته باشد تا با تمام نام‌های زیر آن، شامل خودش تطبیق یابد (مثلاً "foo.bar.*" با "foo.bar"، "foo.bar.baz" و "foo.bar.baz.quux" تطبیق می‌یابد، اما نه با "foobar").

مثال:
$ firejail --bus-system=filter --bus-system.see=\
org.freedesktop.Notifications

به برنامه اجازه می‌دهد با نام شناخته‌شده مشخص‌شده روی DBus سیستم ارتباط برقرار کند. نام می‌تواند پسوند .* داشته باشد تا با تمام نام‌های زیر آن، شامل خودش مطابقت داشته باشد (مثلاً "foo.bar.*" با "foo.bar"، "foo.bar.baz" و "foo.bar.baz.quux" مطابقت می‌کند، اما نه با "foobar").

مثال:
$ firejail --bus-system=filter --bus-system.talk=\
org.freedesktop.Notifications

تنظیم خط‌مشی سندباکس DBus نشست (session).

خط‌مشی filter فیلتر DBus نشست را فعال می‌کند. این گزینه نیازمند نصب ابزار کمکی xdg-dbus-proxy است. مجوزها برای نام‌های شناخته‌شده را می‌توان با گزینه‌های --dbus-user.talk و --dbus-user.own اضافه کرد.

خط‌مشی none دسترسی به DBus نشست را غیرفعال می‌سازد.

تنها سوکت یونیکس معمولی DBus نشست توسط این گزینه مدیریت می‌شود. برای غیرفعال کردن سوکت‌های انتزاعی (و اجبار برنامه‌ها به استفاده از سوکت یونیکس فیلترشده) باید با استفاده از دستور --0t یک فضای نام جدید شبکه درخواست کنید. گزینه دیگر حذف unix از مجموعه --rotocol
است.

مثال:
$ firejail --bus-user=none

به برنامه اجازه می‌دهد تا سیگنال‌های پخشی (broadcast) را از عضو رابطِ مشخص‌شده در مسیر شیءِ مشخص‌شده که توسط نام گذرگاهِ مشخص‌شده روی DBus نشست (session) ارائه شده است، دریافت کند. نام می‌تواند پسوند .* داشته باشد تا با تمام نام‌های زیرمجموعه آن، از جمله خودش، مطابقت یابد. عضو رابط می‌تواند دارای .* باشد تا با تمامی اعضای یک رابط تطبیق یابد، یا * باشد تا با تمام رابط‌ها مطابقت کند. مسیر می‌تواند پسوند /* داشته باشد تا کلیه اشیاء زیرمجموعه آن، شامل خودش را در بر گیرد. حذف عضو رابط یا مسیر شیء به ترتیب با کلیه اعضا و مسیرهای شیء مطابقت خواهد داشت.

مثال:
$ firejail --bus-user=filter --bus-user.broadcast=\
org.freedesktop.Notifications=\
org.freedesktop.Notifications.*@/org/freedesktop/Notifications

به برنامه اجازه می‌دهد تا عضو رابط مشخص‌شده را در مسیر شیء مشخص‌شده که توسط نام گذرگاه مشخص‌شده روی DBus نشست ارائه شده است، فراخوانی کند. نام می‌تواند پسوند .* داشته باشد تا با کلیه نام‌های زیر آن، شامل خودش، مطابقت کند. عضو رابط می‌تواند دارای .* باشد تا با تمامی اعضای یک رابط تطبیق یابد، یا * باشد تا با تمام رابط‌ها مطابقت کند. مسیر می‌تواند پسوند /* داشته باشد تا کلیه اشیاء زیر آن، شامل خودش را نشان دهد. حذف عضو رابط یا مسیر شیء به ترتیب با تمامی اعضا و مسیرهای شیء تطبیق خواهد یافت.

مثال:
$ firejail --bus-user=filter --bus-user.call=\
org.freedesktop.Notifications=\
org.freedesktop.Notifications.*@/org/freedesktop/Notifications

روشن کردن لاگ‌گیری DBus برای DBus نشست. این گزینه به --dbus-user=filter نیاز دارد.

مثال:
$ firejail --bus-user=filter --bus-user.log

به برنامه اجازه می‌دهد تا مالکیت نام شناخته‌شده مشخص را روی DBus نشست در اختیار گیرد. نام می‌تواند دارای پسوند .* باشد تا با تمامی نام‌های زیرمجموعه آن، شامل خودش، مطابقت یابد (مثلاً "foo.bar.*" با "foo.bar"، "foo.bar.baz" و "foo.bar.baz.quux" مطابقت دارد، اما با "foobar" تطبیق ندارد).

مثال:
$ firejail --bus-user=filter --bus-user.own=org.gnome.ghex.*

به برنامه اجازه می‌دهد تا نام شناخته‌شده مشخص را روی DBus نشست ببیند، اما نتواند با آن گفتگو کند. نام می‌تواند پسوند .* داشته باشد تا با تمامی نام‌های زیر آن، شامل خودش مطابقت داشته باشد (برای نمونه "foo.bar.*" با "foo.bar"، "foo.bar.baz" و "foo.bar.baz.quux" تطبیق دارد، اما نه با "foobar").

مثال:
$ firejail --bus-user=filter --bus-user.see=\
org.freedesktop.Notifications

به برنامه اجازه می‌دهد با نام شناخته‌شده مشخص روی DBus نشست گفتگو و ارتباط برقرار کند. نام می‌تواند دارای پسوند .* باشد تا با کلیه نام‌های زیر آن، از جمله خودش، مطابقت یابد (مثلاً "foo.bar.*" با "foo.bar"، "foo.bar.baz" و "foo.bar.baz.quux" تطبیق دارد، ولی نه با "foobar").

مثال:
$ firejail --bus-user=filter --bus-user.talk=\
org.freedesktop.Notifications

چاپ پیام‌های اشکال‌زدایی (دیباگ).

مثال:
$ firejail --ebug /usr/bin/firefox

اشکال‌زدایی فهرست‌های سیاه (blacklists).

مثال:
$ firejail --ebug-blacklists /usr/bin/firefox

چاپ تمامی قابلیت‌های شناسایی‌شده در بیلد جاری نرم‌افزار Firejail و خروج.

مثال:
$ firejail --ebug-caps

چاپ تمامی شماره‌های خطای شناخته‌شده در بیلد جاری نرم‌افزار Firejail و خروج.

مثال:
$ firejail --ebug-errnos

چاپ تمامی پروتکل‌های شناخته‌شده در بیلد جاری نرم‌افزار Firejail و خروج.

مثال:
$ firejail --ebug-protocols

چاپ تمامی گروه‌های فراخوان سیستمی و توضیحات آن‌ها، سپس خروج.

گروه‌های seccomp را با کاما جدا کنید تا فراخوان‌های سیستمی آن‌ها در بیلد جاری نرم‌افزار Firejail چاپ شده و برنامه خارج شود. گروه ویژه @all می‌تواند جهت چاپ تمام گروه‌های seccomp و فراخوان‌های سیستمی مربوطه به کار رود.

مثال:
$ firejail --ebug-syscall-groups
$ firejail --ebug-syscall-groups=@chown,@mount,@swap
$ firejail --ebug-syscall-groups=@all

چاپ تمامی فراخوان‌های سیستمی شناخته‌شده در بیلد جاری نرم‌افزار Firejail و خروج.

مثال:
$ firejail --ebug-syscalls

نکته: نگاشت فراخوان‌های سیستمی مستقیماً از فایل‌های .tbl مختص معماری در سورس‌های هسته لینوکس گرفته شده است، که به فایل‌های هدر در src/include تبدیل شده و درون firejail ساخته شده‌اند. تنها فراخوان‌های سیستمی برای معماری هدفِ ساخت و گونه‌های ۳۲ بیتی (در صورت کاربرد) در ساخت گنجانده شده‌اند، مانند x86_64 و x86 (به ترتیب). اگر شماره یا نام یک فراخوان سیستمی در فهرست نباشد، توسط firejail شناخته نمی‌شود. این امر ممکن است به دلیل عدم وجود فراخوان سیستمی در فایل .tbl (مانند فراخوان‌های سیستمی منسوخ)، اضافه نشدن آن به firejail تا این لحظه، یا بیش از حد قدیمی بودن بیلد فعلی firejail باشد.

فایل‌های نمونه .tbl برای x86_64 و x86 در لینوکس v6.19:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/entry/syscalls/syscall_64.tbl?h=v6.19
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/entry/syscalls/syscall_32.tbl?h=v6.19

چاپ تمامی فراخوان‌های سیستمی ۳۲ بیتی شناخته‌شده در بیلد جاری نرم‌افزار Firejail و خروج. این گزینه همانند --ebug-syscalls است، اما برای فراخوان‌های سیستمی ۳۲ بیتی کاربرد دارد.
اشکال‌زدایی فهرست‌های سفید (whitelists).

مثال:
$ firejail --ebug-whitelists /usr/bin/firefox

استفاده از این آدرس به عنوان درگاه پیش‌فرض (default gateway) در فضای نام جدید شبکه.

مثال:
$ firejail --0t=eth0 --efaultgw=10.10.20.1 /usr/bin/firefox

همیشه با وضعیت خروجِ نخستین فرزند، از firejail خارج شوید. رفتار پیش‌فرض استفاده از وضعیت خروج آخرین فرزندِ پایان‌یافته است که می‌تواند نامعین باشد.
همیشه پس از خاتمه یافتن نخستین فرزند، سندباکس را خاموش کنید. رفتار پیش‌فرض این است که سندباکس تا زمانی که حاوی فرآیندهای در حال اجرا باشد زنده نگه داشته شود.
قرار دادن دسترسی به مسیرهای /mnt، /media، /run/mount و /run/media در فهرست سیاه.

مثال:
$ firejail --isable-mnt /usr/bin/firefox

تنظیم یک سرور DNS برای سندباکس. تا سه سرور DNS قابل تعریف است. اگر به پیکربندی DNS در شبکه خود اطمینان ندارید از این گزینه بهره بگیرید.

مثال:
$ firejail --ns=8.8.8.8 --ns=8.8.4.4 /usr/bin/firefox

نکته: این ویژگی روی پیکربندی‌های مبتنی بر systemd-resolved پشتیبانی نمی‌شود.

چاپ پیکربندی DNS برای سندباکس مشخص‌شده با نام یا با PID.

مثال:
$ firejail --0me=mygame --aps.drop=all /usr/bin/warzone2100 &
$ firejail --ns.print=mygame

مثال:
$ firejail --
3272:netblue::firejail --rivate
/usr/bin/firefox
$ firejail --ns.print=3272

پایش پرس‌وجوهای DNS. سندباکس می‌تواند با نام یا pid تعیین شود. تنها سندباکس‌های شبکه‌ای ایجادشده با --0t پشتیبانی می‌شوند. این گزینه تنها هنگام اجرای سندباکس با دسترسی ریشه در دسترس است.

بدون مشخص کردن نام/pid، فایرجیل فضای نام شبکه اصلی سیستم را پایش خواهد کرد.

مثال:
$ sudo firejail --nstrace
11:31:43 9.9.9.9 linux.com (type 1)
11:31:45 9.9.9.9 fonts.googleapis.com (type 1) NXDOMAIN
11:31:45 9.9.9.9 js.hs-scripts.com (type 1) NXDOMAIN
11:31:45 9.9.9.9 www.linux.com (type 1)
11:31:45 9.9.9.9 fonts.googleapis.com (type 1) NXDOMAIN
11:31:52 9.9.9.9 js.hs-scripts.com (type 1) NXDOMAIN
11:32:05 9.9.9.9 secure.gravatar.com (type 1)
11:32:06 9.9.9.9 secure.gravatar.com (type 1)
11:32:08 9.9.9.9 taikai.network (type 1)
11:32:08 9.9.9.9 cdn.jsdelivr.net (type 1)
11:32:08 9.9.9.9 taikai.azureedge.net (type 1)
11:32:08 9.9.9.9 www.youtube.com (type 1)

تنظیم متغیر محیطی در سندباکس جدید.

مثال:
$ firejail --\nv=LD_LIBRARY_PATH=/opt/test/lib

--.print=name|pid
چاپ لاگ سیستم فایل برای سندباکس مشخص‌شده با نام یا با PID.

مثال:
$ firejail --0me=mygame --aps.drop=all /usr/bin/warzone2100 &
$ firejail --.print=mygame

مثال:
$ firejail --
3272:netblue::firejail --rivate
/usr/bin/firefox
$ firejail --.print=3272

دریافت یک فایل از ظرف سندباکس، برای جزئیات بیشتر بخش FILE TRANSFER را ببینید.
-?, --
چاپ گزینه‌ها و خروج.
--
تنظیم نام میزبان (hostname) سندباکس.
این گزینه با --mize ناسازگار است.
برای نام‌های معتبر، بخش NAME VALIDATION را ببینید.

مثال:
$ firejail --fficepc /usr/bin/firefox

--mize
تنظیم نام میزبان سندباکس به یک مقدار تصادفی تولیدشده توسط firejail.
این گزینه با --

مثال:
$ firejail --mize /usr/bin/firefox
نکته: تغییر نام میزبان ممکن است منجر به بروز اشکالات مرتبط با شبکه گردد (ببینید #7048) و همچنین ممکن است سبب خرابی برنامه‌های X11 در زمان راه‌اندازی به دلیل ناتوانی در احراز هویت با سرور X شود (ببینید #7062).

--
استفاده از file به عنوان /etc/hosts.

مثال:
$ firejail --sts /usr/bin/firefox

--icmptrace[=name|pid]
پایش ترافیک ICMP. سندباکس را می‌توان با نام یا pid مشخص کرد. تنها سندباکس‌های شبکه‌ای ایجادشده با --0t پشتیبانی می‌شوند. این گزینه تنها هنگام اجرای سندباکس با دسترسی ریشه در دسترس است.

بدون مشخص کردن نام/pid، فایرجیل فضای نام شبکه اصلی سیستم را پایش خواهد کرد.

مثال:
$ sudo firejail --icmptrace
20:53:54 192.168.1.60 -> 142.250.65.174 - 98 bytes - Echo request/0
20:53:54 142.250.65.174 -> 192.168.1.60 - 98 bytes - Echo reply/0
20:53:55 192.168.1.60 -> 142.250.65.174 - 98 bytes - Echo request/0
20:53:55 142.250.65.174 -> 192.168.1.60 - 98 bytes - Echo reply/0
20:53:55 192.168.1.60 -> 1.1.1.1 - 154 bytes - Destination unreachable/Port unreachable

--ignore=command
نادیده گرفتن دستور مشخص‌شده در فایل پروفایل.

مثال:
$ firejail --ignore=seccomp --ignore=caps /usr/bin/firefox
$ firejail --ignore="net eth0"; /usr/bin/firefox

--include=file.profile
افزودن یک فایل پروفایل پیش از استفاده از پروفایل‌های معمولی.

مثال:
$ firejail --include=/etc/firejail/disable-devel.inc /usr/bin/gedit

--interface=interface
انتقال رابط شبکه به یک فضای نام جدید شبکه. حداکثر تا چهار گزینه --interface قابل تعیین است. نکته: دستگاه‌های wlan برای این گزینه پشتیبانی نمی‌شوند.

مثال:
$ firejail --interface=eth1 --interface=eth0.vlan100

--ip=address
اختصاص نشانی IP به آخرین رابط شبکه تعریف‌شده توسط یک گزینه --0t. یک درگاه پیش‌فرض به صورت خودکار تعیین می‌شود.

مثال:
$ firejail --0t=eth0 --ip=10.10.20.56 /usr/bin/firefox

--ip=dhcp
دریافت آدرس IP و درگاه پیش‌فرض برای آخرین رابط تعریف‌شده با گزینه --0t، و همچنین تنظیم سرورهای DNS طبق پاسخ DHCP. این گزینه نیازمند نصب کلاینت ISC dhclient است و آن را درون سندباکس به طور خودکار اجرا می‌کند.

مثال:
$ firejail --0t=br0 --ip=dhcp

این گزینه در صورتی که سرور DHCP اقدام به پیکربندی سرورهای DNS برای کلاینت‌ها نماید، نباید همراه با گزینه --ns استفاده شود، زیرا سرورهای DNS مشخص‌شده به صورت دستی بازنویسی خواهند شد.

کلاینت DHCP با پایان یافتن سندباکس اجاره DHCP (lease) را آزاد نخواهد کرد. اگر سرور DHCP شما نیازمند آزادسازی صریح اجاره‌ها است، اجرای یک کلاینت DHCP و آزادسازی دستی اجاره در کنار گزینه --0t=none را مد نظر قرار دهید.

--ip=none
هیچ نشانی IP و درگاه پیش‌فرضی برای آخرین رابط تعریف‌شده توسط یک گزینه --0t پیکربندی نمی‌شود. در صورتی که قصد دارید یک کلاینت DHCP خارجی را درون سندباکس اجرا نمایید از این گزینه استفاده کنید.

مثال:
$ firejail --0t=eth0 --ip=none

اگر برای رابط متناظر هیچ نشانی IP پیکربندی نشده باشد، این گزینه به صورت پیش‌فرض فعال خواهد بود.

--ip6=address
اختصاص نشانی‌های IPv6 به آخرین رابط شبکه تعریف‌شده توسط یک گزینه --0t.

مثال:
$ firejail --0t=eth0 --ip6=2001:0db8:0:f101::1/64 /usr/bin/firefox

نکته: اگر نشانی ip6 خود را از روتر از طریق SLAAC دریافت می‌کنید به این گزینه نیازی ندارید (نشانی ip6 و مسیر پیش‌فرض شما به صورت خودکار توسط هسته پیکربندی می‌شود).

--ip6=dhcp
دریافت نشانی IPv6 و درگاه پیش‌فرض برای آخرین رابط تعریف‌شده توسط یک گزینه --0t، و همچنین تنظیم سرورهای DNS بر اساس پاسخ DHCP. این گزینه نیازمند نصب کلاینت DHCP یعنی ISC dhclient است و آن را به طور خودکار درون سندباکس اجرا می‌کند.

مثال:
$ firejail --0t=br0 --ip6=dhcp

این گزینه نباید هم‌زمان با گزینه --ns به کار رود اگر سرور DHCP برای پیکربندی سرورهای DNS روی کلاینت‌ها تنظیم شده باشد، زیرا سرورهای DNS دستی رونویسی خواهند شد.

کلاینت DHCP با پایان سندباکس اجاره DHCP را آزاد نخواهد کرد. اگر سرور DHCP شما نیازمند آزادسازی صریح اجاره‌هاست، اجرای کلاینت DHCP و آزادسازی دستی اجاره را مد نظر قرار دهید.

--iprange=address,address
اختصاص یک نشانی IP در محدوده ارائه‌شده به آخرین رابط شبکه تعریف‌شده با یک گزینه --0t. یک درگاه پیش‌فرض به صورت خودکار اختصاص می‌یابد.

مثال:
$ firejail --0t=eth0 --iprange=192.168.1.100,192.168.1.150

--ipc-namespace
فعال‌سازی یک فضای نام جدید IPC در صورتی که سندباکس به عنوان یک کاربر عادی اجرا شده باشد. فضای نام IPC به طور پیش‌فرض برای سندباکس‌هایی که با دسترسی ریشه اجرا می‌شوند فعال است.

نکته: این مورد تنها بر منابع IPC ذکرشده در ipc_namespaces(7) اثر می‌گذارد. بر سایر منابع IPC مانند سوکت‌های یونیکس (ببینید unix(7)) اثری ندارد.

مثال:
$ firejail --ipc-namespace /usr/bin/firefox

--join=name|pid
پیوستن به سندباکس مشخص‌شده با نام یا PID. به طور پیش‌فرض پس از پیوستن به سندباکس یک شل /bin/bash اجرا می‌شود. اگر برنامه‌ای مشخص شود، آن برنامه درون سندباکس اجرا خواهد شد. اگر دستور --join به عنوان یک کاربر عادی صادر شود، تمامی فیلترهای امنیتی برای فرآیند جدید به همان شکلی که در سندباکس تنظیم شده‌اند پیکربندی می‌شوند. اگر دستور --join با دسترسی ریشه صادر شود، فیلترهای امنیتی و پیکربندی‌های پردازنده‌ها (cpus) روی فرآیند ملحق‌شده به سندباکس اعمال نخواهند شد.

مثال:
$ firejail --0me=mygame --aps.drop=all /usr/bin/warzone2100 &
$ firejail --join=mygame

مثال:
$ firejail --
3272:netblue::firejail --rivate
/usr/bin/firefox
$ firejail --join=3272

--join-filesystem=name|pid
پیوستن به فضای نام سوارکردن (mount namespace) مربوط به سندباکس مشخص‌شده با نام یا PID. به طور پیش‌فرض پس از پیوستن به سندباکس، یک شل /bin/bash اجرا می‌شود. اگر برنامه‌ای مشخص شود، آن برنامه در سندباکس اجرا خواهد شد. این دستور تنها برای کاربر ریشه (root) در دسترس است. فیلترهای امنیتی و پیکربندی‌های پردازنده‌ها (cpus) روی فرآیند ملحق‌شده به سندباکس اعمال نمی‌شوند.
--join-network=name|pid
پیوستن به فضای نام شبکه مربوط به سندباکس مشخص‌شده با نام. به طور پیش‌فرض پس از پیوستن به سندباکس یک شل /bin/bash اجرا می‌گردد. اگر برنامه‌ای مشخص شود، آن برنامه درون سندباکس اجرا خواهد شد. این دستور فقط برای کاربر ریشه در دسترس است. فیلترهای امنیتی و پیکربندی‌های cpus بر روی فرآیند ملحق‌شده به سندباکس اعمال نخواهند شد. مثال:

# شروع firefox
$ firejail --0t=eth0 --0me=browser /usr/bin/firefox &

# تغییر پیکربندی netfilter
$ sudo firejail --join-network=browser bash -c "cat /etc/firejail/nolocal.net | /sbin/iptables-restore"

# اعتبارسنجی پیکربندی netfilter
$ sudo firejail --join-network=browser /sbin/iptables -vL

# بررسی نشانی‌های IP
$ sudo firejail --join-network=browser ip addr
Switching to pid 1932, the first child process inside the sandbox
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0-1931: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
link/ether 76:58:14:42:78:e4 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.158/24 brd 192.168.1.255 scope global eth0-1931
valid_lft forever preferred_lft forever
inet6 fe80::7458:14ff:fe42:78e4/64 scope link
valid_lft forever preferred_lft forever

--join-or-start=name
پیوستن به سندباکس مشخص‌شده با نام یا آغاز یک سندباکس جدید. اگر سندباکسی با نام مشخص‌شده از قبل موجود باشد مشابه "firejail --join=name" عمل می‌کند، و در غیر این صورت همانند "firejail --name=name ..." خواهد بود. برای جزئیات بیشتر به --0me مراجعه کنید.
توجه داشته باشید که بر خلاف دیگر گزینه‌های join، برای این گزینه یک معادل در فایل پروفایل وجود دارد.
غیرفعال کردن مقداردهی خودکار ~/.config/pulse برای راه‌اندازی‌های پیچیده مانند سرورهای راه دور pulse یا مسیرهای سوکت غیرمعمول.

مثال:
$ firejail --ep-config-pulse /usr/bin/firefox

اجازه دسترسی به دستگاه کاراکتری /dev/ntsync (حتی همراه با --rivate-dev)
که به صورت پیش‌فرض مسدود است. این دستگاه عمدتاً جهت بهبود کارایی و سازگاری هنگام اجرای برخی برنامه‌ها از طریق Wine به کار می‌رود.

مثال:
$ firejail --ep-dev-ntsync --rivate-dev

دایرکتوری /dev/shm دست‌نخورده باقی می‌ماند (حتی در حضور --rivate-dev).

مثال:
$ firejail --ep-dev-shm --rivate-dev

اجازه دسترسی به دستگاه‌های ماژول رمزنگاری مورد اعتماد (TCM) و ماژول بستر معتمد (TPM) (حتی همراه با --rivate-dev)
که به‌طور پیش‌فرض مسدود هستند.

مسیرها:
/dev/tcm[0-9]*
/dev/tcmrm[0-9]*
/dev/tpm[0-9]*
/dev/tpmrm[0-9]*

مثال:
$ firejail --ep-dev-tpm --rivate-dev

انتقال و به ارث رسیدن تمام توصیف‌کننده‌های فایلِ باز به درون سندباکس. به‌طور پیش‌فرض فقط توصیف‌کننده‌های فایل ۰، ۱ و ۲ به سندباکس به ارث می‌رسند و سایر توصیف‌کننده‌ها بسته می‌شوند.

مثال:
$ firejail --ep-fd=all

عدم بستن توصیف‌کننده‌های فایل باز مشخص‌شده. به‌طور پیش‌فرض تنها توصیف‌کننده‌های فایل ۰، ۱ و ۲ به سندباکس به ارث می‌رسند و بقیه بسته خواهند شد.

مثال:
$ firejail --ep-fd=3,4,5

به‌طور پیش‌فرض، هنگام استفاده از دایرکتوری خانگی خصوصی، firejail فایل‌ها را از الگوی کاربر سیستم (/etc/skel) درون آن کپی می‌کند که این امر تلاش‌ها برای افزودن فایل‌های اصلی (مانند ~/.bashrc و ~/.zshrc) به فهرست سفید را بی‌اثر می‌سازد. این گزینه این قابلیت را غیرفعال کرده و به کاربر امکان می‌دهد تا فایل‌های اصلی را در فهرست سفید قرار دهد.
دایرکتوری /var/tmp دست‌نخورده باقی می‌ماند.

مثال:
$ firejail --ep-var-tmp

--
اجرای اجباری مجموعه قوانین Landlock. بدون این گزینه، سایر دستورات Landlock اثری نخواهند داشت. برای اطلاعات بیشتر بخش LANDLOCK را در ادامه ببینید.
--d=path (آزمایشی)
ایجاد یک مجموعه قوانین Landlock (اگر قبلاً وجود نداشته باشد) و افزودن یک قانون دسترسی خواندن برای path.
--th (آزمایشی)
ایجاد یک مجموعه قوانین Landlock (در صورت عدم وجود) و افزودن قانون دسترسی نوشتن برای path.
--keipc=path (آزمایشی)
ایجاد یک مجموعه قوانین Landlock (اگر از قبل موجود نباشد) و افزودن قانونی که ساخت لوله‌های نام‌گذاری‌شده (FIFOs) و سوکت‌های دامنه یونیکس را در زیر مسیر ارائه‌شده مجاز می‌سازد.
--kedev=path (آزمایشی)
ایجاد یک مجموعه قوانین Landlock (اگر وجود نداشته باشد) و افزودن قانونی که ایجاد دستگاه‌های بلوکی و کاراکتری را در زیر مسیر مشخص‌شده مجاز می‌کند.
--th (آزمایشی)
ایجاد یک مجموعه قوانین Landlock (در صورت عدم وجود) و افزودن قانون مجوز اجرا برای path.

مثال:
$ firejail --d=/ -- --

--
فهرست کردن تمامی سندباکس‌ها، برای جزئیات بیشتر بخش MONITORING را ببینید.

مثال:
$ firejail --
7015:netblue:browser:firejail /usr/bin/firefox
7056:netblue:torrent:firejail --0t=eth0 /usr/bin/transmission-gtk
7064:netblue::firejail --0root /usr/bin/xterm

--
فهرست کردن فایل‌ها درون ظرف سندباکس، برای جزئیات بیشتر بخش FILE TRANSFER را ببینید.
اختصاص نشانی‌های MAC به آخرین رابط شبکه تعریف‌شده توسط یک گزینه --0t. این گزینه برای رابط‌های بی‌سیم پشتیبانی نمی‌شود.

مثال:
$ firejail --0t=eth0 --c=00:11:22:33:44:55 /usr/bin/firefox

جعل شناسه موجود در فایل /etc/machine-id - یک شناسه تصادفی جدید درون سندباکس تولید می‌شود. توجه داشته باشید که این گزینه پشتیبانی از صدا را از کار می‌اندازد. زمانی آن را فعال کنید که نیازی به صدا نیست.

مثال:
$ firejail --chine-id

نصب یک فیلتر seccomp برای مسدودسازی تلاش‌ها جهت ایجاد نگاشت‌های حافظه‌ای که هم‌زمان قابل نوشتن و قابل اجرا هستند، یا تغییر نگاشت‌ها به حالت قابل اجرا، یا ایجاد حافظه مشترکِ قابل اجرا. این فیلتر آرگومان‌های فراخوان‌های سیستمی mmap، mmap2، mprotect، pkey_mprotect، memfd_create و shmat را بررسی کرده و در صورت لزوم خطای EPERM را به فرآیند بازمی‌گرداند (یا آن را خاتمه داده یا اقدام را لاگ می‌کند؛ گزینه --ccomp-error-action را در ادامه ببینید).

نکته: فراخوان سیستمی shmat روی برخی بسترها از جمله i386 پیاده‌سازی نشده است و توسط seccomp-bpf قابل مدیریت نیست.

ایجاد یک دایرکتوری در خانه کاربر. دایرکتوری‌های والد در صورت نیاز ایجاد می‌شوند.

مثال:
$ firejail --dir=~/work/project

ایجاد یک فایل خالی در خانه کاربر.

مثال:
$ firejail --file=~/work/project/readme

اختصاص مقدار MTU به آخرین رابط شبکه تعریف‌شده توسط یک گزینه --0t.

مثال:
$ firejail --0t=eth0 --u=1492

--0me=name
تعیین نام سندباکس. چندین گزینه مانند --join و --utdown می‌توانند از این نام برای شناسایی یک سندباکس استفاده کنند. نام نمی‌تواند تنها حاوی ارقام باشد، زیرا در سایر گزینه‌ها مانند --join به عنوان یک PID تلقی می‌شود.
برای نام‌های معتبر، بخش NAME VALIDATION را ببینید.

در صورتی که نام ارائه‌شده توسط کاربر پیش‌تر توسط سندباکس دیگری در حال استفاده باشد، Firejail نام جدیدی را به شکل "name-PID" اختصاص می‌دهد که در آن PID شناسه فرآیند سندباکس است. این ویژگی می‌تواند در زمان اجرا در فایل /etc/firejail/firejail.config با قرار دادن فلگ "name-change" روی "no" غیرفعال شود.

مثال:
$ firejail --0me=browser /usr/bin/firefox &
$ firejail --0me=browser --rivate
\ /usr/bin/firefox --0-remote &
$ firejail --
1198:netblue:browser:firejail --name=browser /usr/bin/firefox
1312:netblue:browser-1312:firejail --name=browser --private /usr/bin/firefox --no-remote

--0t=bridge_interface
فعال‌سازی یک فضای نام جدید شبکه و اتصال آن به این رابط پل (bridge). مگر در مواردی که با گزینه‌های --ip و --efaultgw مشخص شده باشد، یک آدرس IP و یک درگاه پیش‌فرض به طور خودکار به سندباکس اختصاص می‌یابد. آدرس IP پیش از تخصیص با استفاده از ARP اعتبارسنجی می‌شود. آدرسی که به عنوان درگاه پیش‌فرض پیکربندی می‌شود آدرس IP دستگاه پل است. حداکثر تا چهار گزینه --0t قابل تعیین است.

مثال:
$ sudo brctl addbr br0
$ sudo ifconfig br0 10.10.20.1/24
$ sudo brctl addbr br1
$ sudo ifconfig br1 10.10.30.1/24
$ firejail --0t=br0 --0t=br1

--0t=ethernet_interface|wireless_interface
فعال‌سازی یک فضای نام جدید شبکه و اتصال آن به این رابط اترنت با استفاده از درایور استاندارد macvlan|ipvlan لینوکس. مگر اینکه با گزینه‌های --ip و --efaultgw تعیین شده باشد، یک آدرس IP و درگاه پیش‌فرض به صورت خودکار به سندباکس اختصاص می‌یابد. آدرس IP پیش از تخصیص توسط ARP بررسی می‌شود. آدرس پیکربندی‌شده به عنوان درگاه پیش‌فرض، درگاه پیش‌فرض میزبان خواهد بود. تا چهار گزینه --0t قابل تعیین است. پشتیبانی از درایور ipvlan در هسته نسخه 3.19 لینوکس معرفی شده است.

مثال:
$ firejail --0t=eth0 --ip=192.168.1.80 --ns=8.8.8.8 /usr/bin/firefox
$ firejail --0t=wlan0 /usr/bin/firefox

--0t=none
فعال‌سازی یک فضای نام جدید و غیرمتصل شبکه. تنها رابط موجود در فضای نام جدید، یک رابط لوپ‌بک (lo) جدید است. از این گزینه برای سلب دسترسی شبکه از برنامه‌هایی که واقعاً به شبکه نیازی ندارند استفاده نمایید.

مثال:
$ firejail --0t=none /usr/bin/vlc

نکته: گزینه --0t=none ممکن است روی برخی پلتفرم‌ها موجب کرش کردن برنامه شود. در این موارد می‌توان آن را با --rotocol=unix
جایگزین نمود.

--0t=tap_interface
فعال‌سازی فضای نام جدید شبکه و اتصال آن به این رابط اترنت tap با استفاده از درایور استاندارد macvlan لینوکس. اگر رابط tap پیکربندی نشده باشد، سندباکس تلاشی برای پیکربندی رابط درون سندباکس نخواهد کرد. لطفاً از --ip، --0tmask و --efaultgw برای مشخص کردن پیکربندی استفاده فرمایید.

مثال:
$ firejail --0t=tap0 --ip=10.10.20.80 --0tmask=255.255.255.0 --efaultgw=10.10.20.1 /usr/bin/firefox

--0t.print=name|pid
در صورت فعال بودن یک فضای نام جدید شبکه، پیکربندی رابط شبکه را برای سندباکس مشخص‌شده با نام یا PID چاپ می‌کند. مثال:

$ firejail --0t.print=browser
Switching to pid 1853, the first child process inside the sandbox
Interface MAC IP Mask Status
lo 127.0.0.1 255.0.0.0 UP
eth0-1852 5e:fb:8e:27:29:26 192.168.1.186 255.255.255.0 UP

--0tfilter
فعال‌سازی فایروال پیش‌فرض در صورت ایجاد فضای نام جدید شبکه درون سندباکس. این گزینه برای سندباکس‌هایی که از فضای نام شبکه سیستم استفاده می‌کنند بی اثر است.

فایروال پیش‌فرض برای برنامه‌های رومیزی متداول بهینه‌سازی شده است. هیچ اتصال ورودی پذیرفته نمی‌شود:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --ate RELATED,ESTABLISHED -j ACCEPT
# allow ping
-A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
-A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# drop STUN (WebRTC) requests
-A OUTPUT -p udp --port 3478 -j DROP
-A OUTPUT -p udp --port 3479 -j DROP
-A OUTPUT -p tcp --port 3478 -j DROP
-A OUTPUT -p tcp --port 3479 -j DROP
COMMIT

مثال:
$ firejail --0t=eth0 --0tfilter /usr/bin/firefox

--0tfilter=filename
فعال‌سازی فایروال مشخص‌شده توسط filename در صورت ایجاد فضای نام جدید شبکه درون سندباکس. این گزینه روی سندباکس‌هایی که از فضای نام شبکه سیستم استفاده می‌کنند تاثیری ندارد.

لطفاً از فرمت استاندارد iptables-save/iptables-restore برای فایل فیلتر استفاده کنید. مثال‌های زیر در دایرکتوری /etc/firejail در دسترس هستند:

webserver.net یک فایروال سرور وب است که تنها به درگاه‌های TCP شماره ۸۰ و ۴۴۳ اجازه دسترسی می‌دهد. مثال:

$ firejail --0tfilter=/etc/firejail/webserver.net --0t=eth0 \
/etc/init.d/apache2 start

nolocal.net/nolocal6.net یک فایروال کلاینت دسکتاپ است که دسترسی به شبکه محلی را غیرفعال می‌سازد. مثال:

$ firejail --0tfilter=/etc/firejail/nolocal.net \
--0t=eth0 /usr/bin/firefox

--0tfilter=filename,arg1,arg2,arg3 ...
این نسخه قالبی (template) از دستور قبلی است. متغیرهای $ARG1, $ARG2, $ARG3 ... در اسکریپت فایروال با مقادیر arg1, arg2, arg3 ... ارسال‌شده در خط فرمان جایگزین می‌شوند. حداکثر تا ۱۶ آرگومان پشتیبانی می‌شود. مثال:

$ firejail --0t=eth0 --ip=192.168.1.105 \
--0tfilter=/etc/firejail/tcpserver.net,5001 server-program

--0tfilter.print=name|pid
چاپ فایروال نصب‌شده در سندباکس مشخص‌شده با نام یا PID. مثال:

$ firejail --0me=browser --0t=eth0 --0tfilter /usr/bin/firefox &
$ firejail --0tfilter.print=browser

--0tfilter6=filename
فعال‌سازی فایروال IPv6 مشخص‌شده توسط filename در صورت ایجاد فضای نام جدید شبکه درون سندباکس. این گزینه برای سندباکس‌هایی که از فضای نام شبکه سیستم استفاده می‌کنند اثری ندارد. لطفاً از فرمت استاندارد iptables-save/iptables-restore برای فایل فیلتر استفاده فرمایید.
--0tfilter6.print=name|pid
چاپ فایروال IPv6 نصب‌شده در سندباکس مشخص‌شده با نام یا PID. مثال:

$ firejail --0me=browser --0t=eth0 --0tfilter /usr/bin/firefox &
$ firejail --0tfilter6.print=browser

--0tlock
بسیاری از انواع برنامه‌ها (کلاینت‌های ایمیل، بازی‌های چندنفره و...) با تعداد بسیار اندکی از آدرس‌های IP ارتباط برقرار می‌کنند. اما بهترین نمونه مرورگر tor است. این مرورگر تنها با یک گره نگهبان (guard node) گفتگو می‌کند، و دو یا سه گره آماده‌باش دیگر نیز برای مواقع خرابی گره اصلی در نظر دارد. در حین راه‌اندازی، مرورگر با تمامی آن‌ها ارتباط برقرار می‌کند، و پس از آن به ارتباط خود با گره اصلی ادامه می‌دهد... برای چندین هفته!

از قابلیت قفل شبکه (netlock) برای ایجاد و استقرار یک فایروال شبکه سفارشی در سندباکس خود بهره ببرید. این فایروال تنها ترافیک به سمت نشانی‌های IP شناسایی‌شده در حین راه‌اندازی برنامه را مجاز می‌داند. ترافیک به سوی هر نشانی دیگری بی‌صدا دور انداخته می‌شود (drop). به طور پیش‌فرض زمان پایش شبکه یک دقیقه است.

وجود یک فضای نام شبکه (--0t=eth0) برای کارکرد این قابلیت ضروری است. مثال:

$ firejail --0t=eth0 --0tlock \
--rivate=~/tor-browser_en-US
./start-tor-browser.desktop

--0tmask=address
از این گزینه زمانی استفاده کنید که می‌خواهید یک آدرس IP در یک فضای نام جدید اختصاص دهید و رابط والد مشخص‌شده توسط --net پیکربندی نشده باشد. یک آدرس IP و یک آدرس درگاه پیش‌فرض نیز باید اضافه شوند. به طور پیش‌فرض رابط فضای نام جدید بدون آدرس IP و درگاه پیش‌فرض پیکربندی‌شده عرضه می‌شود. مثال:

$ sudo /sbin/brctl addbr br0
$ sudo /sbin/ifconfig br0 up
$ firejail --ip=10.10.20.67 --0tmask=255.255.255.0 --efaultgw=10.10.20.1

--0tns=name
اجرای برنامه در یک فضای نام شبکه نام‌گذاری‌شده و پایدار. این فضاها می‌توانند با استفاده از "ip netns" ایجاد و پیکربندی شوند.
--0tstats
پایش آمارهای فضای نام شبکه، برای جزئیات بیشتر بخش MONITORING را ببینید.

مثال:

$ firejail --0tstats
PID User RX(KB/s) TX(KB/s) Command
1294 netblue 53.355 1.473 firejail --0t=eth0 /usr/bin/firefox
7383 netblue 9.045 0.112 firejail --0t=eth0 /usr/bin/transmission

--0ttrace[=name|pid]
پایش ترافیک‌های دریافتی TCP، UDP و ICMP. سندباکس را می‌توان با نام یا pid تعیین نمود. تنها سندباکس‌های شبکه‌ای ایجادشده با --0t پشتیبانی می‌شوند. این گزینه فقط هنگام اجرای سندباکس با دسترسی ریشه در دسترس است.

بدون مشخص کردن نام/pid، ابزار Firejail فضای نام شبکه اصلی سیستم را پایش خواهد کرد.

مثال:
$ sudo firejail --0ttrace
93 KB/s address:port (protocol) network
14 B/s ** 104.24.8.4:443(QUIC) Cloudflare
80 KB/s ***************** 192.187.97.90:443(TLS) BitChute
1 B/s 149.56.228.45:443(DoH) Canada
(D)isplay, (S)ave, (C)lear, e(X)it

در صورتی که /usr/bin/geoiplookup نصب باشد (بسته geoip-bin در دبیان)، کشوری که ترافیک از آن سرچشمه می‌گیرد به ردگیری اضافه می‌شود. ما همچنین از نگاشت IP ایستا در مسیر /usr/lib/firejail/static-ip-map جهت چاپ نام دامنه‌های برخی از وب‌سایت‌ها و بسترهای ابری رایج‌تر بهره می‌گیریم. هیچ سرویس خارجی برای جستجوی معکوس IP فراخوانی نمی‌شود.

--0ce=value
تنظیم مقدار nice برای تمامی فرآیندهای در حال اجرا در داخل سندباکس. تنها کاربر ریشه می‌تواند یک مقدار منفی تعیین کند.

مثال:
$ firejail --0ce=2 /usr/bin/firefox

--03d
غیرفعال ساختن شتاب‌دهنده سخت‌افزاری سه‌بعدی (3D).

مثال:
$ firejail --03d /usr/bin/firefox

--0autopulse (منسوخ‌شده)
به --ep-config-pulse مراجعه فرمایید.
--0blacklist=dirname_or_filename
غیرفعال‌سازی فهرست سیاه برای این دایرکتوری یا فایل.

توجه داشته باشید که ورودی‌های فهرست سیاه حاوی ${PATH} در حال حاضر نمی‌توانند به صورت جزئی برای مسیرهای بسط‌یافته مجزا غیرفعال شوند. فقط کل مسیر بسط‌نیافته شامل ${PATH} می‌تواند غیرفعال گردد که سپس بر تمامی بسط‌ها اعمال می‌شود. این محدودیت برای بسط‌های متغیرهای دیگر یا کاراکترهای عمومی صدق نمی‌کند. برای جزئیات، ببینید: #6360.

مثال:
$ firejail
$ nc dict.org 2628
bash: /bin/nc: Permission denied
$ exit

$ firejail --0blacklist=/bin/nc
bash: /bin/nc: Permission denied
$ exit

$ firejail --0blacklist='${PATH}/nc'
$ nc dict.org 2628
220 pan.alephnull.com dictd 1.12.1/rf on Linux 3.14-1-amd64

--0dbus (منسوخ‌شده)
غیرفعال کردن دسترسی به D-Bus (هر دو گذرگاه سیستم و نشست). معادل با --dbus-system=none --dbus-user=none.

مثال:
$ firejail --0dbus --0t=none

--0dvd
غیرفعال ساختن دستگاه‌های DVD و CD صوتی.

مثال:
$ firejail --0dvd

--0exec=dirname_or_filename
سوار کردن مجدد دایرکتوری یا فایل با گزینه‌های noexec، nodev و nosuid. تطبیق الگوی فایلی پشتیبانی می‌شود، برای جزئیات بیشتر بخش FILE GLOBBING را ببینید.

مثال:
$ firejail --0exec=/tmp

در صورتی که سندباکس به عنوان یک کاربر عادی اجرا شده باشد، دایرکتوری‌های /etc و /var به طور پیش‌فرض noexec هستند.

--0groups
غیرفعال کردن گروه‌های تکمیلی (supplementary groups). بدون این گزینه، گروه‌های تکمیلی برای کاربری که سندباکس را راه‌اندازی می‌کند فعال هستند. برای کاربر ریشه گروه‌های تکمیلی همواره غیرفعال هستند.

نکته: به‌طور پیش‌فرض تمامی گروه‌های کاربر عادی به استثنای کاربر جاری حذف می‌شوند. این مورد با استفاده از گزینه --llusers قابل تغییر است.

مثال:
$ id
uid=1000(netblue) gid=1000(netblue) groups=1000(netblue),24(cdrom),25(floppy),27(sudo),29(audio)
$ firejail --0groups
Parent pid 8704, child pid 8705
Child process initialized
$ id
uid=1000(netblue) gid=1000(netblue) groups=1000(netblue)
$

--0input
غیرفعال ساختن دستگاه‌های ورودی.

مثال:
$ firejail --0input

--0newprivs
تنظیم فلگ NO_NEW_PRIVS در prctl. این ویژگی تضمین می‌کند که فرآیندهای فرزند نتوانند با استفاده از execve(2) امتیازات جدیدی کسب نمایند؛ به ویژه، این بدان معناست که فراخوانی یک باینری suid (یا برنامه‌ای با قابلیت‌های فایلی) منجر به افزایش سطح دسترسی نخواهد شد. این گزینه در صورت فعال بودن فیلتر seccomp به صورت پیش‌فرض فعال است.
--0printers
غیرفعال ساختن چاپگرها.
--0profile
عدم استفاده از پروفایل امنیتی.

مثال:
$ firejail
Reading profile /etc/firejail/default.profile
Parent pid 8553, child pid 8554
Child process initialized
[...]

$ firejail --0profile
Parent pid 8553, child pid 8554
Child process initialized
[...]

--0root
نصب یک فضای نام کاربر با یک کاربر منفرد - کاربر جاری. کاربر ریشه در فضای نام جدید وجود ندارد. این گزینه به نگارش 3.8 هسته لینوکس یا بالاتر نیاز دارد. این گزینه برای پیکربندی‌های --hroot و --ppimage، یا برای سندباکس‌هایی که به عنوان ریشه اجرا می‌شوند پشتیبانی نمی‌گردد.

مثال:
$ firejail --0root
Parent pid 8553, child pid 8554
Child process initialized
$ ping google.com
ping: icmp open socket: Operation not permitted
$

--0sound
غیرفعال کردن سامانه صوتی.

مثال:
$ firejail --0sound /usr/bin/firefox

--0tpm (منسوخ‌شده)
برای سازگاری نادیده گرفته می‌شود.
دستگاه‌های TPM در حال حاضر به صورت پیش‌فرض مسدود هستند، --ep-dev-tpm را ببینید.
--0tv
غیرفعال ساختن دستگاه‌های تلویزیون DVB (پخش ویدیوی دیجیتال).

مثال:
$ firejail --0tv /usr/bin/vlc

--0u2f
غیرفعال ساختن دستگاه‌های U2F.

مثال:
$ firejail --0u2f

--0video
غیرفعال ساختن دستگاه‌های ویدیویی (دوربین و وبکم).
--0whitelist=dirname_or_filename
غیرفعال کردن فهرست سفید برای این دایرکتوری یا فایل.
--
پیکربندی امتیاز قاتل کمبود حافظه هسته (OutOfMemory-killer) برای این سندباکس. مقادیر امتیاز مجاز بین 0 تا 1000 برای کاربران عادی، و -1000 تا 1000 برای کاربر ریشه است. برای اطلاعات بیشتر در خصوص ویژگی OOM هسته به man choom رجوع فرمایید.

مثال:
$ firejail --fx

--pt=logfile
لاگ‌گیری خروجی استاندارد (stdout) و چرخش لاگ‌ها. رونوشت خروجی استاندارد در logfile قرار می‌گیرد و با استفاده از چرخش لاگ حجم فایل زیر ۵۰۰ کیلوبایت نگه داشته می‌شود. پنج فایل با پسوندهای .1 تا .5 در این چرخش به کار می‌روند.

مثال:
$ firejail --pt=sandboxlog /bin/bash
[...]
$ ls -l sandboxlog*
-rw-r--r-- 1 netblue netblue 333890 Jun 2 07:48 sandboxlog
-rw-r--r-- 1 netblue netblue 511488 Jun 2 07:48 sandboxlog.1
-rw-r--r-- 1 netblue netblue 511488 Jun 2 07:48 sandboxlog.2
-rw-r--r-- 1 netblue netblue 511488 Jun 2 07:48 sandboxlog.3
-rw-r--r-- 1 netblue netblue 511488 Jun 2 07:48 sandboxlog.4
-rw-r--r-- 1 netblue netblue 511488 Jun 2 07:48 sandboxlog.5

--pt-stderr=logfile
مشابه --pt، ولی خطای استاندارد (stderr) نیز ذخیره می‌گردد.
--rivate
سوار کردن دایرکتوری‌های جدید /root و /home/user در سیستم‌های فایل موقت. تمامی تغییرات پس از بسته شدن سندباکس دور ریخته می‌شوند.

مثال:
$ firejail --rivate
/usr/bin/firefox

--rivate=directory
استفاده از directory به عنوان دایرکتوری خانگی کاربر. گزینه‌های --rivate
و --rivate=directory
هم‌زمان قابل استفاده نیستند.

مثال:
$ firejail --rivate=/home/netblue/firefox-home
/usr/bin/firefox

نقص فنی: حتی در صورت فعال بودن این گزینه، برخی دستورات firejail (مانند mkdir، mkfile و private-cache) همچنان بر روی دایرکتوری خانگی اصلی عمل خواهند کرد. راه‌حل: دستورات ناسازگار را با استفاده از "ignore mkdir" و "ignore mkfile" غیرفعال نمایید. برای جزئیات، ببینید: #903.

--rivate-bin=file,file
ساخت یک /bin جدید در یک سیستم فایل موقت، و کپی کردن برنامه‌های فهرست‌شده در آن. فایل‌های موجود در فهرست باید به صورت نسبی نسبت به دایرکتوری‌های /bin، /sbin، /usr/bin، /usr/sbin یا /usr/local/bin بیان شوند. اگر هیچ فایلی از فهرست یافت نشود، دایرکتوری /bin خالی خواهد ماند. همین دایرکتوری بر روی /sbin، /usr/bin، /usr/sbin و /usr/local/bin نیز bind-mount می‌شود. تمامی تغییرات با بسته شدن سندباکس دور ریخته می‌شوند. چندین دستور private-bin مجاز است و اثر آن‌ها متراکم می‌شود. تطبیق الگوی فایلی پشتیبانی می‌شود، برای جزئیات بیشتر بخش FILE GLOBBING را ببینید.

مثال:
$ firejail --rivate-bin=bash,cat,ls,sed

Parent pid 20841, child pid 20842
Child process initialized
$ ls /bin
bash cat ls sed

--rivate-cache
سوار کردن یک سیستم فایل موقت خالی بر روی دایرکتوری .cache در خانه کاربر. تمامی تغییرات با بسته شدن سندباکس دور ریخته می‌شوند.

مثال:
$ firejail --rivate-cache
/usr/bin/openbox

--rivate-cwd
تنظیم دایرکتوری کاری درون سندباکس به دایرکتوری خانگی، و در صورت شکست به دایرکتوری ریشه. بر دایرکتوری کاری مسیرهای include در فایل پروفایل تاثیری نمی‌گذارد.

مثال:
$ pwd
/tmp
$ firejail --rivate-cwd

$ pwd
/home/user

--rivate-cwd=directory
تنظیم دایرکتوری کاری درون سندباکس. مسیر کامل دایرکتوری الزامی است. پیوندهای نمادین مجاز نیستند. بر دایرکتوری کاری مسیرهای include در فایل پروفایل اثری ندارد.

مثال:
$ pwd
/tmp
$ firejail --rivate-cwd=/opt

$ pwd
/opt

--rivate-dev
ایجاد یک دایرکتوری جدید /dev. تنها دستگاه‌های disc، dri، dvb، full، hidraw، log، null، ptmx، pts، random، shm، snd، tty، urandom، usb، video و zero در دسترس خواهند بود. از گزینه‌های --03d، --0dvd، --0sound، --0tv، --0u2f و --0video برای محدودیت‌های تکمیلی استفاده فرمایید.

مثال:
$ firejail --rivate-dev

Parent pid 9887, child pid 9888
Child process initialized
$ ls /dev
cdrom cdrw dri dvd dvdrw full log null ptmx pts random shm snd sr0 tty urandom zero
$

--rivate-etc,
--rivate-etc=@group,file,directory
فایل‌های نصب‌شده توسط --rivate-etc
رونوشت‌هایی از فایل‌های اصلی سیستم از دایرکتوری /etc هستند. به‌طور پیش‌فرض، این دستور اسکلتی از فایل‌ها و دایرکتوری‌های مورد استفاده اکثر ابزارهای کنسول را به همراه می‌آورد:

$ firejail --rivate-etc
/usr/bin/dig debian.org

برای برنامه‌های X11/GTK/QT/Gnome/KDE گروه @x11 را به عنوان یک پارامتر اضافه کنید. مثال:

$ firejail --rivate-etc=@x11,gcrypt,python*
/usr/bin/gimp

دایرکتوری‌های gcrypt و /etc/python* بخشی از گروه عمومی @x11 نیستند. تطبیق الگوی فایلی (Globbing) پشتیبانی می‌شود.

برای بازی‌ها، گروه @games را بیفزایید:

$ firejail --rivate-etc=@games,@x11
/usr/bin/warzone2100

فایل‌های صوتی و شبکه به طور خودکار گنجانده می‌شوند، مگر اینکه --0sound یا --0t=none تعیین شده باشد. فایل‌های مربوط به پروتکل‌های رمزگذاری‌شده TLS/SSL در گروه @tls-ca قرار دارند:

$ firejail --rivate-etc=@tls-ca,wgetrc
/usr/bin/wget https://debian.org

نکته: ساده‌ترین راه برای استخراج فهرست فایل‌های /etc که توسط برنامه شما فراخوانی می‌شوند، بهره‌گیری از ابزار strace است.

مثال:

$ strace -f --race=%file /usr/bin/transmission-qt 2>&1 | grep etc

$ firejail --llow-debuggers --rofile=/etc/firejail/transmission-qt.profile
strace -f --race=%file /usr/bin/transmission-qt 2>&1 | grep etc

همچنین --llow-debuggers و --race را ببینید.

--rivate-home=file,directory
ساخت یک خانه کاربر جدید در یک سیستم فایل موقت، و کپی کردن فایل‌ها و دایرکتوری‌های موجود در فهرست به داخل خانه جدید. فایل‌ها و دایرکتوری‌های موجود در فهرست باید به صورت نسبی نسبت به دایرکتوری خانه کاربر جاری بیان شوند. تمامی تغییرات با بسته شدن سندباکس دور ریخته خواهند شد.

مثال:
$ firejail --rivate-home=.mozilla
/usr/bin/firefox

--rivate-opt=file,directory
ساخت یک دایرکتوری /opt جدید در یک سیستم فایل موقت، و کپی کردن فایل‌ها و دایرکتوری‌های موجود در فهرست. فایل‌ها و دایرکتوری‌های موجود در فهرست باید به صورت نسبی نسبت به دایرکتوری /opt بیان شوند، و نباید حاوی نویسه / باشند (مثلاً /opt/foo باید به صورت foo نوشته شود، اما /opt/foo/bar که به شکل foo/bar نوشته شود غیرمجاز است). اگر هیچ فایل فهرست‌شده‌ای یافت نشود، دایرکتوری /opt خالی خواهد بود. تمامی تغییرات پس از بسته شدن سندباکس دور ریخته می‌شوند.

مثال:
$ firejail --rivate-opt=firefox
/opt/firefox/firefox

نکته: برنامه‌های نصب‌شده در /opt معمولاً نسبتاً حجیم هستند و private-opt کل مسیر(ها) را درون حافظه رم کپی می‌کند که ممکن است مصرف RAM را به طور چشمگیری افزایش دهد و محدودیت file-copy-limit در firejail.config را نقض کند. از این رو، به طور کلی توصیه می‌شود به جای "private-opt PATH" از "whitelist /opt/PATH" استفاده گردد. برای جزئیات، ببینید: #5307.

--rivate-srv=file,directory
ساخت یک دایرکتوری /srv جدید در یک سیستم فایل موقت، و کپی کردن فایل‌ها و دایرکتوری‌های موجود در فهرست. فایل‌ها و دایرکتوری‌های موجود در این فهرست باید به صورت نسبی نسبت به دایرکتوری /srv بیان شوند و نباید حاوی نویسه / باشند (مثلاً /srv/foo باید به صورت foo بیان شود، ولی /srv/foo/bar که به شکل srv/bar بیان شود غیرمجاز است). اگر هیچ فایلی یافت نشود، دایرکتوری /srv خالی خواهد بود. تمام تغییرات با بستن سندباکس دور ریخته می‌شوند.

مثال:
# firejail --rivate-srv=www
/etc/init.d/apache2 start

--rivate-tmp
سوار کردن یک سیستم فایل موقت خالی بر روی دایرکتوری /tmp با قرار دادن سوکت‌های X11 و PulseAudio در فهرست سفید.

مثال:
$ firejail --rivate-tmp

$ ls -al /tmp
drwxrwxrwt 4 nobody nogroup 80 Apr 30 11:46 .
drwxr-xr-x 30 nobody nogroup 4096 Apr 26 22:18 ..
drwx------ 2 nobody nogroup 4096 Apr 30 10:52 pulse-PKdhtXMmr18n
drwxrwxrwt 2 nobody nogroup 4096 Apr 30 10:52 .X11-unix

--rofile=filename|appname
بارگذاری یک پروفایل امنیتی سفارشی از filename، یا استفاده از نام یک برنامه خاص.

اگر گزینه خط فرمان --rofile
ارائه نشود، Firejail تلاش خواهد کرد نام برنامه (appname) را از نام فایل برنامه هدف استخراج کند. سپس دایرکتوری ~/.config/firejail را برای یک پروفایل مناسب جستجو کرده، و پس از آن دایرکتوری /etc/firejail را جستجو خواهد کرد.

مثال:
$ firejail /usr/bin/firefox
Reading profile /home/netblue/.config/firejail/firefox.profile
Reading profile /etc/firejail/firefox.profile
Reading profile /etc/firejail/firefox-common.profile
[...]

هنگام استفاده از یک نام فایل، لطفاً یک مسیر کامل یا یک مسیر نسبی را درج فرمایید.

$ firejail --rofile=./firefox.profile
/usr/bin/firefox
Reading profile ./firefox.profile
Reading profile /etc/firejail/firefox.profile
Reading profile /etc/firejail/firefox-common.profile
[...]

گزینه --rofile=appname
هنگام اجرای appimageها بسیار سودمند است:

$ firejail --ppimage --rofile=firefox
firefox-nightly-148.0.r20260103-x86_64.AppImage
Reading profile /home/netblue/.config/firejail/firefox.profile
Reading profile /etc/firejail/firefox.profile
Reading profile /etc/firejail/firefox-common.profile
[...]

برای اطلاعات مربوط به ساختار نحوی فایل پروفایل به man 5 firejail-profile مراجعه فرمایید. برای جزئیات نحوه تشخیص و تطبیق پروفایل، ببینید: https://github.com/netblue30/firejail/wiki/Creating-Profiles

--rofile.print=name|pid
چاپ نام فایل پروفایل برای سندباکس مشخص‌شده با نام یا با PID.

مثال:
$ firejail --rofile.print=browser

/etc/firejail/firefox.profile

--rotocol=protocol,protocol,protocol
فعال‌سازی فیلتر پروتکل. این فیلتر بر پایه seccomp بوده و نخستین آرگومانِ ارسالی به فراخوان سیستمی socket را بررسی می‌کند. مقادیر شناسایی‌شده: unix، inet، inet6، netlink، packet و bluetooth. این گزینه برای معماری i386 پشتیبانی نمی‌شود. تعریف چندباره دستور protocol مجاز است و به صورت تجمعی اعمال می‌شوند.

مثال:
$ firejail --rotocol=unix,inet,inet6
/usr/bin/firefox

--rotocol.print=name|pid
چاپ فیلتر پروتکل برای سندباکس مشخص‌شده با نام یا PID.

مثال:
$ firejail --0me=mybrowser /usr/bin/firefox &
$ firejail --rotocol.print=mybrowser

unix,inet,inet6,netlink

مثال:
$ firejail --
3272:netblue::firejail --rivate
/usr/bin/firefox
$ firejail --rotocol.print=3272

unix,inet,inet6,netlink

--ut=name|pid
src-filename dest-filename
قرار دادن یک فایل در ظرف سندباکس، برای جزئیات بیشتر بخش FILE TRANSFER را ببینید.
--quiet
خاموش کردن خروجی متنی Firejail.

همین اثر را می‌توان با تنظیم متغیر محیطی FIREJAIL_QUIET روی مقدار yes به دست آورد.

تنظیم دایرکتوری یا فایل به حالت فقط‌خواندنی. تطبیق الگوی فایلی پشتیبانی می‌شود، برای جزئیات بیشتر بخش FILE GLOBBING را ببینید.

مثال:
$ firejail --ead-only=~/.mozilla /usr/bin/firefox

تنظیم دایرکتوری یا فایل به صورت خواندنی-نوشتنی. تنها فایل‌ها یا دایرکتوری‌های متعلق به کاربر جاری برای این عملیات مجاز هستند. تطبیق الگوی فایلی پشتیبانی می‌شود، برای جزئیات بیشتر بخش FILE GLOBBING را ببینید. مثال:

$ mkdir ~/test
$ touch ~/test/a
$ firejail --ead-only=~/test --ead-write=~/test/a

نصب یک فیلتر seccomp که تلاش‌ها برای ایجاد فضاهای نام جدید cgroup، ipc، net، mount، pid، time، user یا uts را مسدود می‌کند.

مثال:
$ firejail --estrict-namespaces

نصب یک فیلتر seccomp که تلاش‌ها برای ایجاد هر یک از فضاهای نام مشخص‌شده را مسدود می‌سازد. فیلتر آرگومان‌های فراخوان‌های سیستمی clone، unshare و setns را بررسی کرده و در صورت نیاز خطای EPERM را به فرآیند بازمی‌گرداند (یا آن را خاتمه داده یا تلاش را لاگ می‌کند، گزینه --ccomp-error-action را در ادامه ببینید). توجه داشته باشید که فیلتر قادر به بررسی آرگومان‌های فراخوان‌های سیستمی clone3 نیست و همواره به این فراخوان‌ها با خطای ENOSYS پاسخ می‌دهد.

مثال:
$ firejail --estrict-namespaces=user,net

تنظیم حداکثر اندازه حافظه مجازی فرآیند (فضای آدرس) بر حسب بایت. می‌توانید از پسوندهای K (کیبی‌بایت)، M (مبی‌بایت) یا G (گیبی‌بایت) استفاده کنید، مانند "100M" (که معادل 104857600 بایت است).
تنظیم حداکثر حد مجاز، بر حسب ثانیه، برای میزان زمان پردازنده‌ای که هر فرآیند درون سندباکس می‌تواند مصرف کند. با رسیدن به این حد، فرآیندها متوقف می‌شوند.

محدودیت CPU محدودیتی بر روی ثانیه‌های CPU است نه زمان سپری‌شده تقویمی. ثانیه‌های CPU اساساً بیانگر این است که پردازنده چند ثانیه مورد استفاده قرار گرفته است و لزوماً ارتباط مستقیمی با زمان سپری‌شده واقعی ندارد. هسته لینوکس ثانیه‌های CPU را برای هر فرآیند به طور مستقل ردیابی می‌کند.

تنظیم حداکثر اندازه فایلی که می‌تواند توسط یک فرآیند ایجاد شود. می‌توانید از پسوندهای K (کیبی‌بایت)، M (مبی‌بایت) یا G (گیبی‌بایت) بهره ببرید، مانند "100M" (که معادل 104857600 بایت است).
تنظیم حداکثر تعداد فایل‌هایی که می‌تواند توسط یک فرآیند باز شود.
تنظیم حداکثر تعداد فرآیندهایی که می‌تواند برای شناسه کاربری واقعی (real user ID) فرآیند فراخواننده ایجاد شود.
تنظیم حداکثر تعداد سیگنال‌های معلق برای یک فرآیند.
حذف متغیر محیطی در سندباکس جدید.

مثال:
$ firejail --menv=DBUS_SESSION_BUS_ADDRESS

اسکن ARP تمامی شبکه‌ها از داخل یک فضای نام شبکه. این کار امکان شناسایی درایورهای دستگاه هسته macvlan در حال اجرا روی میزبان جاری را فراهم می‌سازد.

مثال:
$ firejail --0t=eth0 --an

فعال‌سازی فیلتر seccomp و قرار دادن فراخوان‌های سیستمی فهرست پیش‌فرض در فهرست سیاه، که برابر با @default-nodebuggers است مگر اینکه --llow-debuggers مشخص شده باشد که در آن صورت @default خواهد بود.

برای تسهیل در ایجاد فیلترهای seccomp سودمند، گروه‌های فراخوان سیستمی زیر تعریف شده‌اند: @aio, @basic-io, @chown, @clock, @cpu-emulation, @debug, @default, @default-nodebuggers, @default-keep, @file-system, @io-event, @ipc, @keyring, @memfd, @memlock, @module, @mount, @network-io, @obsolete, @privileged, @process, @raw-io, @reboot, @resources, @sandbox, @setuid, @swap, @sync, @system-service و @timer. اطلاعات بیشتر درباره این گروه‌ها را می‌توانید در فایل /usr/share/doc/firejail/syscalls.txt بیابید، همچنین --ebug-syscall-groups را ببینید.

فهرست پیش‌فرض قابل سفارشی‌سازی است، برای توضیحات به --ccomp= مراجعه فرمایید. همچنین می‌توان آن را به صورت سراسری در فایل /etc/firejail/firejail.config سفارشی کرد.

معماری سیستم تنها زمانی به طور اکید اعمال می‌شود که فلگ --ccomp.block-secondary به کار رود. فیلتر در زمان اجرا تنها در صورتی اعمال می‌شود که معماری صحیح شناسایی شده باشد. در خصوص I386 و AMD64 هر دو فیلتر ۳۲ بیتی و ۶۴ بیتی نصب می‌شوند.

اگر هسته با پشتیبانی از audit کامپایل شده باشد (فلگ CONFIG_AUDIT)، Firejail تخلفات seccomp را در لاگ audit چاپ خواهد کرد.

مثال:
$ firejail --ccomp

فعال‌سازی فیلتر seccomp، قرار دادن فهرست پیش‌فرض و فراخوان‌های سیستمی یا گروه‌های فراخوان سیستمی تعیین‌شده توسط دستور در فهرست سیاه، اما استثنا کردن "syscall2" از فهرست سیاه. در یک معماری ۶۴ بیتی، یک فیلتر تکمیلی برای فراخوان‌های سیستمی ۳۲ بیتی می‌تواند با --ccomp.32 نصب گردد.

مثال:
$ firejail --ccomp=utime,utimensat,utimes /usr/bin/firefox
$ firejail --ccomp=@clock,mkdir,unlinkat /usr/bin/transmission-gtk
$ firejail '--ccomp=@ipc,!pipe,!pipe2' audacious

فراخوان‌های سیستمی را می‌توان در صورت درج پیشوند "$" با شماره آن‌ها مشخص کرد، بنابراین برای نمونه "$165" متناظر با "mount" در معماری x86_64 است.

شماره‌ها و نام‌های فراخوان‌های سیستمی برای --ccomp را می‌توان با استفاده از --ebug-syscalls و برای --ccomp.32 با --ebug-syscalls32 یافت.

به جای دور انداختن فراخوان سیستمی با بازگرداندن EPERM، می‌توان شماره خطای دیگری را با نحو syscall:errno بازگرداند. این مورد را می‌توان به صورت سراسری نیز با --ccomp-error-action یا در فایل /etc/firejail/firejail.config تغییر داد. فرآیند را همچنین می‌توان با نحو syscall:kill متوقف کرد، یا تلاش صورت‌گرفته را با syscall:log ثبت نمود.

مثال:
$ firejail --ccomp=unlinkat:ENOENT,utimensat,utimes
Parent pid 10662, child pid 10663
Child process initialized
$ touch testfile
$ ls testfile
testfile
$ rm testfile
rm: cannot remove `testfile': No such file or directory

اگر فراخوان‌های سیستمی مسدودشده مانع از عملکرد خود Firejail نیز بشوند، با افزودن یک کتابخانه از پیش بارگذاری‌شده (preload) مدیریت می‌گردند که فراخوان‌های سیستمی seccomp را دیرتر اجرا می‌کند. با این وجود، این روش با فیلترهای seccomp ۳۲ بیتی ناسازگار است.

مثال:
$ firejail --0profile --ccomp=execve sh
Parent pid 32751, child pid 32752
Post-exec seccomp protector enabled
list in: execve, check list: @default-keep prelist: (null), postlist: execve
Child process initialized in 46.44 ms
$ ls
Operation not permitted

فعال‌سازی فیلتر seccomp و فیلتر کردن معماری‌های فراخوان سیستمی به گونه‌ای که تنها معماری بومی مجاز باشد. برای نمونه در amd64، فراخوان‌های سیستمی i386 و x32 مسدود می‌شوند و همچنین تغییر دامنه اجرا با فراخوان سیستمی personality(2) مسدود می‌گردد.
فعال‌سازی فیلتر seccomp، و قرار دادن فراخوان‌های سیستمی یا گروه‌های فراخوان سیستمی مشخص‌شده توسط دستور در فهرست سیاه. در یک معماری ۶۴ بیتی، یک فیلتر اضافی برای فراخوان‌های سیستمی ۳۲ بیتی را می‌توان با --ccomp.32.drop نصب کرد.

مثال:
$ firejail --ccomp.drop=utime,utimensat,utimes,@clock

به جای دور انداختن فراخوان سیستمی با بازگرداندن EPERM، شماره خطای دیگری را می‌توان با استفاده از نحو syscall:errno بازگرداند. این مورد را می‌توان به صورت سراسری با --ccomp-error-action یا در فایل /etc/firejail/firejail.config نیز تغییر داد. فرآیند همچنین می‌تواند با ساختار syscall:kill خاتمه یابد، یا اقدام مربوطه با syscall:log لاگ شود.

مثال:
$ firejail --ccomp.drop=unlinkat:ENOENT,utimensat,utimes
Parent pid 10662, child pid 10663
Child process initialized
$ touch testfile
$ ls testfile
testfile
$ rm testfile
rm: cannot remove `testfile': No such file or directory

فعال‌سازی فیلتر seccomp، قرار دادن تمامی فراخوان‌های سیستمی فهرست‌نشده در فهرست سیاه به جز "syscall2". فراخوان‌های سیستمی مورد نیاز Firejail (گروه @default-keep: prctl, execve, execveat) با کتابخانه پیش‌بارگذاری مدیریت می‌شوند. در یک معماری ۶۴ بیتی، یک فیلتر تکمیلی برای فراخوان‌های سیستمی ۳۲ بیتی را می‌توان با --ccomp.32.keep نصب کرد.

مثال:
$ firejail --ccomp.keep=poll,select,[...] /usr/bin/transmission-gtk

چاپ فیلتر seccomp برای سندباکس مشخص‌شده با نام یا PID.

مثال:
$ firejail --0me=browser /usr/bin/firefox &
$ firejail --ccomp.print=browser
line OP JT JF K
=================================
0000: 20 00 00 00000004 ld data.architecture
0001: 15 01 00 c000003e jeq ARCH_64 0003 (false 0002)
0002: 06 00 00 7fff0000 ret ALLOW
0003: 20 00 00 00000000 ld data.syscall-number
0004: 35 01 00 40000000 jge X32_ABI true:0006 (false 0005)
0005: 35 01 00 00000000 jge read 0007 (false 0006)
0006: 06 00 00 00050001 ret ERRNO(1)
0007: 15 41 00 0000009a jeq modify_ldt 0049 (false 0008)
0008: 15 40 00 000000d4 jeq lookup_dcookie 0049 (false 0009)
0009: 15 3f 00 0000012a jeq perf_event_open 0049 (false 000a)
000a: 15 3e 00 00000137 jeq process_vm_writev 0049 (false 000b)
000b: 15 3d 00 0000009c jeq _sysctl 0049 (false 000c)
000c: 15 3c 00 000000b7 jeq afs_syscall 0049 (false 000d)
000d: 15 3b 00 000000ae jeq create_module 0049 (false 000e)
000e: 15 3a 00 000000b1 jeq get_kernel_syms 0049 (false 000f)
000f: 15 39 00 000000b5 jeq getpmsg 0049 (false 0010)
0010: 15 38 00 000000b6 jeq putpmsg 0049 (false 0011)
0011: 15 37 00 000000b2 jeq query_module 0049 (false 0012)
0012: 15 36 00 000000b9 jeq security 0049 (false 0013)
0013: 15 35 00 0000008b jeq sysfs 0049 (false 0014)
0014: 15 34 00 000000b8 jeq tuxcall 0049 (false 0015)
0015: 15 33 00 00000086 jeq uselib 0049 (false 0016)
0016: 15 32 00 00000088 jeq ustat 0049 (false 0017)
0017: 15 31 00 000000ec jeq vserver 0049 (false 0018)
0018: 15 30 00 0000009f jeq adjtimex 0049 (false 0019)
0019: 15 2f 00 00000131 jeq clock_adjtime 0049 (false 001a)
001a: 15 2e 00 000000e3 jeq clock_settime 0049 (false 001b)
001b: 15 2d 00 000000a4 jeq settimeofday 0049 (false 001c)
001c: 15 2c 00 000000b0 jeq delete_module 0049 (false 001d)
001d: 15 2b 00 00000139 jeq finit_module 0049 (false 001e)
001e: 15 2a 00 000000af jeq init_module 0049 (false 001f)
001f: 15 29 00 000000ad jeq ioperm 0049 (false 0020)
0020: 15 28 00 000000ac jeq iopl 0049 (false 0021)
0021: 15 27 00 000000f6 jeq kexec_load 0049 (false 0022)
0022: 15 26 00 00000140 jeq kexec_file_load 0049 (false 0023)
0023: 15 25 00 000000a9 jeq reboot 0049 (false 0024)
0024: 15 24 00 000000a7 jeq swapon 0049 (false 0025)
0025: 15 23 00 000000a8 jeq swapoff 0049 (false 0026)
0026: 15 22 00 000000a3 jeq acct 0049 (false 0027)
0027: 15 21 00 00000141 jeq bpf 0049 (false 0028)
0028: 15 20 00 000000a1 jeq chroot 0049 (false 0029)
0029: 15 1f 00 000000a5 jeq mount 0049 (false 002a)
002a: 15 1e 00 000000b4 jeq nfsservctl 0049 (false 002b)
002b: 15 1d 00 0000009b jeq pivot_root 0049 (false 002c)
002c: 15 1c 00 000000ab jeq setdomainname 0049 (false 002d)
002d: 15 1b 00 000000aa jeq sethostname 0049 (false 002e)
002e: 15 1a 00 000000a6 jeq umount2 0049 (false 002f)
002f: 15 19 00 00000099 jeq vhangup 0049 (false 0030)
0030: 15 18 00 000000ee jeq set_mempolicy 0049 (false 0031)
0031: 15 17 00 00000100 jeq migrate_pages 0049 (false 0032)
0032: 15 16 00 00000117 jeq move_pages 0049 (false 0033)
0033: 15 15 00 000000ed jeq mbind 0049 (false 0034)
0034: 15 14 00 00000130 jeq open_by_handle_at 0049 (false 0035)
0035: 15 13 00 0000012f jeq name_to_handle_at 0049 (false 0036)
0036: 15 12 00 000000fb jeq ioprio_set 0049 (false 0037)
0037: 15 11 00 00000067 jeq syslog 0049 (false 0038)
0038: 15 10 00 0000012c jeq fanotify_init 0049 (false 0039)
0039: 15 0f 00 00000138 jeq kcmp 0049 (false 003a)
003a: 15 0e 00 000000f8 jeq add_key 0049 (false 003b)
003b: 15 0d 00 000000f9 jeq request_key 0049 (false 003c)
003c: 15 0c 00 000000fa jeq keyctl 0049 (false 003d)
003d: 15 0b 00 000000ce jeq io_setup 0049 (false 003e)
003e: 15 0a 00 000000cf jeq io_destroy 0049 (false 003f)
003f: 15 09 00 000000d0 jeq io_getevents 0049 (false 0040)
0040: 15 08 00 000000d1 jeq io_submit 0049 (false 0041)
0041: 15 07 00 000000d2 jeq io_cancel 0049 (false 0042)
0042: 15 06 00 000000d8 jeq remap_file_pages 0049 (false 0043)
0043: 15 05 00 00000116 jeq vmsplice 0049 (false 0044)
0044: 15 04 00 00000087 jeq personality 0049 (false 0045)
0045: 15 03 00 00000143 jeq userfaultfd 0049 (false 0046)
0046: 15 02 00 00000065 jeq ptrace 0049 (false 0047)
0047: 15 01 00 00000136 jeq process_vm_readv 0049 (false 0048)
0048: 06 00 00 7fff0000 ret ALLOW
0049: 06 00 01 00000000 ret KILL
$

به‌طور پیش‌فرض، اگر یک فیلتر seccomp یک فراخوان سیستمی را مسدود سازد، فرآیند خطای EPERM را دریافت می‌کند. با --ccomp-error-action=error، شماره خطای دیگری مانند ENOSYS یا EACCES قابل بازگردانی است. همچنین می‌توان فرآیند را (همانند نسخه‌های قبل از 0.9.63 نرم‌افزار Firejail) با ساختار --ccomp-error-action=kill متوقف کرد، یا تلاش صورت‌گرفته را با --ccomp-error-action=log ثبت نمود. متوقف نکردن فرآیند در هنگام مهار نفوذ اندکی Firejail را تضعیف می‌کند، ولی اگر تنها راهکار جایگزین مجاز دانستن یک فراخوان سیستمی باشد، امکان اعمال فیلترهای سخت‌گیرانه‌تر را فراهم می‌سازد.
خاموش کردن سندباکس مشخص‌شده با نام یا PID.

مثال:
$ firejail --0me=mygame --aps.drop=all /usr/bin/warzone2100 &
$ firejail --utdown=mygame

مثال:
$ firejail --
3272:netblue::firejail --rivate
/usr/bin/firefox
$ firejail --utdown=3272

پایش نشانگر نام سرور (TLS/SNI). سندباکس را می‌توان با نام یا pid مشخص کرد. تنها سندباکس‌های شبکه‌ای ایجادشده با --0t پشتیبانی می‌شوند. این گزینه تنها هنگام اجرای سندباکس به عنوان ریشه در دسترس است.

بدون مشخص کردن نام/pid، ابزار Firejail فضای نام شبکه اصلی سیستم را پایش خواهد کرد.

مثال:
$ sudo firejail --itrace
07:49:51 23.185.0.3 linux.com
07:49:51 23.185.0.3 www.linux.com
07:50:05 192.0.73.2 secure.gravatar.com
07:52:35 172.67.68.93 www.howtoforge.com
07:52:37 13.225.103.59 sf.ezoiccdn.com
07:52:42 142.250.176.3 www.gstatic.com
07:53:03 173.236.250.32 www.linuxlinks.com
07:53:05 192.0.77.37 c0.wp.com
07:53:08 192.0.78.32 jetpack.wordpress.com
07:53:09 192.0.77.32 s0.wp.com
07:53:09 192.0.77.2 i0.wp.com
07:53:10 192.0.77.2 i0.wp.com
07:53:11 192.0.73.2 1.gravatar.com

فعال‌سازی تکمیل با کلید Tab در شل درون سندباکس‌هایی که از دایرکتوری‌های خانگی خصوصی یا موجود در فهرست سفید استفاده می‌کنند.

$ firejail --rivate
--ab

خاتمه خودکار سندباکس پس از سپری شدن زمان معین. زمان در قالب ساعت:دقیقه:ثانیه تعیین می‌گردد.

$ firejail --imeout=01:30:00 /usr/bin/firefox

سوار کردن یک سیستم فایل موقتِ قابل‌نوشتن tmpfs بر روی دایرکتوری dirname. دایرکتوری‌های خارج از دایرکتوری خانگی کاربر یا دایرکتوری‌هایی که متعلق به کاربر نیستند مجاز نمی‌باشند. سندباکس‌های در حال اجرا به عنوان ریشه از این محدودیت‌ها مستثنی هستند. تطبیق الگوی فایلی پشتیبانی می‌شود، برای جزئیات بیشتر بخش FILE GLOBBING را ببینید.

مثال:
$ firejail --mpfs=~/.local/share

پایش سندباکس‌های دارای بیشترین میزان مصرف پردازنده، برای جزئیات بیشتر بخش MONITORING را ببینید.

مثال:
$ firejail --op

ردگیری فراخوان‌های سیستمی open، access و connect. اگر filename تعیین شده باشد، خروجی ردگیری در filename ذخیره می‌شود؛ در غیر این صورت در کنسول ثبت می‌گردد.

مثال:
$ firejail --race /usr/bin/wget -q www.debian.org
Reading profile /etc/firejail/wget.profile
3:wget:fopen64 /etc/wgetrc:0x5c8e8ce6c0
3:wget:fopen /etc/hosts:0x5c8e8cfb70
3:wget:socket AF_INET SOCK_DGRAM IPPROTO_IP:3
3:wget:connect 3 8.8.8.8 port 53:0
3:wget:socket AF_INET SOCK_STREAM IPPROTO_IP:3
3:wget:connect 3 130.89.148.14 port 80:0
3:wget:fopen64 index.html:0x5c8e8d1a60

parent is shutting down, bye...

همچنین --llow-debuggers و --rivate-etc
را ببینید.

این گزینه بازرسی فایل‌ها و دایرکتوری‌های قرارگرفته در فهرست سیاه را فعال می‌سازد. در صورت دسترسی به فایل یا دایرکتوری، پیامی به syslog فرستاده می‌شود.

مثال:
$ firejail --racelog /usr/bin/firefox

پیام‌های نمونه:
$ sudo tail -f /var/log/syslog
[...]
Dec 3 11:43:25 debian firejail[70]: blacklist violation - sandbox 26370, exe firefox, syscall open64, path /etc/shadow
Dec 3 11:46:17 debian firejail[70]: blacklist violation - sandbox 26370, exe firefox, syscall opendir, path /boot
[...]

نکته: پشتیبانی از این دستور در firejail.config با گزینه tracelog کنترل می‌شود.

چاپ ساختار درختی تمامی فرآیندهای درون سندباکس، برای جزئیات بیشتر بخش MONITORING را ببینید.

مثال:
$ firejail --ree
11903:netblue:firejail /usr/bin/iceweasel
11904:netblue:iceweasel
11957:netblue:/usr/lib/iceweasel/plugin-container
11969:netblue:firejail --0t=eth0 /usr/bin/transmission-gtk
11970:netblue:transmission-gtk

شناسه فرآیند ۱ (Pid 1) همواره درون سندباکس Firejail وجود دارد. با محدود ساختن دسترسی به رابط هسته /proc، ابزارهای عمومی مانند ps قادر به مشاهده و دسترسی به این فرآیند نیستند. گزینه --nhide-pid1 این قابلیت را غیرفعال می‌سازد. مثال:

$ firejail --0me=test ### به صورت پیش‌فرض pid 1 قابل مشاهده نیست
[...]
Child process initialized in 59.41 ms
$ ps a
PID TTY STAT TIME COMMAND
4 ? S 0:00 /bin/bash
5 ? R+ 0:00 ps a
$ exit
Parent is shutting down, bye…

$ firejail --0me=test --nhide-pid1 ### اکنون pid 1 قابل مشاهده است
[...]
Child process initialized in 58.29 ms
$ ps a
PID TTY STAT TIME COMMAND
1 ? S 0:00 firejail --0me=test --nhide-pid1
4 ? S 0:00 /bin/bash
6 ? R+ 0:00 ps a
$ exit
Parent is shutting down, bye…

--
چاپ نسخه برنامه/پشتیبانی زمان کامپایل و خروج.

مثال:
$ firejail --
firejail version 0.9.27

Compile time support:
- AppArmor support is enabled
- AppImage support is enabled
- chroot support is enabled
- file and directory whitelisting support is enabled
- file transfer support is enabled
- firetunnel support is enabled
- networking support is enabled
- private-home support is enabled
- seccomp-bpf support is enabled
- user namespace support is enabled
- X11 sandboxing support is enabled

--=name
استفاده از این نام برای رابط متصل به پل برای دستورات --0t=bridge_interface به جای نام پیش‌فرض.

مثال:
$ firejail --0t=br0 --=if0

--648
قرار دادن دایرکتوری یا فایل در فهرست سفید. یک سیستم فایل موقت بر روی دایرکتوری بالادست (top directory) سوار می‌شود. در زمینه عملکرد firejail، دایرکتوری بالادست بدین معناست که اگر مسیر فایل موجود در فهرست سفید برای نمونه /etc/somedir/somefile باشد، آنگاه دایرکتوری بالادست /etc خواهد بود. تمام دایرکتوری‌های بالادست دیگر مانند /opt، /usr و غیره تغییر نیافته باقی می‌مانند، بنابراین تمامی فایل‌های موجود در آن‌ها همچنان قابل‌دسترس خواهند بود، مگر اینکه فایلی یا دایرکتوری در درون آن‌ها نیز در فهرست سفید قرار گیرد. به همین دلیل گاهی اوقات استفاده از فهرست سیاه در ترکیب با فهرست سفید در صورتی که برای دایرکتوری‌های بالادست متفاوتی به کار روند سودمند است.

فایل‌های قرارگرفته در فهرست سفید به صورت mount-bind در داخل متصل می‌شوند. تغییرات روی فایل‌های فهرست سفید ماندگار هستند؛ هر چیز دیگری در همان دایرکتوری بالادست هنگام بستن سندباکس دور ریخته می‌شود.

دایرکتوری بالادست می‌تواند اکثر دایرکتوری‌های موجود در / باشد، اما برخی موارد خاص نیز وجود دارد. دایرکتوری‌های بالادست /proc و /sys مجاز نیستند، اما /sys/module مجاز است. همچنین /run/user/$UID، $HOME و تمامی دایرکتوری‌های موجود در /usr به عنوان دایرکتوری بالادست تلقی می‌شوند.

مدیریت پیوندهای نمادین: قرار دادن مسیری که یک پیوند نمادین است در فهرست سفید، مسیری را نیز که به آن اشاره دارد در فهرست سفید قرار خواهد داد. برای نمونه، اگر ~/foo در فهرست سفید قرار گیرد و به ~/bar اشاره کند، ~/bar نیز در فهرست سفید قرار می‌گیرد.
محدودیت‌ها: به استثنای دایرکتوری خانه کاربر، هر دو پیوند و فایل واقعی باید در یک دایرکتوری بالادست قرار داشته باشند. برای پیوندهای نمادین در دایرکتوری خانه کاربر، هر دو پیوند و فایل واقعی باید متعلق به کاربر باشند.

تطبیق الگوی فایلی (Globbing) پشتیبانی می‌شود، برای جزئیات بیشتر بخش FILE GLOBBING را ببینید.

مثال:
$ firejail --0profile --432
$ firejail --672
$ firejail --240ome/username/My Virtual Machines"
$ firejail --216ome/username/My\ Virtual\ Machines
$ firejail --504

--240
سوار کردن دایرکتوری /etc به صورت خواندنی-نوشتنی.

مثال:
$ sudo firejail --240

--168un-user
غیرفعال‌سازی قرارگیری پیش‌فرض /run/user/$UID/systemd و /run/user/$UID/gnupg در فهرست سیاه.

مثال:
$ sudo firejail --168un-user

--216
سوار کردن دایرکتوری /var به صورت خواندنی-نوشتنی.

مثال:
$ sudo firejail --216

--216-log
استفاده از دایرکتوری واقعی /var/log به جای نسخه شبیه‌سازی‌شده آن. به‌طور پیش‌فرض یک tmpfs بر روی دایرکتوری /var/log سوار می‌شود و یک سیستم فایل اسکلتی بر اساس /var/log اصلی ساخته می‌شود.

مثال:
$ sudo firejail --216-log

--1
قرار دادن برنامه در سندباکس با استفاده از افزونه‌های امنیتی Xpra، Xephyr، Xvfb یا Xorg. این سندباکس از دسترسی برنامه‌های عکس‌برداری از صفحه و ثبت‌کننده کلید (کی‌لاگر) اجراشده در داخل سندباکس به کلاینت‌های در حال اجرا در خارج از سندباکس ممانعت به عمل می‌آورد. ابزار Firejail ابتدا Xephyr را امتحان می‌کند، و اگر روی سیستم نصب نباشد، Xpra را جستجو خواهد کرد. اگر هیچ‌کدام یافت نشد، Firejail تلاشی برای استفاده از Xvfb یا افزونه امنیتی X11 نخواهد نمود.

حالت‌های Xpra، Xephyr و Xvfb برای غیرفعال ساختن سوکت یونیکس انتزاعی X11 نیازمند نمونه‌سازی از یک فضای نام شبکه هستند. اگر این امر مقدور نباشد، کاربر می‌تواند سوکت انتزاعی را با افزودن "-nolisten local"; در خط فرمان Xorg در سطح سیستم غیرفعال نماید.

مثال:
$ firejail --1 --0t=eth0 /usr/bin/firefox

--1=none
قرار دادن دایرکتوری /tmp/.X11-unix، فایل ${HOME}/.Xauthority و فایل مشخص‌شده در متغیر محیطی ${XAUTHORITY} در فهرست سیاه. حذف متغیرهای محیطی DISPLAY و XAUTHORITY. توقف با پیام خطا در صورتی که سوکت انتزاعی X11 در سندباکس قابل دسترس باشد.
--1=xephyr
راه‌اندازی Xephyr و متصل کردن سندباکس به این سرور. سرور Xephyr یک سرور نمایش است که پروتکل سرور نمایش X11 را پیاده‌سازی می‌کند. جهت سلب دسترسی به سوکت دامنه یونیکس انتزاعی X11، یک فضای نام شبکه باید نمونه‌سازی شود.

سرور Xephyr درست همانند هر برنامه X11 دیگری در یک پنجره اجرا می‌شود. اندازه پیش‌فرض پنجره 800x600 است. این مورد در فایل /etc/firejail/firejail.config قابل تغییر است.

شیوه پیشنهادی برای بهره‌گیری از این ویژگی اجرای یک مدیر پنجره درون سندباکس است. یک پروفایل امنیتی برای OpenBox ارائه شده است.

سرور Xephyr توسط پروژه Xorg توسعه داده شده است. در سیستم‌های دبیان با دستور sudo apt-get install xserver-xephyr نصب می‌گردد. این قابلیت هنگام اجرا با دسترسی ریشه در دسترس نیست.

مثال:
$ firejail --1=xephyr --net=eth0 /usr/bin/openbox

--1=xorg
قرار دادن برنامه در سندباکس با استفاده از حالت غیرقابل‌اعتمادِ پیاده‌سازی‌شده توسط افزونه امنیتی X11. این افزونه در بسته Xorg ارائه شده و به صورت پیش‌فرض در اکثر توزیع‌های لینوکس نصب است. این افزونه از یک مدل ارتباطی ساده معتمد/نامعتمد پشتیبانی می‌کند. کلاینت‌های غیرقابل‌اعتماد از روش‌های خاصی برای جلوگیری از خواندن محتوای پنجره‌های سایر کلاینت‌ها، ربودن رویدادهای ورودی و غیره محدود می‌شوند.

حالت غیرقابل‌اعتماد دارای چندین محدودیت است. بسیاری از برنامه‌های متداول فرض می‌کنند که یک کلاینت مورد اعتماد X11 هستند و در صورت اجرا در حالت غیرقابل‌اعتماد دچار خرابی یا قفل می‌شوند. مرورگر Chromium و xterm دو نمونه از این دست هستند. به نظر می‌رسد Firefox و transmission-gtk به خوبی کار می‌کنند. برای این گزینه به یک فضای نام شبکه نیازی نیست.

مثال:
$ firejail --1=xorg /usr/bin/firefox

--1=xpra
راه‌اندازی Xpra (ببینید https://xpra.org) و متصل ساختن سندباکس به این سرور. ابزار Xpra یک سرور نمایش و کلاینت راه دور ماندگار برای هدایت برنامه‌های X11 و صفحات دسکتاپ است. برای سلب دسترسی به سوکت دامنه یونیکس انتزاعی X11 نیاز به نمونه‌سازی یک فضای نام شبکه است.

در پلتفرم‌های دبیان ابزار Xpra با دستور sudo apt-get install xpra نصب می‌شود. این ویژگی هنگام اجرا با دسترسی ریشه در دسترس نیست.

مثال:
$ firejail --1=xpra --0t=eth0 /usr/bin/firefox

--1=xvfb
راه‌اندازی سرور X11 یعنی Xvfb و متصل کردن سندباکس به این سرور. سرور Xvfb که مخفف X virtual framebuffer است، تمامی عملیات گرافیکی را در حافظه و بدون نمایش هیچ‌گونه خروجی روی صفحه انجام می‌دهد. سرور Xvfb عمدتاً برای دسترسی راه دور و آزمون نرم‌افزار روی سرورهای فاقد نمایشگر (headless) به کار می‌رود.

در پلتفرم‌های دبیان Xvfb با دستور sudo apt-get install xvfb نصب می‌گردد. این قابلیت هنگام اجرا با دسترسی ریشه در دسترس نمی‌باشد.

مثال: دسترسی راه دور با VNC

روی سرور یک سندباکس را با استفاده از Xvfb و مدیر پنجره openbox راه‌اندازی می‌کنیم. اندازه پیش‌فرض صفحه Xvfb برابر 800x600 است که می‌تواند در /etc/firejail/firejail.config (xvfb-screen) تغییر یابد. نوعی شبکه (--net) به منظور جداسازی سوکت‌های انتزاعی مورد استفاده سایر سرورهای X مورد نیاز است.

$ firejail --0t=none --1=xvfb /usr/bin/openbox

*** Attaching to Xvfb display 792 ***

Reading profile /etc/firejail/openbox.profile
Reading profile /etc/firejail/disable-common.inc
Reading profile /etc/firejail/disable-common.local
Parent pid 5400, child pid 5401

بر روی سرور همچنین یک سرور VNC را آغاز کرده و آن را به نمایشگری که توسط سرور Xvfb ما مدیریت می‌شود (792) متصل می‌کنیم.

$ x11vnc -display :792

روی ماشین کلاینت یک نرم‌افزار مشاهده VNC اجرا کرده و با استفاده از آن به سرور خود متصل می‌شویم:

$ vncviewer

تنظیم پارامترهای اضافی دستور سرور Xephyr برای --1=xephyr. این تنظیم مقدار پیش‌فرض تعیین‌شده در /etc/firejail/firejail.config را برای سندباکس جاری رونویسی می‌کند. جهت مشاهده فهرست گزینه‌های موجود Xephyr -help را اجرا فرمایید.

مثال:
$ firejail --0t=eth0 --1=xephyr --xtra-params="-title firefox"; /usr/bin/firefox

تنظیم اندازه صفحه نمایش برای --1=xephyr. این تنظیم مقدار پیش‌فرض در /etc/firejail/firejail.config را برای سندباکس جاری رونویسی می‌کند. جهت دریافت فهرست وضوح‌های پشتیبانی‌شده روی رایانه خود xrandr را اجرا نمایید.

مثال:
$ firejail --0t=eth0 --1=xephyr --en=640x480 /usr/bin/firefox

پشتیبانی از AppArmor به طور پیش‌فرض در زمان کامپایل غیرفعال است. از گزینه پیکربندی --\nable-apparmor برای فعال‌سازی آن استفاده کنید:

$ ./configure --refix=/usr
--\nable-apparmor

در زمان نصب نرم‌افزار، یک فایل پروفایل عمومی AppArmor به نام firejail-default در دایرکتوری /etc/apparmor.d قرار داده می‌شود. سفارشی‌سازی‌های محلی باید در /etc/apparmor.d/local/firejail-local قرار گیرند. این پروفایل باید با بارگذاری مجدد apparmor.service، راه‌اندازی مجدد سیستم یا اجرای دستور زیر به عنوان کاربر ریشه در هسته بارگذاری شود:

# apparmor_parser -r /etc/apparmor.d/firejail-default

پروفایل نصب‌شده مکمل عملکردهای اصلی firejail است و علاوه بر سایر موارد، اقدامات زیر را انجام می‌دهد:

- غیرفعال کردن ptrace. با ptrace امکان بازرسی و ربودن برنامه‌های در حال اجرا وجود دارد. معمولاً این قابلیت فقط برای اشکال‌زدایی مورد نیاز است. شما نباید مشکلی در اجرای Chromium یا Firefox داشته باشید. این ویژگی فقط روی هسته‌های اوبونتو در دسترس است.

- قرار دادن دسترسی نوشتن به چندین فایل در زیر مسیرهای /run، /proc و /sys در فهرست سفید.

- اجازه اجرای برنامه‌ها تنها از مسیرهای شناخته‌شده سیستم، مانند /bin، /sbin، /usr/bin و غیره. این مسیرها به صورت فقط‌خواندنی در دسترس هستند. اجرای برنامه‌ها و اسکریپت‌ها از دایرکتوری خانگی کاربر یا سایر دایرکتوری‌های قابل‌نوشتن توسط کاربر مجاز نیست.

- جلوگیری از استفاده از سوکت‌های شبکه غیراستاندارد. تنها سوکت‌های unix، inet، inet6، netlink، raw و packet مجاز هستند.

- رد دسترسی به مسیرهای حساس شناخته‌شده مانند .snapshots.

جهت فعال‌سازی محدودسازی AppArmor بر روی ویژگی‌های امنیتی فعلی Firejail خود، فلگ --pparmor را به خط فرمان Firejail ارسال کنید. همچنین می‌توانید دستور apparmor را در یک فایل پروفایل Firejail درج فرمایید. مثال:

$ firejail --apparmor /usr/bin/firefox

یک پیوند نمادین به /usr/bin/firejail با نام یک برنامه، آن برنامه را درون سندباکس Firejail اجرا خواهد کرد. پیوند نمادین باید در نخستین موقعیت متغیر $PATH قرار گیرد. در اکثر سیستم‌ها، یک مکان مناسب دایرکتوری /usr/local/bin است. مثال:

ایجاد یک پیوند نمادین firefox به /usr/bin/firejail:

$ sudo ln -s /usr/bin/firejail /usr/local/bin/firefox

بررسی $PATH:

$ which -a firefox
/usr/local/bin/firefox
/usr/bin/firefox

اجرای firefox در این لحظه، به طور خودکار “firejail /usr/bin/firefox” را فراخوانی می‌کند.

این سازوکار هنگام کلیک کردن روی آیکون‌های محیط میزکار، منوها و غیره کار می‌کند. از "firejail --ree" برای بررسی سندباکس بودن برنامه استفاده نمایید.

$ firejail --ree
1189:netblue:firejail /usr/bin/firefox
1190:netblue:firejail /usr/bin/firefox
1220:netblue:/bin/sh -c "/usr/lib/firefox/firefox"
1221:netblue:/usr/lib/firefox/firefox

ما ابزاری ارائه می‌دهیم که تمام این یکپارچه‌سازی را به صورت خودکار انجام می‌دهد؛ لطفاً برای جزئیات بیشتر به firecfg(1) مراجعه کنید.

اجرای یک نشست شل معمولی در سندباکس.
firejail /usr/bin/firefox
اجرای Mozilla Firefox.
firejail --ebug /usr/bin/firefox
اشکال‌زدایی سندباکس Firefox.
firejail --rivate
/usr/bin/firefox
اجرای Firefox با یک دایرکتوری خانگی جدید و خالی.
firejail --0t=none /usr/bin/vlc
اجرای VLC در یک فضای نام شبکه متصل‌نشده.
firejail --0t=eth0 /usr/bin/firefox
اجرای Firefox در یک فضای نام جدید شبکه. یک آدرس IP به صورت خودکار تخصیص می‌یابد.
firejail --0t=br0 --ip=10.10.20.5 --0t=br1 --0t=br2
شروع یک نشست شل در یک فضای نام جدید شبکه و اتصال آن به دستگاه‌های پل میزبان br0، br1 و br2. آدرس‌های IP به صورت خودکار برای رابط‌های متصل به br1 و br2 تخصیص می‌یابند.
firejail --
فهرست کردن تمامی فرآیندهای درون سندباکس.

تطبیق الگو (Globbing) عملیاتی است که یک الگوی کاراکتر عمومی را به فهرستی از مسیرهای مطابق با الگو بسط می‌دهد. این الگو در زمان شروع firejail مطابقت داده می‌شود و در زمان اجرا به‌روزرسانی نمی‌شود. فایل‌هایی که با یک فهرست سیاه مطابقت دارند اما پس از شروع firejail ایجاد می‌شوند، درون سندباکس قابل دسترس خواهند بود. مطابقت به صورت زیر تعریف می‌شود:

- '?' با هر تک‌نویسه‌ای مطابقت دارد
- '*' با هر رشته‌ای مطابقت دارد
- '[' محدوده‌ای از نویسه‌ها را مشخص می‌کند

قابلیت تطبیق الگو با استفاده از دستور glob در glibc پیاده‌سازی شده است. برای اطلاعات بیشتر در مورد نحو نویسه‌های عمومی به man 7 glob مراجعه فرمایید.
گزینه‌های زیر در خط فرمان پشتیبانی می‌شوند: --ist، --rivate-bin،
--0exec، --ead-only، --ead-write، --mpfs و --192
مثال‌ها:

$ firejail --rivate-bin=sh,bash,python*

$ firejail --ist=~/dir[1234]
$ firejail --ead-only=~/dir[1-4]

این قابلیت‌ها به کاربر اجازه می‌دهند تا سیستم فایل ظرفِ یک سندباکس موجود را بازرسی نموده و فایل‌ها را میان ظرف و سیستم فایل میزبان منتقل سازد.

--at=name|pid filename
نوشتن محتوای یک فایل درون ظرف در خروجی استاندارد. ظرف با نام یا PID مشخص می‌شود. اگر خروجی استاندارد یک ترمینال باشد، تمامی نویسه‌های کنترلی ASCII به جز خط جدید و تب افقی جایگزین می‌شوند.
دریافت فایل از ظرف و ذخیره آن روی میزبان در دایرکتوری کاری جاری. ظرف با نام یا PID مشخص می‌شود.
--
فهرست کردن فایل‌های ظرف. ظرف با نام یا PID مشخص می‌شود.
--ut=name|pid
src-filename dest-filename
قرار دادن src-filename در ظرف سندباکس. ظرف با نام یا PID مشخص می‌شود.
مثال‌ها:

$ firejail --0me=mybrowser --rivate
/usr/bin/firefox

$ firejail --er ~/Downloads
drwxr-xr-x netblue netblue 4096 .
drwxr-xr-x netblue netblue 4096 ..
-rw-r--r-- netblue netblue 7847 x11-x305.png
-rw-r--r-- netblue netblue 6800 x11-x642.png
-rw-r--r-- netblue netblue 34139 xpra-clipboard.png

$ firejail --t=mybrowser ~/Downloads/xpra-clipboard.png

$ firejail --ut=mybrowser
xpra-clipboard.png ~/Downloads/xpra-clipboard.png

$ firejail --at=mybrowser ~/.bashrc

هشدار: پشتیبانی از Landlock در firejail آزمایشی و ناپایدار تلقی می‌شود. محتویات landlock-common.inc احتمالاً تغییر خواهد کرد و این قابلیت همچنان در هسته لینوکس در حال گسترش است. همچنین توجه داشته باشید که عملکرد آن با قابلیت‌های موجود در firejail مانند دستورات blacklist، read-only و read-write هم‌پوشانی دارد. قواعد دسترسی به سیستم فایل آن در حال حاضر تنها می‌تواند دسترسی مستقیم به مسیرها را محدود سازد؛ قادر نیست همانند دستورات whitelist و private-etc تنها مسیرهای برگزیده را در سندباکس نمایان کند (همچنین unveil(2) را در OpenBSD ببینید). در نهایت، توجه داشته باشید که بسته به نسخه هسته لینوکس، ممکن است Landlock از تمامی فراخوان‌های سیستمی مربوطه محافظت به عمل نیاورد (برای جزئیات مستندات Landlock در هسته را بررسی فرمایید). از این رو، توصیه می‌شود با Landlock به عنوان یک لایه حفاظتی تکمیلی برخورد شود تا همراه با سایر قابلیت‌های firejail به کار رود (نه به عنوان یک سازوکار کاملاً نفوذناپذیر به تنهایی).

ماژول امنیتی Landlock یک ماژول امنیتی لینوکس است که نخستین بار در نگارش 5.13 هسته لینوکس معرفی گردید. این ابزار به فرآیندهای بدون امتیاز اجازه می‌دهد تا دسترسی خود به سیستم فایل را محدود سازند. پس از اعمال، این محدودیت‌ها هرگز قابل لغو نیستند، و کلیه فرآیندهای فرزند ایجادشده توسط یک فرآیند محدودشده با Landlock این محدودیت‌ها را به ارث می‌برند. ابزار Firejail از Landlock به عنوان یک ویژگی سندباکس تکمیلی پشتیبانی می‌کند. می‌توان از آن جهت اطمینان از اینکه یک برنامه سندباکس‌شده تنها قادر است به فایل‌ها و دایرکتوری‌هایی که صراحتاً مجاز دانسته شده‌اند دسترسی یابد، استفاده کرد. دستور Firejail از بارگذاری مجموعه قوانین چه با یک مجموعه قوانین پایه‌ای (landlock-common.inc را ببینید) و چه با یک مجموعه قوانین سفارشی پشتیبانی می‌کند.

نکات مهم:
- در حال حاضر تنها نسخه 1 از Landlock ABI پشتیبانی می‌شود.

- اگر در خط فرمان هسته از "lsm=" استفاده شده باشد، باید حاوی "landlock" باشد (مانند "lsm=apparmor,landlock")، در غیر این صورت غیرفعال خواهد بود.

- یک فرآیند تنها در صورتی می‌تواند یک مجموعه قوانین Landlock را نصب کند که یا دارای CAP_SYS_ADMIN در مجموعه قابلیت‌های مؤثر خود باشد، یا محدودیت "No New Privileges" برای آن فعال شده باشد. به همین دلیل، فعال‌سازی قابلیت Landlock همچنین موجب خواهد شد Firejail محدودیت "No New Privileges" را صرف‌نظر از فایل پروفایل یا گزینه خط فرمان --0newprivs فعال سازد.

- دسترسی به دایرکتوری /etc به طور خودکار مجاز است. جهت بازنویسی این رفتار، از گزینه خط فرمان --576 همچنین می‌توانید از گزینه --rivate-etc
جهت محدود ساختن دسترسی به دایرکتوری /etc بهره ببرید.

جهت فعال‌سازی خود‌محدودسازی Landlock افزون بر قابلیت‌های امنیتی فعلی Firejail خود، فلگ --il ارسال فرمایید. بدون این گزینه، سایر دستورات Landlock تاثیری نخواهند داشت. مثال:

$ firejail -- /usr/bin/mc

جهت غیرفعال‌سازی خود‌محدودسازی Landlock، از --ignore=landlock.enforce استفاده نمایید.

گزینه --

PID:USER:Sandbox Name:Command

گزینه --ree ساختار درختی فرآیندهای در حال اجرا در سندباکس را چاپ می‌کند. قالب هر مدخل فرآیند به قرار زیر است:

PID:USER:Sandbox Name:Command

گزینه --op شبیه به دستور top در یونیکس است، با این تفاوت که تنها روی سندباکس‌ها اعمال می‌شود.

گزینه --0tstats آمارهای شبکه را برای سندباکس‌های فعالی که فضاهای نام جدید شبکه نصب کرده‌اند چاپ می‌کند.

فیلدهای (ستون‌های) در دسترس به ترتیب الفبا برای گزینه‌های --op و --0tstats به شرح زیر هستند:

دستوری که برای راه‌اندازی سندباکس به کار رفته است.
میزان مصرف پردازنده، سهم سندباکس از زمان سپری‌شده پردازنده از آخرین به‌روزرسانی صفحه.
شناسه یکتای فرآیند (PID) برای وظیفه کنترل‌کننده سندباکس.
تعداد فرآیندهای در حال اجرا در سندباکس، از جمله فرآیند کنترل‌کننده.
اندازه حافظه مقیم (KiB)، حافظه فیزیکی سواپ‌نشده سندباکس. این مقدار مجموع مقادیر RES برای تمامی فرآیندهای در حال اجرا در سندباکس است.
سرعت دریافت شبکه.
نام سندباکس، در صورت وجود.
اندازه حافظه اشتراکی (KiB)، حافظه به اشتراک گذاشته‌شده با سایر فرآیندها را منعکس می‌سازد. این مقدار مجموع مقادیر SHR برای تمامی فرآیندهای در حال اجرا در سندباکس، از جمله فرآیند کنترل‌کننده است.
سرعت ارسال شبکه.
مدت‌زمان کارکرد سندباکس در قالب ساعت:دقیقه:ثانیه.
مالک سندباکس.

برای سادگی، اعتبارسنجی نام یکسانی برای گزینه‌های متعدد به کار گرفته می‌شود. قوانین:

طول نام باید بین ۱ تا ۲۵۳ نویسه باشد. نام تنها می‌تواند شامل حروف ASCII، ارقام و نویسه‌های ویژه "-._" باشد (یعنی نام نمی‌تواند حاوی فاصله‌ها یا نویسه‌های کنترلی باشد). نام نمی‌تواند تنها از ارقام تشکیل شده باشد. نویسه‌های نخست و پایانی باید یک حرف ASCII یا رقم باشند و نام می‌تواند نویسه‌های ویژه را در میانه خود جای دهد.

برای پیکربندی یک شل محدودشده، /bin/bash را با /usr/bin/firejail در فایل /etc/passwd برای هر کاربری که باید محدود گردد جایگزین نمایید. همچنین می‌توانید /usr/bin/firejail را در دستور adduser مشخص کنید:

adduser --ell /usr/bin/firejail username

آرگومان‌های اضافی ارسالی به باینری اجرایی firejail پس از ورود، در فایل /etc/firejail/login.users اعلان می‌شوند.

پهنای باند شبکه یک منبع گران‌بها است که میان تمامی سندباکس‌های در حال اجرا بر روی یک سیستم به اشتراک گذاشته می‌شود. شکل‌دهی ترافیک به کاربر امکان می‌دهد با کنترل میزان داده‌های ورودی و خروجی به سندباکس‌ها، عملکرد شبکه را بهبود بخشد.

ابزار Firejail یک شکل‌دهنده محدودکننده نرخ ساده بر پایه دستور tc لینوکس پیاده‌سازی می‌کند. این شکل‌دهنده در سطح سندباکس عمل می‌کند و تنها برای سندباکس‌های پیکربندی‌شده با فضاهای نام جدید شبکه قابل استفاده است.

تنظیم محدودیت‌های نرخ:

$ firejail --me|pid set network download upload

پاک کردن محدودیت‌های نرخ:

$ firejail --me|pid clear network

وضعیت:

$ firejail --me|pid status

که در آن:
name - نام سندباکس
pid - شناسه فرآیند (pid) سندباکس
network - رابط شبکه همان‌طور که توسط گزینه --0t استفاده شده است
download - سرعت دانلود به KB/s (کیلوبایت بر ثانیه)
upload - سرعت آپلود به KB/s (کیلوبایت بر ثانیه)

مثال:
$ firejail --0me=mybrowser --0t=eth0 /usr/bin/firefox &
$ firejail --
$ firejail --tus
$ firejail --r eth0

این برنامه نرم‌افزار آزاد است؛ شما می‌توانید آن را تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License) همان‌گونه که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، چه نسخه ۲ مجوز یا (به انتخاب خود) هر نسخه بعدی، بازتوزیع نموده و/یا تغییر دهید.

صفحه وب: https://firejail.wordpress.com

firemon(1), firecfg(1), firejail-profile(5), firejail-login(5), firejail-users(5), jailcheck(1)

https://github.com/netblue30/firejail/wiki, https://github.com/netblue30/firejail

Mar 2026 0.9.80