AA-LOGPROF(8) AppArmor AA-LOGPROF(8)

aa-logprof - ابزاری برای به‌روزرسانی پروفایل‌های امنیتی AppArmor

aa-logprof [-d /path/to/profiles] [-f /path/to/logfile] [-m <mark in logfile>]

-d --dir /path/to/profiles

مشخص می‌کند مجموعه پروفایل‌های امنیتی AppArmor در کجا جستجو شوند.
پیش‌فرض /etc/apparmor.d است.

-f --file /path/to/logfile

مکان فایل گزارش (logfile) حاوی رویدادهای امنیتی AppArmor را مشخص می‌کند.
    مکان‌های پیش‌فرض از /etc/apparmor/logprof.conf خوانده می‌شوند.
    پیش‌فرض‌های معمول عبارتند از:
             /var/log/audit/audit.log
             /var/log/syslog
             /var/log/messages

-m --logmark "mark"

دستور aa-logprof تمامی رویدادهای موجود در گزارش سیستم را قبل از
مشاهده نشان (mark) مشخص‌شده نادیده می‌گیرد. اگر نشان حاوی فاصله
باشد، برای کارکرد درست باید درون گیومه قرار گیرد.

دستور aa-logprof یک ابزار تعاملی است که برای بررسی پیام‌های تولیدشده توسط AppArmor و به‌روزرسانی پروفایل‌های امنیتی AppArmor استفاده می‌شود.

اجرای aa-logprof فایل گزارش را پویش می‌کند و اگر رویدادهای جدید AppArmor وجود داشته باشند که توسط مجموعه پروفایل‌های موجود پوشش داده نشده‌اند، تغییرات پیشنهادی برای گسترش و تکمیل پروفایل به کاربر نمایش داده می‌شود.

هنگامی که aa-logprof خارج می‌شود، تغییرات پروفایل روی دیسک ذخیره می‌شوند. اگر AppArmor در حال اجرا باشد، پروفایل‌های به‌روزرسانی‌شده دوباره بارگذاری می‌شوند و اگر هر فرآیندی که رویدادهای AppArmor تولید کرده همچنان در null-complain-profile در حال اجرا باشد، آن فرآیندها طوری تنظیم می‌شوند که تحت پروفایل‌های مناسب خود اجرا شوند.

دستور aa-logprof فهرستی از تغییرات پیشنهادی پروفایل را تولید می‌کند که کاربر می‌تواند از بین آن‌ها انتخاب کند، یا تغییرات دلخواه خود را بسازد، تا مجموعه مجوزهای پروفایل را طوری تغییر دهد که نقض دسترسی ایجادشده مجدداً رخ ندهد.

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

(A)llow, (D)eny, (I)gnore, (N)ew, (G)lob last piece, (Q)uit

اگر پروفایل AppArmor در هنگام ایجاد رویداد در حالت شکایت (complain mode) بوده باشد، گزینه پیش‌فرض برای این مورد (A)llow است، در غیر این صورت (D)eny خواهد بود.

گزینه (D)eny یک قاعده «رد» (deny) به پروفایل AppArmor اضافه می‌کند که ثبت گزارش را بی‌صدا می‌کند.

گزینه (I)gnore به کاربر اجازه می‌دهد رویداد را بدون اعمال هیچ تغییری در پروفایل AppArmor نادیده بگیرد.

فهرست پیشنهادات به‌صورت یک فهرست شماره‌گذاری‌شده با includeها در بالا، مسیر دقیق در وسط و الگوهای تطبیق (glob) پیشنهادی در پایین ارائه می‌شود. اگر الگوی تطبیقی پیشنهاد شود، کوتاه‌ترین الگو گزینه انتخاب‌شده است؛ در غیر این صورت، مسیر دقیق انتخاب می‌شود. انتخاب includeها از فهرست باید به‌صورت دستی انجام گیرد.

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

اگر کاربر گزینه (N)ew را انتخاب کند، از او خواسته می‌شود الگوی تطبیق دلخواه خود را برای مطابقت با مسیر وارد کند. اگر الگوی واردشده با مسیر این رویداد مطابقت نداشته باشد، به کاربر اطلاع داده شده و امکان اصلاح آن را خواهد داشت.

اگر کاربر گزینه (G)lob last piece را انتخاب کند، aa-logprof با در نظر گرفتن گزینه انتخاب‌شده فعلی، آخرین بخش مسیر را حذف کرده و آن را با /* جایگزین می‌کند.

اگر آخرین بخش مسیر از قبل /* بوده باشد، aa-logprof یک سطح دایرکتوری به بالا می‌رود و آن را با /** جایگزین می‌کند.

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

بنابراین مسیر /usr/share/themes/foo/bar/baz.gif را می‌توان با سه بار فشردن کلید "g" به /usr/share/themes/** تبدیل کرد.

اگر کاربر گزینه (A)llow را انتخاب کند، aa-logprof انتخاب فعلی را به پروفایل اضافه کرده و سایر ورودی‌های موجود در پروفایل را که با ورودی جدید هم‌پوشانی و مطابقت دارند حذف می‌کند.

افزودن دسترسی r به /usr/share/themes/** در صورت وجود ورودی دسترسی r به /usr/share/themes/foo/*.gif در پروفایل، آن را حذف خواهد کرد.

اگر در این مرحله (Q)uit انتخاب شود، aa-logprof تمامی دسترسی‌های جدید در انتظار را نادیده می‌گیرد.

پس از رسیدگی به تمامی دسترسی‌ها، aa-logprof تمام پروفایل‌های به‌روزرسانی‌شده را روی دیسک می‌نویسد و در صورت در حال اجرا بودن AppArmor، آن‌ها را دوباره بارگذاری می‌کند.

اگر دسترسی‌های x رسیدگی‌نشده‌ای ناشی از فراخوانی execve(2) یک فرآیند جدید رخ دهد، aa-logprof پروفایل والد و برنامه هدف در حال اجرا را نمایش داده و از کاربر می‌خواهد یک تغییردهنده اجرا را انتخاب کند. این تغییردهنده‌ها امکان انتخاب گزینه‌های زیر را برای هدف فراهم می‌کنند: داشتن پروفایل اختصاصی خود (px)، به ارث بردن پروفایل والد (ix)، اجرا بدون محدودیت (ux)، یا رد دسترسی برای هدف. برای جزئیات بیشتر به apparmor.d(5) مراجعه کنید.

اگر ورودی متناظری برای هدف در بخش qualifiers فایل /etc/apparmor/logprof.conf وجود داشته باشد، فهرست ارائه‌شده فقط شامل حالت‌های مجاز خواهد بود.

گزینه پیش‌فرض برای این پرسش با استفاده از منطق زیر انتخاب می‌شود:

# if px mode is allowed and profile exists for the target
#   px is default.
# else if ix mode is allowed
#   ix is default
# else
#   deny is default

دستور aa-logprof هرگز "ux" را به عنوان پیش‌فرض پیشنهاد نمی‌دهد.

اگر رویدادهای ناشناخته aa_change_hat(2) یافت شوند، از کاربر خواسته می‌شود تا یک کلاه (hat) جدید اضافه کند، یا مشخص کند آیا بر اساس ورودی متناظر در بخش defaulthat فایل logprof.conf این رویدادها باید به کلاه پیش‌فرض این پروفایل منتقل شوند، یا رویدادهای بعدی که تحت آن کلاه اجرا می‌شوند به‌طور کلی رد شوند.

اگر دسترسی‌هایی از نوع قابلیت (capability) وجود داشته باشد، هر دسترسی قابلیت به کاربر نشان داده می‌شود و از او پرسیده می‌شود که آیا قابلیت باید مجاز شود، رد شود، یا کاربر می‌خواهد خارج شود. برای جزئیات بیشتر به capability(7) مراجعه کنید.

اگر هرگونه باگی پیدا کردید، لطفاً آن را در نشانی زیر گزارش دهید: https://gitlab.com/apparmor/apparmor/-/issues

klogd(8)، auditd(8)، apparmor(7)، apparmor.d(5)، aa_change_hat(2)، logprof.conf(5)، aa-genprof(1)، aa-enforce(1)، aa-complain(1)، aa-disable(1) و https://wiki.apparmor.net

2026-03-10 AppArmor 4.1.7