AA-EASYPROF(8) AppArmor AA-EASYPROF(8) نام (NAME) aa-easyprof - تولید آسان و سریع پروفایل‌های AppArmor. خلاصه دستور (SYNOPSIS) aa-easyprof [گزینه] <مسیر فایل باینری> توضیحات (DESCRIPTION) aa-easyprof یک رابط کاربری ساده برای ایجاد و تولید خط‌مشی‌های (policy) AppArmor فراهم می‌کند. aa-easyprof از به‌کارگیری قالب‌ها (templates) و گروه‌های خط‌مشی (policy groups) برای پروفایل‌سازی سریع برنامه‌ها پشتیبانی می‌کند. لطفاً توجه داشته باشید که اگرچه این ابزار می‌تواند به تولید خط‌مشی کمک کند، اما میزان کارایی آن به کیفیت قالب‌ها، گروه‌های خط‌مشی و انتزاع‌های (abstractions) استفاده‌شده وابسته است. همچنین، این ابزار ممکن است خط‌مشی‌هایی با محدودیت‌های کمتر نسبت به ایجاد دستی یا استفاده از aa-genprof و aa-logprof ایجاد نماید. گزینه‌ها (OPTIONS) aa-easyprof آرگومان‌های زیر را می‌پذیرد: -t TEMPLATE, --template=TEMPLATE مشخص می‌کند از کدام قالب استفاده شود. می‌تواند یک قالب سیستمی از مسیر /usr/share/apparmor/easyprof/templates یا نام فایلی از قالب مورد نظر را مشخص کند. در صورت عدم تعیین، از /usr/share/apparmor/easyprof/templates/default استفاده می‌شود. -p POLICYGROUPS, --policy-groups=POLICYGROUPS تعیین POLICY به‌صورت فهرستی از گروه‌های خط‌مشی که با کاما از هم جدا شده‌اند. برای مشاهده گروه‌های خط‌مشی پشتیبانی‌شده به --list-templates مراجعه کنید. گروه‌های خط‌مشی موجود در مسیر /usr/share/apparmor/easyprof/policy قرار دارند. گروه‌های خط‌مشی صرفاً دسته‌بندی‌هایی از قوانین یا خط‌مشی‌های AppArmor هستند. آن‌ها شبیه به انتزاع‌های (abstractions) AppArmor هستند، اما معمولاً قوانین خط‌مشی بیشتری را در بر می‌گیرند. --parser PATH مسیر (PATH) فایل اجرایی apparmor_parser را برای اعتبارسنجی خط‌مشی مشخص می‌کند. در صورت عدم تعیین این گزینه، aa-easyprof تلاش خواهد کرد تا مسیر را با شروع از /sbin/apparmor_parser پیدا کند. -a ABSTRACTIONS, --abstractions=ABSTRACTIONS تعیین ABSTRACTIONS به‌صورت فهرستی از انتزاع‌های AppArmor جداشده با کاما. معمولاً توصیه می‌شود به جای این گزینه از گروه‌های خط‌مشی استفاده کنید، اما این مورد برای راحتی بیشتر ارائه شده است. انتزاع‌های AppArmor در مسیر /etc/apparmor.d/abstractions قرار دارند. برای جزئیات بیشتر به apparmor.d(5) مراجعه نمایید. -b PATH, --base=PATH تنظیم PATH پایه برای تفکیک و حل انتزاع‌های مشخص‌شده توسط --abstractions. برای جزئیات به همین گزینه در apparmor_parser(8) مراجعه کنید. -I PATH, --Include=PATH افزودن PATH به مسیرهای جستجوی مورد استفاده برای تفکیک انتزاع‌های مشخص‌شده با --abstractions. برای جزئیات به همین گزینه در apparmor_parser(8) مراجعه نمایید. -r PATH, --read-path=PATH مشخص کردن یک PATH برای مجاز کردن دسترسی خواندن برای مالک (owner reads). می‌تواند چندین بار تکرار شود. اگر PATH به یک '/' ختم شود، به عنوان یک دایرکتوری در نظر گرفته شده و دسترسی خواندن به تمام فایل‌های زیر این دایرکتوری مجاز می‌گردد. همچنین می‌توان به صورت اختیاری از '/*' در انتهای PATH استفاده کرد تا فقط دسترسی خواندن به فایل‌های مستقیماً درون PATH مجاز شود. -w PATH, --write-dir=PATH مشابه --read-path است، اما علاوه بر خواندن، نوشتن توسط مالک را نیز مجاز می‌کند. -n NAME, --name=NAME تعیین NAME خط‌مشی. در صورت عدم تعیین، NAME با نام فایل باینری تنظیم می‌شود. نام (NAME) خط‌مشی معمولاً فقط برای فراداده‌های (metadata) پروفایل استفاده می‌شود و نام پروفایل AppArmor را مشخص نمی‌کند. --profile-name=PROFILENAME نام پروفایل AppArmor را مشخص می‌کند. در صورت تنظیم، از 'profile PROFILENAME' در پروفایل استفاده می‌کند. در صورت تنظیم و مشخص بودن فایل باینری، از 'profile PROFILENAME BINARY' در پروفایل استفاده می‌کند. در صورت عدم تنظیم، فایل باینری به عنوان نام پروفایل و پیوست پروفایل (profile attachment) استفاده خواهد شد. --template-var="@{VAR}=VALUE" مقدار VAR را در خط‌مشی حاصل روی VALUE تنظیم می‌کند. این گزینه معمولاً تنها زمانی معنا دارد که قالب مشخص‌شده از این مقدار استفاده کند. می‌تواند چندین بار تکرار شود. --list-templates فهرست کردن قالب‌های موجود. --show-template نمایش قالب مشخص‌شده با --template. --templates-dir=PATH استفاده از PATH به جای دایرکتوری قالب‌های سیستمی. --include-templates-dir=PATH شامل کردن PATH در هنگام جستجوی قالب‌ها علاوه بر دایرکتوری قالب‌های سیستمی (یا دایرکتوری تعیین‌شده با --templates-dir). قالب‌های سیستمی قبل از موارد موجود در PATH مطابقت داده می‌شوند. --list-policy-groups فهرست کردن گروه‌های خط‌مشی موجود. --show-policy-group نمایش گروه‌های خط‌مشی مشخص‌شده با --policy-groups. --policy-groups-dir=PATH استفاده از PATH به جای دایرکتوری گروه‌های خط‌مشی سیستمی. --include-policy-groups-dir=PATH شامل کردن PATH در هنگام جستجوی گروه‌های خط‌مشی علاوه بر دایرکتوری گروه‌های خط‌مشی سیستمی (یا دایرکتوری تعیین‌شده با --policy-groups-dir). گروه‌های خط‌مشی سیستمی قبل از موارد موجود در PATH مطابقت داده می‌شوند. --policy-version=VERSION باید همراه با --policy-vendor استفاده شود و برای تعیین نسخه گروه‌های خط‌مشی و قالب‌ها به کار می‌رود. در صورت تعیین، aa-easyprof به دنبال زیردایرکتوری VENDOR/VERSION در دایرکتوری گروه‌های خط‌مشی و قالب‌ها می‌گردد. نسخه مشخص‌شده باید یک عدد اعشاری مثبت و سازگار با نوع عددی JSON (JSON Number) باشد. برای مثال، هنگام استفاده از: $ aa-easyprof --templates-dir=/usr/share/apparmor/easyprof/templates \ --policy-groups-dir=/usr/share/apparmor/easyprof/policygroups \ --policy-vendor="foo" \ --policy-version=1.0 سپس مسیر /usr/share/apparmor/easyprof/templates/foo/1.0 برای قالب‌ها و مسیر /usr/share/apparmor/easyprof/policygroups/foo/1.0 برای گروه‌های خط‌مشی جستجو خواهد شد. --policy-vendor=VENDOR باید همراه با --policy-version استفاده شود و برای مشخص کردن ارائه‌دهنده (vendor) گروه‌های خط‌مشی و قالب‌ها به کار می‌رود. برای اطلاعات بیشتر به --policy-version مراجعه کنید. --author مشخص کردن نویسنده خط‌مشی. --copyright مشخص کردن حق نشر (کپی‌رایت) خط‌مشی. --comment مشخص کردن یادداشت/توضیح برای خط‌مشی. -m MANIFEST, --manifest=MANIFEST aa-easyprof همچنین از استفاده از یک فایل مانیفست JSON برای مشخص کردن گزینه‌های مربوط به خط‌مشی پشتیبانی می‌کند. بر خلاف آرگومان‌های خط فرمان، فایل JSON می‌تواند چندین پروفایل را مشخص نماید. ساختار JSON به صورت زیر است: { "security": { "profiles": { "": { ... attributes specific to this profile ... }, "": { ... } } } } هر شیء JSON مربوط به پروفایل (یعنی تمام موارد زیر نام یک پروفایل) می‌تواند هر فیلدی در رابطه با خط‌مشی را مشخص کند. شیء دربرگیرنده JSON با نام "security" اختیاری است و می‌تواند حذف شود. یک نمونه فایل مانیفست که تمامی فیلدها را نشان می‌دهد به شرح زیر است: { "security": { "profiles": { "com.example.foo": { "abstractions": [ "audio", "gnome" ], "author": "Your Name", "binary": "/opt/foo/**", "comment": "Unstructured single-line comment", "copyright": "Unstructured single-line copyright statement", "name": "My Foo App", "policy_groups": [ "networking", "user-application" ], "policy_vendor": "somevendor", "policy_version": 1.0, "read_path": [ "/tmp/foo_r", "/tmp/bar_r/" ], "template": "user-application", "template_variables": { "APPNAME": "foo", "VAR1": "bar", "VAR2": "baz" }, "write_path": [ "/tmp/foo_w", "/tmp/bar_w/" ] } } } } یک فایل مانیفست نیازی ندارد که تمام فیلدها را شامل شود. برای مثال، یک فایل مانیفست برای یک برنامه Ubuntu SDK می‌تواند به این صورت باشد: { "security": { "profiles": { "com.ubuntu.developer.myusername.MyCoolApp": { "policy_groups": [ "networking", "online-accounts" ], "policy_vendor": "ubuntu", "policy_version": 1.0, "template": "ubuntu-sdk", "template_variables": { "APPNAME": "MyCoolApp", "APPVERSION": "0.1.2" } } } } } --verify-manifest هنگام استفاده با --manifest، در مورد تعاریف بالقوه ناامن در فایل مانیفست هشدار می‌دهد. --output-format=FORMAT مشخص کردن text (پیش‌فرض در صورت عدم تعیین) برای خروجی خط‌مشی AppArmor یا json برای قالب مانیفست JSON. --output-directory=DIR مشخص کردن دایرکتوری خروجی برای پروفایل. در صورت عدم تعیین، خط‌مشی به stdout فرستاده می‌شود. مثال‌ها (EXAMPLES) نمونه استفاده برای برنامه‌ای به نام 'foo' که در /opt/foo نصب شده است: $ aa-easyprof --template=user-application --template-var="@{APPNAME}=foo" \ --policy-groups=opt-application,user-application \ /opt/foo/bin/FooApp هنگام استفاده از یک فایل مانیفست: $ aa-easyprof --manifest=manifest.json برای خروجی دادن یک فایل مانیفست بر پایه آرگومان‌های aa-easyprof: $ aa-easyprof --output-format=json \ --author="Your Name" \ --comment="Unstructured single-line comment" \ --copyright="Unstructured single-line copyright statement" \ --name="My Foo App" \ --profile-name="com.example.foo" \ --template="user-application" \ --policy-groups="user-application,networking" \ --abstractions="audio,gnome" \ --read-path="/tmp/foo_r" \ --read-path="/tmp/bar_r/" \ --write-path="/tmp/foo_w" \ --write-path=/tmp/bar_w/ \ --template-var="@{APPNAME}=foo" \ --template-var="@{VAR1}=bar" \ --template-var="@{VAR2}=baz" \ "/opt/foo/**" اشکالات (BUGS) اگر هرگونه اشکال دیگری پیدا کردید، لطفاً آن را در گیت‌لب گزارش دهید: همچنین ببینید (SEE ALSO) apparmor(7) apparmor.d(5) AppArmor 4.1.7 2026-03-10 AA-EASYPROF(8)