SYD(1) General Commands Manual SYD(1)

syd - سندباکس امنیتی سبک و جداسازی فرآیندها بر مبنای seccomp و لندلاک

syd [-acefhlmpqtxEPV] [--] {command [arg...]}

syd --api

syd --check

syd --el

syd --sh

ابزار Syd ابزاری است که از فراخوانی سیستمی seccomp(2) برای سندباکس کردن فرآیندها در سیستم‌های لینوکس نسخه 5.19 یا جدیدتر استفاده می‌کند. این ابزار کنترل دسترسی سیستم فایل و شبکه یک فرآیند را بر اساس هر فراخوانی سیستمی بدون نیاز به امتیازات کاربر ریشه (root) امکان‌پذیر می‌سازد. ابزار Syd برای سهولت استفاده در طیف گسترده‌ای از معماری‌ها شامل x86، x86_64، x32، armv7، aarch64، loongarch64، mips، mips64، mips64el، ppc، ppc64، ppc64le، riscv64 و s390x طراحی شده است و هدف آن فراهم آوردن کنترل دسترسی ساده، منعطف و قابل اطمینان برای کاربران لینوکس است.

عملکرد اصلی Syd بر محدود کردن دسترسی فرآیند به منابع از طریق چندین سازوکار تمرکز دارد:

  • Bind Mounts: درون یک فضای نام مانت (mount namespace) برای اعمال محدودیت‌ها در سطح سیستم فایل مجازی (VFS) مانند read-only، nodev، noexec، nosuid و nosymfollow استفاده می‌شود.
  • Landlock: محدودیت‌های مسیر فقط‌خواندنی و خواندن-نوشتن را در سطح هسته اعمال می‌کند.
  • seccomp-bpf: فیلترهای کاربری Secure Computing را برای سندباکس‌سازی در فضای هسته به کار می‌برد.
  • seccomp-notify: سندباکس‌سازی در فضای هسته را با بازگشت (fallback) به فضای کاربری جهت بازگشایی اشاره‌گر آرگومان‌ها در فراخوانی‌های سیستمی، شامل مسیرها و آدرس‌های شبکه، فراهم می‌کند. بررسی‌های دسترسی از الگوهای سبک شل یونیکس و نمادگذاری CIDR استفاده می‌کنند و به‌طور پیش‌فرض فراخوانی‌های سیستمی را با EACCES رد می‌نمایند، در حالی که برای کاهش بردارهای حمله زمان بررسی تا زمان استفاده (TOCTOU)، تلاش می‌کنند فراخوانی‌های موفق را شبیه‌سازی کنند.

پیش‌نیازهای Syd شامل یک هسته لینوکس با پشتیبانی از فراخوانی‌های سیستمی pidfd_getfd(2) و pidfd_send_signal(2)، عملیات SECCOMP_USER_NOTIF_FLAG_CONTINUE در سازوکار Secure Computing، و ترجیحاً گزینه هسته CONFIG_CROSS_MEMORY_ATTACH است. برای شبیه‌سازی فراخوانی سیستمی، Syd از عملیات seccomp با نام SECCOMP_IOCTL_NOTIF_ADDFD استفاده می‌کند. ابزار Syd همچنین فلگ SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV را تنظیم می‌کند تا وقفه‌ها در طول ردگیری به‌درستی مدیریت شوند. در حالی که نسخه لینوکس 5.19 یا جدیدتر الزامی است، برای پشتیبانی از Landlock ابزار Syd نیازمند هسته‌ای است که با گزینه CONFIG_LSM_LANDLOCK پیکربندی شده و از Landlock ABI نسخه 3 پشتیبانی کند؛ برنامه کمکی syd-lock(1) برای بررسی پشتیبانی هسته در دسترس است. گزینه‌های هسته لینوکس CONFIG_KCMP و CONFIG_UNIX_DIAG توصیه می‌شوند.

به‌طور پیش‌فرض، Syd فضای منابع قابل دسترسی برای فرآیندهای درون سندباکس را تا حد ممکن محدود می‌کند. بخش SECURITY در صفحه راهنمای syd(7) تمامی اقدامات امن‌سازی و گزینه‌های trace/allow_unsafe_* را برای کاستن از محدودیت‌های خاص در صورت نیاز فهرست کرده است.

گزینه‌های زیر پشتیبانی می‌شوند:

-h, --help نمایش راهنمای استفاده و خروج.
-V, --version نمایش نسخه و خروج.
-C, --check چاپ اطلاعات پشتیبانی از سندباکس در سیستم جاری و خروج.
-v, --verbose افزایش پرگویی، معادل با افزایش یک واحدی log/verbose.
-c سازگاری با شل لاگین (login shell)
باعث می‌شود دستور تحت یک شل با پروفایل user اجرا شود.
شل پیش‌فرض برای اجرا /bin/sh است.
از متغیر محیطی SYD_SHELL برای بازنویسی آن استفاده کنید.
-f سازگاری با شل لاگین.
باعث می‌شود Syd پروفایل user را در زمان راه‌اندازی پردازش و تجزیه کند.
-l, --login سازگاری با شل لاگین
باعث می‌شود Syd پروفایل user را در زمان راه‌اندازی پردازش و تجزیه کند.
-q فعال‌سازی حالت راه‌اندازی سریع (quick boot) برای زمان شروع سریع‌تر.
این گزینه باید به عنوان نخستین گزینه ارسال شود، در غیر این صورت نادیده گرفته خواهد شد.
برای ایمنی این گزینه، به توضیحات متغیر محیطی SYD_QUICK_BOOT مراجعه کنید.
-x فعال‌سازی حالت trace معروف به اجرای آزمایشی ("dry run").
در این حالت، Syd فراخوانی‌های سیستمی را حتی در صورت بروز نقض دسترسی مجاز می‌داند.
این حالت همراه با ثبت لاگ گسترده می‌تواند برای ساخت خودکار پروفایل‌های سندباکس استفاده شود.
ابزار pandora(1) را ببینید که از حالت ردگیری Syd برای تولید خودکار پروفایل‌های سندباکس استفاده می‌کند.
-m config پیکربندی سندباکس در طول مقداردهی اولیه (init)، قابل تکرار است.
-p name استفاده از یک پروفایل سندباکس در طول مقداردهی اولیه، قابل تکرار است.
-P path اجرای یک فایل پیکربندی در طول مقداردهی اولیه، قابل تکرار است.
-a alias تنظیم نام مستعار (alias) برای دستور. به عنوان argv[0] به برنامه ارسال می‌شود.
-e از -e var=val برای قرار دادن var=val در متغیرهای محیطی دستور استفاده کنید، قابل تکرار است.
از -e var برای حذف var از متغیرهای محیطی دستور استفاده کنید، قابل تکرار است.
از -e var= برای عبور دادن مستقیم یک متغیر محیطی ناامن استفاده کنید، قابل تکرار است.
-t timeout مشخص کردن مهلت زمانی سندباکس در قالبی خوانا برای انسان.
معادل گزینه timeout است، برای اطلاعات بیشتر به syd(2) مراجعه کنید.
-E mode صدور (export) قواعد Secure Computing با قالب داده‌شده در خروجی استاندارد و خروج.
حالت (mode) باید یکی از مقادیر bpf یا pfc باشد:
قالب bpf یا Berkeley Packet Filter یک قالب دودویی و ماشین‌خوان است، در حالی که
قالب pfc یا Pseudo Filter Code یک قالب متنی و انسان‌خوان است.
--api خروجی مشخصات API مربوط به syd(2) در قالب JSON.
این مشخصات به منظور تسهیل در ایجاد رابط‌های زبان‌های برنامه‌نویسی در نظر گرفته شده است.
این مشخصات همچنین از طریق مسیر جادویی /dev/syd در دسترس است.
--el چاپ syd.el که پیاده‌سازی Emacs Lisp رابط stat(2) در Syd است.
این فایل همچنین از طریق مسیر جادویی /dev/syd.el در دسترس است.
--sh چاپ یک اسکریپت شل که تابع کمکی esyd را تعریف می‌کند.
این فایل همچنین از طریق مسیر جادویی /dev/syd.sh در دسترس است.
با POSIX sh، bash و zsh کار می‌کند.
می‌توانید از eval "$(syd --sh)" در فایل راه‌اندازی شل خود استفاده کنید.

ابزار Syd دستوری را با آرگومان‌های مشخص‌شده درون یک سندباکس اجرا می‌کند و با همان وضعیت خارج می‌شود. سندباکس می‌تواند با استفاده از آرگومان‌های خط فرمان و فایل‌های پیکربندی ساخته شود. در صورتی که قفل سندباکس اجازه دهد، رابط کاربری syd(2) API برای پیکربندی پویا در دسترس است. می‌توان یک سوکت IPC را با دستور ipc برای پیکربندی Syd از طریق یک سوکت یونیکس تنظیم کرد. برای اطلاعات بیشتر به صفحه راهنمای syd(2) مراجعه کنید.

SYD_IPC مشخص کردن آدرس سوکت یونیکس برای پیکربندی در زمان اجرا.
معادل دستور ipc است، صفحه راهنمای syd(2) را ببینید.
دستور ipc نسبت به این متغیر محیطی اولویت دارد.
SYD_LOG تنظیم سطح لاگ روی emerg، alert، crit، error، warn، notice، info یا debug.
SYD_LOG_BUF_LEN تنظیم ظرفیت بافر حلقه‌ای syslog(2).
به‌طور پیش‌فرض، بافر حلقه‌ای روی پشته (stack) با اندازه 256k تخصیص می‌یابد.
تنظیم این متغیر باعث می‌شود Syd بافر حلقه‌ای را روی هیپ (heap) با اندازه مشخص‌شده توسط کاربر تخصیص دهد.
مقدار با استفاده از کریت parse-size تجزیه می‌شود.
برای اطلاعات درباره قالب‌بندی به مستندات آن مراجعه کنید.
SYD_LOG_FD تنظیم توصیف‌کننده فایل لاگ، پیش‌فرض stderr(3) است.
مقادیر منفی به عنوان یک میان‌بر برای غیرفعال‌سازی ثبت لاگ مجاز هستند.
مقادیر مثبت باید توصیف‌کننده‌های معتبر باشند، در غیر این صورت Syd با خطای EBADF ("شماره فایل نامعتبر است") خارج می‌شود.
SYD_PDS تنظیم سیگنال مرگ والد با PR_SET_PDEATHSIG(2const) با استفاده از نام یا شماره سیگنال.
SYD_PID_FN تنظیم نام فایل pid؛ باعث می‌شود Syd در زمان راه‌اندازی شناسه فرآیند خود را در این فایل بنویسد.
فایل نباید از قبل وجود داشته باشد و با مجوزهای خواندن فقط برای کاربر ایجاد خواهد شد.
SYD_NPROC تنظیم تعداد رشته‌های اصلی مدیریت‌کننده فراخوانی‌های سیستمی، پیش‌فرض تعداد پردازنده‌ها است.
تعداد باید حداقل ۱ باشد.
SYD_NPROC_MAX تنظیم حداکثر تعداد رشته‌های مدیریت‌کننده فراخوانی‌های سیستمی، پیش‌فرض usize::MAX است.
تعداد باید بزرگ‌تر از SYD_NPROC باشد.
SYD_CHDIR تغییر دایرکتوری کاری جاری به یک دایرکتوری امن در هنگام راه‌اندازی.
اگر هیچ آرگومان اختیاری داده نشود، این رفتار اعمال می‌شود.
SYD_COMPAT_SOCKET مجاز شمردن فراخوانی سیستمی قدیمی و تسهیم‌کننده socketcall(2).
این مورد تنها برای سازگاری با libcهایی که هنوز از فراخوانی‌های سیستمی جدیدتر غیرتسهیم‌شده موجود از نسخه لینوکس 4.3 پشتیبانی نمی‌کنند لازم است.
معادل با trace/allow_unsafe_socketcall:1 است.
SYD_SHELL انتخاب شل برای اجرا هنگام فراخوانی به عنوان شل لاگین. به کلمات تفکیک نمی‌شود.
مقدار پیش‌فرض /usr/bin/bash --login --noprofile --norc --restricted است.
SYD_DUMP_SCMP صدور قواعد Secure Computing با قالب داده‌شده، معادل با گزینه -E است.
SYD_SKIP_SCMP صرف‌نظر کردن از محدودسازی seccomp(2) برای رشته‌های مختص Syd.
این کار ناامن است و فقط باید برای پروفایل‌بندی استفاده شود.
هنگامی که این متغیر تنظیم شده باشد، Syd به متغیر محیطی RUST_BACKTRACE احترام می‌گذارد.
این متغیر نادیده گرفته می‌شود مگر اینکه Syd با ویژگی کارگو trusted ساخته شده باشد.
SYD_SKIP_NAME صرف‌نظر کردن از تصادفی‌سازی نام رشته‌های Syd که برای اشکال‌زدایی مفید است.
این متغیر نادیده گرفته می‌شود مگر اینکه Syd با ویژگی کارگو trusted ساخته شده باشد.
SYD_FORCE_NO_UNIX_DIAG غیرفعال‌سازی اجباری عیب‌یابی سوکت یونیکس، برای آزمودن مسیرهای بازگشتی مورد استفاده در هسته‌های پیکربندی‌شده بدون CONFIG_UNIX_DIAG.
این مورد برای آزمودن در نظر گرفته شده و نباید در محیط عملیاتی استفاده شود.
این متغیر نادیده گرفته می‌شود مگر اینکه Syd با ویژگی کارگو trusted ساخته شده باشد.
SYD_FORCE_NO_SYMLINKS اجبار به استفاده از فلگ تفکیک RESOLVE_NO_SYMLINKS در مرز فراخوانی open(2).
معادل با trace/force_no_symlinks:1 است.
SYD_FORCE_NO_MAGICLINKS اجبار به استفاده از فلگ تفکیک RESOLVE_NO_MAGICLINKS در مرز فراخوانی open(2).
معادل با trace/force_no_magiclinks:1 است.
SYD_FORCE_NO_XDEV اجبار به استفاده از فلگ تفکیک RESOLVE_NO_XDEV در مرز فراخوانی open(2).
معادل با trace/force_no_xdev:1 است.
SYD_FORCE_CLOEXEC اجبار به بستن در هنگام اجرا (close-on-exec) برای توصیف‌کننده‌های فایل.
معادل با trace/force_cloexec:1 است.
SYD_FORCE_RAND_FD استفاده از توصیف‌کننده‌های فایل تصادفی برای امن‌سازی در برابر استفاده مجدد از fd.
معادل با trace/force_rand_fd:1 است.
این متغیر محیطی در صورت عدم پشتیبانی از kcmp(2) نادیده گرفته می‌شود.
SYD_FORCE_RO_OPEN رد کردن فراخوانی‌های ایجاد و نوشتن open(2).
معادل با trace/force_ro_open:1 است.
SYD_FORCE_WX_OPEN رد کردن فراخوانی‌های ایجاد و نوشتن open(2) برای فایل‌های اجرایی.
معادل با trace/force_wx_open:1 است.
SYD_FORCE_LOCAL_NET اجبار به شبکه محلی، بازنویسی تمامی آدرس‌ها به loopback برای bind/connect.
معادل با trace/force_local_net:1 است.
SYD_FORCE_TTY اجبار به خروجی TTY که به صورت JSON قالب‌بندی‌شده زیبا (pretty-printed) است.
SYD_QUIET_TTY اجبار به خروجی TTY بی‌صدا که به صورت JSON خط‌محور است.
SYD_PROXY_HOST بازنویسی مقدار پیش‌فرض proxy/ext/host،
اگر مقدار یک نام میزبان (hostname) باشد و نه یک آدرس IP،
ابزار Syd این نام میزبان را در هنگام راه‌اندازی حل (resolve) کرده و یک IP پاسخ را به صورت تصادفی انتخاب می‌کند.
SYD_PROXY_PORT بازنویسی مقدار پیش‌فرض proxy/ext/port.
SYD_PROXY_UNIX تنظیم مقدار پیش‌فرض برای proxy/ext/unix که مقدار proxy/ext/host را بازنویسی می‌کند.
SYD_QUICK_BOOT فعال‌سازی حالت راه‌اندازی سریع؛ این گزینه شروع Syd را به میزان قابل توجهی سریع‌تر می‌کند:
با این حال، راه‌اندازی سریع یک لایه دفاعی در برابر برخی گریزهای کانتینری را حذف می‌کند!
از این گزینه زمانی استفاده کنید که مرتباً syd(1) یا syd-oci(1) را مجدداً اجرا می‌کنید،
همان‌طور که Exherbo Linux در طول cave-generate-metadata(1) این کار را انجام می‌دهد.
این متغیر نادیده گرفته می‌شود مگر اینکه Syd با ویژگی کارگو trusted ساخته شده باشد.
SYD_RLIMIT_AS تنظیم مقدار پیش‌فرض برای rlimit/as.
SYD_RLIMIT_CORE تنظیم مقدار پیش‌فرض برای rlimit/core.
SYD_RLIMIT_DATA تنظیم مقدار پیش‌فرض برای rlimit/data.
SYD_RLIMIT_FSIZE تنظیم مقدار پیش‌فرض برای rlimit/fsize.
SYD_RLIMIT_MEMLOCK تنظیم مقدار پیش‌فرض برای rlimit/memlock.
SYD_RLIMIT_NICE تنظیم مقدار پیش‌فرض برای rlimit/nice.
SYD_RLIMIT_NOFILE تنظیم مقدار پیش‌فرض برای rlimit/nofile.
SYD_RLIMIT_NPROC تنظیم مقدار پیش‌فرض برای rlimit/nproc.
SYD_RLIMIT_RTPRIO تنظیم مقدار پیش‌فرض برای rlimit/rtprio.
SYD_RLIMIT_RTTIME تنظیم مقدار پیش‌فرض برای rlimit/rttime.
SYD_RLIMIT_SIGPENDING تنظیم مقدار پیش‌فرض برای rlimit/sigpending.
SYD_RLIMIT_STACK تنظیم مقدار پیش‌فرض برای rlimit/stack.
SYD_TMOUT تنظیم مقدار پیش‌فرض برای timeout.
SYD_NO_CROSS_MEMORY_ATTACH غیرفعال‌سازی اتصال حافظه متقاطع (cross memory attach) و استفاده بی قید و شرط از proc_pid_mem(5).
SYD_PROC_PID_MEM_FALLBACK به‌طور پیش‌فرض، Syd بدون قید و شرط از اتصال حافظه متقاطع استفاده می‌کند.
تنظیم این متغیر باعث می‌شود در صورت شکست process_vm_readv(2) یا process_vm_writev(2) با خطای ENOSYS، Syd به‌طور خودکار به proc_pid_mem(5) بازگردد،
که نشان‌دهنده عدم پشتیبانی هسته از این فراخوانی‌های سیستمی است.
متغیر SYD_NO_CROSS_MEMORY_ATTACH نسبت به این متغیر اولویت دارد.
SYD_ASSUME_KERNEL بازنویسی uname(2) برای دریافت نسخه هسته لینوکس میزبان مورد استفاده در تشخیص قابلیت‌ها.
ابزار Syd نسخه اصلی (major) و فرعی (minor) هسته را در مرز uname(2) درون سندباکس گزارش می‌کند.
نسخه جزئی (micro) در هر اجرای Syd تصادفی می‌شود تا از نشت اطلاعات جلوگیری به عمل آید.
این متغیر محیطی نادیده گرفته می‌شود مگر اینکه Syd با ویژگی "trusted" ساخته شده باشد.
SYD_PALUDIS_LPATH بازنویسی گزینه sandbox/lpath برای پروفایل paludis، پیش‌فرض خاموش (off).
SYD_PALUDIS_NPATH بازنویسی گزینه sandbox/npath برای پروفایل paludis، پیش‌فرض خاموش (off).
SYD_PALUDIS_LIST بازنویسی گزینه sandbox/list برای پروفایل paludis، پیش‌فرض خاموش (off).
SYD_PALUDIS_WALK بازنویسی گزینه sandbox/walk برای پروفایل paludis، پیش‌فرض خاموش (off).
SYD_PALUDIS_IOCTL بازنویسی گزینه sandbox/ioctl برای پروفایل paludis، پیش‌فرض خاموش (off).
SYD_PALUDIS_PASSFD بازنویسی گزینه sandbox/passfd برای پروفایل paludis، پیش‌فرض خاموش (off).
SYD_USER_LPATH بازنویسی گزینه sandbox/lpath برای پروفایل user، پیش‌فرض روشن (on).

هشت سطح لاگ وجود دارد: emerg، alert، crit، error، warn، notice، info و debug با اولویت نزولی. سطح لاگ می‌تواند با متغیر محیطی SYD_LOG تنظیم شود. لاگ‌ها به stderr(3) ارسال می‌شوند مگر اینکه یک توصیف‌کننده فایل با متغیر محیطی SYD_LOG_FD مشخص شده باشد. ابزار Syd لاگ‌ها را در قالب خطوط JSON ثبت می‌کند. در زیر فهرستی از کلیدهای پرکاربرد لاگ به همراه توضیحات آن‌ها آمده است:

KEY DESCRIPTION
id شناسه سندباکس به صورت ۶۴ نویسه هگزادسیمال با حروف کوچک.
ctx زمینه (Context) ورودی لاگ، مانند access، safesetid، segvguard و غیره.
cap قابلیت سندباکس
act اقدام سندباکس: allow، warn، deny، panic، stop، abort، kill یا exit
pid شناسه فرآیند
path آرگومان مسیر در فراخوانی سیستمی
addr آرگومان آدرس شبکه در فراخوانی سیستمی، مانند 127.0.0.1!22
unix آرگومان آدرس سوکت یونیکس در فراخوانی سیستمی
ipv نسخه IP آدرس شبکه در فیلد addr (۴ یا ۶)
abs در صورتی که آدرس سوکت در فیلد unix یک سوکت یونیکس انتزاعی باشد، مقدار True دارد
sys نام فراخوانی سیستمی
arch معماری فراخوانی سیستمی
args آرگومان‌های فراخوانی سیستمی
cmd نام فرآیند، یا خط فرمان در صورتی که خروجی لاگ یک TTY باشد یا ویژگی log فعال باشد
cwd دایرکتوری کاری جاری فرآیند سندباکس
uid شناسه کاربر
time برچسب زمانی در قالبی سازگار با ISO8601، در حال حاضر YYYYMMDDThhmmssZ
قالب زمان ممکن است تغییر کند اما همواره سازگار با ISO8601 باقی خواهد ماند.
در صورت بروز خطای قالب‌بندی، برچسب زمانی به صورت یک عدد صحیح چاپ می‌شود.
err اطلاعات خطا
msg پیام‌های اطلاع‌رسانی
tip پیام‌های آموزشی درباره نحوه پیکربندی Syd

ابزار Syd با همان کد خروج فرآیند سندباکس خارج می‌شود. اگر فرآیند سندباکس با یک سیگنال خاتمه یابد، Syd با مقدار ۱۲۸ به‌علاوه مقدار سیگنال خارج می‌شود. در صورتی که در ایجاد یا انتظار برای فرآیند سندباکس خطایی رخ دهد، Syd با مقدار errno(3) که بیانگر وضعیت خطاست خارج می‌شود. ابزار Syd در زمان بروز پنیک (panic) با کد ۱۰۱ خارج می‌شود. ابزار Syd در خطاهای مهلک تخصیص‌دهنده حافظه (allocator) با ۱۰۲ خارج می‌شود. ابزار Syd در صورت اتمام مهلت زمانی سندباکس با ۱۲۴ خارج می‌شود.

syd(2), syd(5), syd(7), syd-lock(1), syd-ls(1), syd-mdwe(1), syd-ring(1), sydtutorial(7)

توسعه و نگهداری توسط Ali Polatel. کدهای منبع به‌روز را می‌توانید در https://gitlab.exherbo.org/sydbox/sydbox.git و روی Radicle در rad:z38HCnbmcDegA2BMxuPaPRPMdp6wF بیابید. گزارش‌های اشکال و وصله‌ها را می‌توان به https://gitlab.exherbo.org/groups/sydbox/-/issues ارسال کرد. گفتگو و تبادل نظر در کانال #sydbox در Libera Chat یا در #sydbox:mailstation.de در Matrix.

2026-09-01