.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "AA-EASYPROF 8" .TH AA-EASYPROF 8 2026-03-10 "AppArmor 4.1.7" AppArmor .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" aa\-easyprof \- تولید آسان و سریع پروفایل‌های AppArmor. .SH "خلاصه دستور (SYNOPSIS)" .IX Header "خلاصه دستور (SYNOPSIS)" \&\fBaa\-easyprof\fR [گزینه] <مسیر فایل باینری> .SH "توضیحات (DESCRIPTION)" .IX Header "توضیحات (DESCRIPTION)" \&\fBaa\-easyprof\fR یک رابط کاربری ساده برای ایجاد و تولید خط‌مشی‌های (policy) AppArmor فراهم می‌کند. \fBaa\-easyprof\fR از به‌کارگیری قالب‌ها (templates) و گروه‌های خط‌مشی (policy groups) برای پروفایل‌سازی سریع برنامه‌ها پشتیبانی می‌کند. لطفاً توجه داشته باشید که اگرچه این ابزار می‌تواند به تولید خط‌مشی کمک کند، اما میزان کارایی آن به کیفیت قالب‌ها، گروه‌های خط‌مشی و انتزاع‌های (abstractions) استفاده‌شده وابسته است. همچنین، این ابزار ممکن است خط‌مشی‌هایی با محدودیت‌های کمتر نسبت به ایجاد دستی یا استفاده از \&\fBaa\-genprof\fR و \fBaa\-logprof\fR ایجاد نماید. .SH "گزینه‌ها (OPTIONS)" .IX Header "گزینه‌ها (OPTIONS)" \&\fBaa\-easyprof\fR آرگومان‌های زیر را می‌پذیرد: .IP "\-t TEMPLATE, \-\-template=TEMPLATE" 4 .IX Item "-t TEMPLATE, --template=TEMPLATE" مشخص می‌کند از کدام قالب استفاده شود. می‌تواند یک قالب سیستمی از مسیر /usr/share/apparmor/easyprof/templates یا نام فایلی از قالب مورد نظر را مشخص کند. در صورت عدم تعیین، از /usr/share/apparmor/easyprof/templates/default استفاده می‌شود. .IP "\-p POLICYGROUPS, \-\-policy\-groups=POLICYGROUPS" 4 .IX Item "-p POLICYGROUPS, --policy-groups=POLICYGROUPS" تعیین POLICY به‌صورت فهرستی از گروه‌های خط‌مشی که با کاما از هم جدا شده‌اند. برای مشاهده گروه‌های خط‌مشی پشتیبانی‌شده به \-\-list\-templates مراجعه کنید. گروه‌های خط‌مشی موجود در مسیر /usr/share/apparmor/easyprof/policy قرار دارند. گروه‌های خط‌مشی صرفاً دسته‌بندی‌هایی از قوانین یا خط‌مشی‌های AppArmor هستند. آن‌ها شبیه به انتزاع‌های (abstractions) AppArmor هستند، اما معمولاً قوانین خط‌مشی بیشتری را در بر می‌گیرند. .IP "\-\-parser PATH" 4 .IX Item "--parser PATH" مسیر (PATH) فایل اجرایی apparmor_parser را برای اعتبارسنجی خط‌مشی مشخص می‌کند. در صورت عدم تعیین این گزینه، aa\-easyprof تلاش خواهد کرد تا مسیر را با شروع از /sbin/apparmor_parser پیدا کند. .IP "\-a ABSTRACTIONS, \-\-abstractions=ABSTRACTIONS" 4 .IX Item "-a ABSTRACTIONS, --abstractions=ABSTRACTIONS" تعیین ABSTRACTIONS به‌صورت فهرستی از انتزاع‌های AppArmor جداشده با کاما. معمولاً توصیه می‌شود به جای این گزینه از گروه‌های خط‌مشی استفاده کنید، اما این مورد برای راحتی بیشتر ارائه شده است. انتزاع‌های AppArmor در مسیر /etc/apparmor.d/abstractions قرار دارند. برای جزئیات بیشتر به \fBapparmor.d\fR\|(5) مراجعه نمایید. .IP "\-b PATH, \-\-base=PATH" 4 .IX Item "-b PATH, --base=PATH" تنظیم PATH پایه برای تفکیک و حل انتزاع‌های مشخص‌شده توسط \-\-abstractions. برای جزئیات به همین گزینه در \fBapparmor_parser\fR\|(8) مراجعه کنید. .IP "\-I PATH, \-\-Include=PATH" 4 .IX Item "-I PATH, --Include=PATH" افزودن PATH به مسیرهای جستجوی مورد استفاده برای تفکیک انتزاع‌های مشخص‌شده با \&\-\-abstractions. برای جزئیات به همین گزینه در \fBapparmor_parser\fR\|(8) مراجعه نمایید. .IP "\-r PATH, \-\-read\-path=PATH" 4 .IX Item "-r PATH, --read-path=PATH" مشخص کردن یک PATH برای مجاز کردن دسترسی خواندن برای مالک (owner reads). می‌تواند چندین بار تکرار شود. اگر PATH به یک \*(Aq/\*(Aq ختم شود، به عنوان یک دایرکتوری در نظر گرفته شده و دسترسی خواندن به تمام فایل‌های زیر این دایرکتوری مجاز می‌گردد. همچنین می‌توان به صورت اختیاری از \*(Aq/*\*(Aq در انتهای PATH استفاده کرد تا فقط دسترسی خواندن به فایل‌های مستقیماً درون PATH مجاز شود. .IP "\-w PATH, \-\-write\-dir=PATH" 4 .IX Item "-w PATH, --write-dir=PATH" مشابه \-\-read\-path است، اما علاوه بر خواندن، نوشتن توسط مالک را نیز مجاز می‌کند. .IP "\-n NAME, \-\-name=NAME" 4 .IX Item "-n NAME, --name=NAME" تعیین NAME خط‌مشی. در صورت عدم تعیین، NAME با نام فایل باینری تنظیم می‌شود. نام (NAME) خط‌مشی معمولاً فقط برای فراداده‌های (metadata) پروفایل استفاده می‌شود و نام پروفایل AppArmor را مشخص نمی‌کند. .IP \-\-profile\-name=PROFILENAME 4 .IX Item "--profile-name=PROFILENAME" نام پروفایل AppArmor را مشخص می‌کند. در صورت تنظیم، از \*(Aqprofile PROFILENAME\*(Aq در پروفایل استفاده می‌کند. در صورت تنظیم و مشخص بودن فایل باینری، از \*(Aqprofile PROFILENAME BINARY\*(Aq در پروفایل استفاده می‌کند. در صورت عدم تنظیم، فایل باینری به عنوان نام پروفایل و پیوست پروفایل (profile attachment) استفاده خواهد شد. .IP "\-\-template\-var=""@{VAR}=VALUE""" 4 .IX Item "--template-var=""@{VAR}=VALUE""" مقدار VAR را در خط‌مشی حاصل روی VALUE تنظیم می‌کند. این گزینه معمولاً تنها زمانی معنا دارد که قالب مشخص‌شده از این مقدار استفاده کند. می‌تواند چندین بار تکرار شود. .IP \-\-list\-templates 4 .IX Item "--list-templates" فهرست کردن قالب‌های موجود. .IP \-\-show\-template 4 .IX Item "--show-template" نمایش قالب مشخص‌شده با \-\-template. .IP \-\-templates\-dir=PATH 4 .IX Item "--templates-dir=PATH" استفاده از PATH به جای دایرکتوری قالب‌های سیستمی. .IP \-\-include\-templates\-dir=PATH 4 .IX Item "--include-templates-dir=PATH" شامل کردن PATH در هنگام جستجوی قالب‌ها علاوه بر دایرکتوری قالب‌های سیستمی (یا دایرکتوری تعیین‌شده با \-\-templates\-dir). قالب‌های سیستمی قبل از موارد موجود در PATH مطابقت داده می‌شوند. .IP \-\-list\-policy\-groups 4 .IX Item "--list-policy-groups" فهرست کردن گروه‌های خط‌مشی موجود. .IP \-\-show\-policy\-group 4 .IX Item "--show-policy-group" نمایش گروه‌های خط‌مشی مشخص‌شده با \-\-policy\-groups. .IP \-\-policy\-groups\-dir=PATH 4 .IX Item "--policy-groups-dir=PATH" استفاده از PATH به جای دایرکتوری گروه‌های خط‌مشی سیستمی. .IP \-\-include\-policy\-groups\-dir=PATH 4 .IX Item "--include-policy-groups-dir=PATH" شامل کردن PATH در هنگام جستجوی گروه‌های خط‌مشی علاوه بر دایرکتوری گروه‌های خط‌مشی سیستمی (یا دایرکتوری تعیین‌شده با \-\-policy\-groups\-dir). گروه‌های خط‌مشی سیستمی قبل از موارد موجود در PATH مطابقت داده می‌شوند. .IP \-\-policy\-version=VERSION 4 .IX Item "--policy-version=VERSION" باید همراه با \-\-policy\-vendor استفاده شود و برای تعیین نسخه گروه‌های خط‌مشی و قالب‌ها به کار می‌رود. در صورت تعیین، \fBaa\-easyprof\fR به دنبال زیردایرکتوری VENDOR/VERSION در دایرکتوری گروه‌های خط‌مشی و قالب‌ها می‌گردد. نسخه مشخص‌شده باید یک عدد اعشاری مثبت و سازگار با نوع عددی JSON (JSON Number) باشد. برای مثال، هنگام استفاده از: .Sp .Vb 4 \& $ aa\-easyprof \-\-templates\-dir=/usr/share/apparmor/easyprof/templates \e \& \-\-policy\-groups\-dir=/usr/share/apparmor/easyprof/policygroups \e \& \-\-policy\-vendor="foo" \e \& \-\-policy\-version=1.0 .Ve .Sp سپس مسیر /usr/share/apparmor/easyprof/templates/foo/1.0 برای قالب‌ها و مسیر /usr/share/apparmor/easyprof/policygroups/foo/1.0 برای گروه‌های خط‌مشی جستجو خواهد شد. .IP \-\-policy\-vendor=VENDOR 4 .IX Item "--policy-vendor=VENDOR" باید همراه با \-\-policy\-version استفاده شود و برای مشخص کردن ارائه‌دهنده (vendor) گروه‌های خط‌مشی و قالب‌ها به کار می‌رود. برای اطلاعات بیشتر به \-\-policy\-version مراجعه کنید. .IP \-\-author 4 .IX Item "--author" مشخص کردن نویسنده خط‌مشی. .IP \-\-copyright 4 .IX Item "--copyright" مشخص کردن حق نشر (کپی‌رایت) خط‌مشی. .IP \-\-comment 4 .IX Item "--comment" مشخص کردن یادداشت/توضیح برای خط‌مشی. .IP "\-m MANIFEST, \-\-manifest=MANIFEST" 4 .IX Item "-m MANIFEST, --manifest=MANIFEST" \&\fBaa\-easyprof\fR همچنین از استفاده از یک فایل مانیفست JSON برای مشخص کردن گزینه‌های مربوط به خط‌مشی پشتیبانی می‌کند. بر خلاف آرگومان‌های خط فرمان، فایل JSON می‌تواند چندین پروفایل را مشخص نماید. ساختار JSON به صورت زیر است: .Sp .Vb 12 \& { \& "security": { \& "profiles": { \& "": { \& ... attributes specific to this profile ... \& }, \& "": { \& ... \& } \& } \& } \& } .Ve .Sp هر شیء JSON مربوط به پروفایل (یعنی تمام موارد زیر نام یک پروفایل) می‌تواند هر فیلدی در رابطه با خط‌مشی را مشخص کند. شیء دربرگیرنده JSON با نام "security" اختیاری است و می‌تواند حذف شود. یک نمونه فایل مانیفست که تمامی فیلدها را نشان می‌دهد به شرح زیر است: .Sp .Vb 10 \& { \& "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/" \& ] \& } \& } \& } \& } .Ve .Sp یک فایل مانیفست نیازی ندارد که تمام فیلدها را شامل شود. برای مثال، یک فایل مانیفست برای یک برنامه Ubuntu SDK می‌تواند به این صورت باشد: .Sp .Vb 10 \& { \& "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" \& } \& } \& } \& } \& } .Ve .IP \-\-verify\-manifest 4 .IX Item "--verify-manifest" هنگام استفاده با \-\-manifest، در مورد تعاریف بالقوه ناامن در فایل مانیفست هشدار می‌دهد. .IP \-\-output\-format=FORMAT 4 .IX Item "--output-format=FORMAT" مشخص کردن \fBtext\fR (پیش‌فرض در صورت عدم تعیین) برای خروجی خط‌مشی AppArmor یا \&\fBjson\fR برای قالب مانیفست JSON. .IP \-\-output\-directory=DIR 4 .IX Item "--output-directory=DIR" مشخص کردن دایرکتوری خروجی برای پروفایل. در صورت عدم تعیین، خط‌مشی به stdout فرستاده می‌شود. .SH "مثال‌ها (EXAMPLES)" .IX Header "مثال‌ها (EXAMPLES)" نمونه استفاده برای برنامه‌ای به نام \*(Aqfoo\*(Aq که در /opt/foo نصب شده است: .PP .Vb 3 \& $ aa\-easyprof \-\-template=user\-application \-\-template\-var="@{APPNAME}=foo" \e \& \-\-policy\-groups=opt\-application,user\-application \e \& /opt/foo/bin/FooApp .Ve .PP هنگام استفاده از یک فایل مانیفست: .PP .Vb 1 \& $ aa\-easyprof \-\-manifest=manifest.json .Ve .PP برای خروجی دادن یک فایل مانیفست بر پایه آرگومان‌های aa\-easyprof: .PP .Vb 10 \& $ aa\-easyprof \-\-output\-format=json \e \& \-\-author="Your Name" \e \& \-\-comment="Unstructured single\-line comment" \e \& \-\-copyright="Unstructured single\-line copyright statement" \e \& \-\-name="My Foo App" \e \& \-\-profile\-name="com.example.foo" \e \& \-\-template="user\-application" \e \& \-\-policy\-groups="user\-application,networking" \e \& \-\-abstractions="audio,gnome" \e \& \-\-read\-path="/tmp/foo_r" \e \& \-\-read\-path="/tmp/bar_r/" \e \& \-\-write\-path="/tmp/foo_w" \e \& \-\-write\-path=/tmp/bar_w/ \e \& \-\-template\-var="@{APPNAME}=foo" \e \& \-\-template\-var="@{VAR1}=bar" \e \& \-\-template\-var="@{VAR2}=baz" \e \& "/opt/foo/**" .Ve .SH "اشکالات (BUGS)" .IX Header "اشکالات (BUGS)" اگر هرگونه اشکال دیگری پیدا کردید، لطفاً آن را در گیت‌لب گزارش دهید: .SH "همچنین ببینید (SEE ALSO)" .IX Header "همچنین ببینید (SEE ALSO)" \&\fBapparmor\fR\|(7) \fBapparmor.d\fR\|(5)