| AUSEARCH-EXPRESSION(5) | Linux Audit | AUSEARCH-EXPRESSION(5) |
نام (NAME)
ausearch-expression - قالب عبارتهای جستجوی حسابرسی
نمای کلی (OVERVIEW)
این صفحه راهنما قالب «عبارتهای ausearch» را شرح میدهد. تجزیه و ارزیابی این عبارتها توسط libauparse ارائه میشود و میان برنامههایی که از این کتابخانه استفاده میکنند مشترک است.
ساختار واژگانی (LEXICAL STRUCTURE)
فاصلههای خالی (نویسههای فاصله، تب و خط جدید در کد ASCII) میان توکنها نادیده گرفته میشوند. توکنهای زیر شناسایی میشوند:
علائم نگارشی (Punctuation)
( ) \
عملگرهای منطقی (Logical operators)
! && ||
عملگرهای مقایسهای (Comparison operators)
< <= == > >= !== i= i!= r= r!=
رشتههای بدون نقلقول (Unquoted strings)
هر دنباله غیرخالی از حروف ASCII، ارقام، و نماد _ میباشد.
رشتههای داخل نقلقول (Quoted strings)
دنبالهای از نویسهها که توسط علامت نقلقول " احاطه شدهاند. نویسه \ یک توالی فرار را آغاز میکند. تنها توالیهای فرار تعریفشده \\ و \" هستند. معنای سایر توالیهای فرار تعریفنشده است.
عبارات باقاعده (Regexps)
دنبالهای از نویسهها که توسط نویسههای / احاطه شدهاند. نویسه \ یک توالی فرار را آغاز میکند. تنها توالیهای فرار تعریفشده \\ و \/ هستند. معنای سایر توالیهای فرار تعریفنشده است.
هر جا که یک رشته بدون نقلقول معتبر باشد، یک رشته داخل نقلقول نیز معتبر است و بالعکس. بهویژه، نامهای فیلد را میتوان با استفاده از رشتههای داخل نقلقول مشخص کرد، و مقادیر فیلد را میتوان با استفاده از رشتههای بدون نقلقول تعیین نمود.
نحو عبارات (EXPRESSION SYNTAX)
عبارت اولیه یکی از قالبهای زیر را دارد:
- field comparison-operator value
\regexp string-or-regexp
field یا یک رشته است، که اولین فیلد با آن نام را در رکورد حسابرسی فعلی مشخص میکند، یا نویسه فرار \ به همراه یک رشته است، که یک فیلد مجازی با نام مشخصشده را تعیین میکند (فیلدهای مجازی در بخش بعدی تعریف شدهاند).
field یک رشته است. operator نوع مقایسهای را که باید انجام شود مشخص میکند:
- r= r!=
- رشته خام («raw») مربوط به field را دریافت کرده، و آن را با value مقایسه میکند. برای فیلدهای موجود در رکوردهای حسابرسی، رشته خام دقیقاً همان رشته ذخیرهشده در رکورد حسابرسی است (با حفظ تمام کاراکترهای اسکیپشده و کدگذاری نویسههای غیرقابل چاپ)؛ برنامهها میتوانند رشته خام را با استفاده از auparse_get_field_str(3) بخوانند. هر فیلد مجازی ممکن است یک رشته خام تعریف کند. اگر field وجود نداشته باشد یا یک رشته خام تعریف نکرده باشد، نتیجه مقایسه برابر false خواهد بود (بدون در نظر گرفتن عملگر).
- i= i!=
- رشته تفسیرشده («interpreted») مربوط به field را دریافت کرده، و آن را با value مقایسه میکند. برای فیلدهای موجود در رکوردهای حسابرسی، رشته تفسیرشده یک تفسیر قابلخواندن برای کاربر از مقدار فیلد است؛ برنامهها میتوانند رشته تفسیرشده را با استفاده از auparse_interpret_field(3) بخوانند. هر فیلد مجازی ممکن است یک رشته تفسیرشده تعریف کند. اگر field وجود نداشته باشد یا یک رشته تفسیرشده تعریف نکرده باشد، نتیجه مقایسه برابر false خواهد بود (بدون در نظر گرفتن عملگر).
- < <= == > >= !==
- مقدار («value») مربوط به field را ارزیابی کرده و آن را با value مقایسه میکند. یک «مقدار» ممکن است برای هر فیلد یا فیلد مجازی تعریف شده باشد، اما در حال حاضر هیچ مقداری برای هیچ فیلد رکورد حسابرسی تعریف نشده است. قوانین تجزیه value برای مقایسه آن با مقدار field برای هر field خاص است. اگر field وجود نداشته باشد، نتیجه مقایسه برابر false خواهد بود (بدون در نظر گرفتن عملگر). اگر field یک مقدار تعریف نکرده باشد، هنگام تجزیه عبارت یک خطا گزارش میشود.
در حالت خاص \regexp regexp-or-string ، رکورد حسابرسی فعلی به عنوان یک رشته در نظر گرفته میشود (بدون تفسیر مقادیر فیلدها)، و با regexp-or-string تطبیق داده میشود. regexp-or-string یک عبارت باقاعده گسترشیافته است که از یک توکن رشته یا عبارت باقاعده استفاده میکند (به عبارت دیگر، محصور در " یا /).
اگر E1 و E2 عبارتهای معتبری باشند، آنگاه ! E1 ، E1 && E2 و E1 || E2 نیز با معناشناسی و اولویتهای ارزیابی معمول زبان C، عبارتهای معتبری خواهند بود. توجه داشته باشید که ! field op value به صورت !(field op value) تفسیر میشود، نه به عنوان (!field) op value .
فیلدهای مجازی (VIRTUAL FIELDS)
فیلدهای مجازی زیر تعریف شدهاند:
- \timestamp
- مقدار،
برچسب زمان
(timestamp) رویداد
فعلی است. value
باید به این
قالب باشد:
ts:seconds.milli
که در آن seconds و milli اعداد دهدهی هستند که به ترتیب بخش ثانیه و میلیثانیه برچسب زمان را مشخص میکنند.
- \timestamp_ex
- این فیلد
مشابه \timestamp
است اما
شماره
سریال
رویداد را
نیز شامل
میشود. value
باید به این
قالب باشد:
ts:seconds.milli:serial
که در آن serial یک عدد دهدهی است که شماره سریال رویداد را مشخص میکند.
- \record_type
- مقدار، نوع رکورد فعلی است. value یا نام نوع رکورد است، یا یک عدد دهدهی که نوع را مشخص میکند.
معناشناسی (SEMANTICS)
عبارت در کل بر یک رکورد منفرد اعمال میشود. عبارت برای یک رویداد مشخص برابر true خواهد بود اگر برای هر رکورد مرتبط با رویداد، برابر true باشد.
مثالها (EXAMPLES)
به عنوان نمایشی از معناشناسی مدیریت فیلدهای ناموجود، عبارت زیر در صورتی true است که field حاضر باشد:
- (field r= "") || (field r!= "")
و همین عبارت هنگامی که توسط !( و ) احاطه شده باشد، در صورتی true است که field وجود نداشته باشد.
مسیرهای آینده (FUTURE DIRECTIONS)
ممکن است توالیهای فرار جدیدی برای رشتههای داخل نقلقول تعریف شوند.
برای فیلدهای مجازی تعریفشده کنونی که رشته «خام» یا «تفسیرشده» تعریف نکردهاند، ممکن است تعریفی در آینده اضافه شود. بنابراین، بر این واقعیت اتکا نکنید که مقایسه رشته «خام» یا «تفسیرشده» فیلد با هر مقداری، برابر false است.
ممکن است قالبهای جدیدی از ثابتهای مقدار برای فیلد مجازی \timestamp اضافه شوند.
نویسنده (AUTHOR)
Miloslav Trmac
| Feb 2008 | Red Hat |