| AA-EXEC(1) | AppArmor | AA-EXEC(1) |
نام (NAME)
aa-exec - اجرای برنامه تحت پروفایل یا فضاینام امنیتی AppArmor مشخص
خلاصه دستور (SYNOPSIS)
aa-exec [گزینهها] [--] [<دستور> ...]
توضیحات (DESCRIPTION)
دستور aa-exec برای راهاندازی و اجرای یک برنامه تحت محدودیت پروفایل یا فضاینام (namespace) مشخص به کار میرود. اگر هم پروفایل و هم فضاینام مشخص شوند، دستور تحت آن پروفایل در فضاینام جدید سیاست اجرا و محدود خواهد شد. اگر فقط یک فضاینام مشخص شود، از نام پروفایل محدودیت فعلی استفاده میشود. اگر نه پروفایل و نه فضاینام مشخص نشوند، دستور با استفاده از اتصال استاندارد پروفایل اجرا خواهد شد (یعنی مانند زمانی که بدون دستور aa-exec اجرا شده باشد).
اگر قرار است آرگومانها به <دستور> فراخوانیشده توسط aa-exec پاس داده شوند، باید از -- برای جداسازی آرگومانهای aa-exec از دستور استفاده شود:
aa-exec -p profile1 -- ls -l
گزینهها (OPTIONS)
دستور aa-exec آرگومانهای زیر را میپذیرد:
- -p PROFILE, --profile=PROFILE
- محدود کردن <دستور> با PROFILE. اگر PROFILE مشخص نشود، از نام پروفایل فعلی (احتمالاً unconfined) استفاده میشود.
- -n NAMESPACE, --namespace=NAMESPACE
- استفاده از پروفایلها در NAMESPACE. این کار باعث انتقال محدودیت به فضاینام جدید پروفایل میشود.
- -i, --immediate
- انتقال به PROFILE قبل از اجرای <دستور>. این کار اجرای <دستور> را تابع قوانین انتقال exec در پروفایل فعلی میکند.
- -v, --verbose
- نمایش دستوراتی که در حال اجرا هستند.
- -d, --debug
- نمایش دستورات و کدهای خطا.
- --
- نشاندهنده پایان گزینهها است و پردازش بیشتر گزینهها را غیرفعال میکند. هر آرگومانی بعد از -- به عنوان آرگومانهای دستور در نظر گرفته میشود. این برای پاس دادن آرگومانها به <دستور> فراخوانیشده توسط aa-exec مفید است.
محدودیتها (RESTRICTIONS)
دستور aa-exec از aa_change_profile(3) برای تغییر محدودیت امنیتی برنامه استفاده میکند. استفاده از aa_change_profile(3) ممکن است توسط سیاست به گونهای محدود شده باشد که باعث بروز خطا یا نتایجی متفاوت از انتظار شود.
حتی هنگام استفاده از aa-exec از وضعیت نامحدود (unconfined)، محدودیتهای درون سیاست میتوانند باعث بروز خطا شوند یا سبب شوند محدودیت اعمالشده با آنچه درخواست شده متفاوت باشد.
برای جزئیات بیشتر به مستندات محدودیت نامحدود غیرممتاز (unprivileged unconfined restriction) مراجعه کنید:
https://gitlab.com/apparmor/apparmor/-/wikis/unprivileged_unconfined_restriction
پشتهسازی (STACKING)
دستور aa-exec میتواند برای تنظیم پشتهای از پروفایلها به عنوان محدودیت امنیتی استفاده شود. هنگامی که یک برنامه توسط یک پشته محدود میشود، تمام پروفایلهای موجود در پشته به گونهای بررسی میشوند که گویی خود پروفایلِ محدودکننده برنامه هستند. میانجیگری و تصمیمگیری نهایی، اشتراک دسترسیهای مجاز در هر یک از پروفایلهای موجود در پشته خواهد بود.
پروفایلهای موجود در یک پشته به طور مستقل رفتار میکنند. هر پروفایل میتواند پرچمها و انتقالهای پروفایل مختص به خود را داشته باشد. در طول یک فراخوانی exec، هر پروفایل انتقال خود را مشخص میکند و نتایج برای تشکیل یک پشته استانداردشده (canonicalized) جدید با یکدیگر ترکیب میشوند.
جداکننده پروفایل که نشاندهنده یک پشته است، دنباله کاراکتری //& میباشد. بنابراین یک پشته را میتوان به شکل زیر بیان کرد:
$ aa-exec -p "unconfined//&firefox" -- bash $ ps -Z LABEL PID TTY TIME CMD unconfined 30714 pts/12 00:00:00 bash firefox//&unconfined (unconfined) 31160 pts/12 00:00:00 bash firefox//&unconfined (unconfined) 31171 pts/12 00:00:00 ps
فضاهای نام (NAMESPACES)
دستور aa-exec میتواند برای ورود به محدودیت امنیتی در یک فضاینام سیاست (policy namespace) دیگر استفاده شود، به شرطی که آن فضاینام وجود داشته باشد، قابل مشاهده باشد، و پروفایل نیز در آن فضاینام موجود باشد. توجه داشته باشید برنامههایی که در داخل فضاینام اجرا میشوند قادر به خروج از آن نخواهند بود و ممکن است توسط محدودیتهای اضافی پیرامون فضاهای نام محدودتر شوند. فایلها و منابعی که برای والد اجراکننده برنامه قابل مشاهده هستند ممکن است در فضاینام سیاست قابل مشاهده نباشند که این امر منجر به رد دسترسی (access denial) میشود.
برای ورود به یک فضاینام سیاست، نام فضاینام با استفاده از پیشوند و پسوند : به ابتدای نام پروفایل اضافه میشود.
به عنوان مثال:
$ aa-exec -p :ex1:unconfined -- bash $ ps -Z LABEL PID TTY TIME CMD - 30714 pts/12 00:00:00 bash unconfined 34372 pts/12 00:00:00 bash unconfined 34379 pts/12 00:00:00 ps
محدودیت فرآیندهای خارج از فضاینام ممکن است قابل مشاهده نباشد که در این صورت محدودیت با یک - نمایش داده میشود. اگر سیاست به صورت پشتهای باشد ممکن است تنها بخشی از محدودیت قابل مشاهده باشد. با این حال محدودیتها معمولاً از فضاینام والد سیاست به طور کامل قابل مشاهده هستند.
به عنوان مثال، محدودیت فرزند را میتوان در والد بررسی و مشاهده کرد:
$ ps -Z 34372 LABEL PID TTY STAT TIME COMMAND :ex1:unconfined 34372 pts/12 S+ 0:00 bash
و در صورت پشتهسازی با فضاهای نام:
$ aa-exec -p "unconfined//&:ex1:unconfined" -- bash $ ps -Z LABEL PID TTY TIME CMD - 30714 pts/12 00:00:00 bash unconfined 36298 pts/12 00:00:00 bash unconfined 36305 pts/12 00:00:00 ps
در حالی که از فضاینام والد محدودیت کامل قابل مشاهده است:
$ ps -Z 36298 LABEL PID TTY STAT TIME COMMAND unconfined//&:ex1:unconfined 36298 pts/12 S+ 0:00 bash
گزارش اشکال (BUGS)
اگر اشکالی پیدا کردید، لطفاً آن را در نشانی زیر گزارش دهید: https://gitlab.com/apparmor/apparmor/-/issues
همچنین ببینید (SEE ALSO)
apparmor(7)، apparmor.d(5)، aa_change_profile(3)، aa_change_onexec(3) و https://wiki.apparmor.net.
| 2026-03-10 | AppArmor 4.1.7 |