.TH "AUSEARCH-EXPRESSION" "5" "Feb 2008" "Red Hat" "Linux Audit" .SH "نام (NAME)" ausearch-expression \- قالب عبارتهای جستجوی حسابرسی .SH "نمای کلی (OVERVIEW)" این صفحه راهنما قالب «عبارت‌های ausearch» را شرح می‌دهد. تجزیه و ارزیابی این عبارت‌ها توسط .B libauparse ارائه می‌شود و میان برنامه‌هایی که از این کتابخانه استفاده می‌کنند مشترک است. .SH "ساختار واژگانی (LEXICAL STRUCTURE)" فاصله‌های خالی (نویسه‌های فاصله، تب و خط جدید در کد ASCII) میان توکن‌ها نادیده گرفته می‌شوند. توکن‌های زیر شناسایی می‌شوند: .SS "علائم نگارشی (Punctuation)" .nf ( ) \e .fi .SS "عملگرهای منطقی (Logical operators)" .nf ! && || .fi .SS "عملگرهای مقایسه‌ای (Comparison operators)" .nf < <= == > >= !== i= i!= r= r!= .fi .SS "رشته‌های بدون نقل‌قول (Unquoted strings)" هر دنباله غیرخالی از حروف ASCII، ارقام، و نماد .B _ می‌باشد. .SS "رشته‌های داخل نقل‌قول (Quoted strings)" دنباله‌ای از نویسه‌ها که توسط علامت نقل‌قول .B \(dq احاطه شده‌اند. نویسه .B \e یک توالی فرار را آغاز می‌کند. تنها توالی‌های فرار تعریف‌شده .B \e\e و .B \e\(dq هستند. معنای سایر توالی‌های فرار تعریف‌نشده است. .SS "عبارات باقاعده (Regexps)" دنباله‌ای از نویسه‌ها که توسط نویسه‌های .B / احاطه شده‌اند. نویسه .B \e یک توالی فرار را آغاز می‌کند. تنها توالی‌های فرار تعریف‌شده .B \e\e و .B \e/ هستند. معنای سایر توالی‌های فرار تعریف‌نشده است. .PP هر جا که یک رشته بدون نقل‌قول معتبر باشد، یک رشته داخل نقل‌قول نیز معتبر است و بالعکس. به‌ویژه، نام‌های فیلد را می‌توان با استفاده از رشته‌های داخل نقل‌قول مشخص کرد، و مقادیر فیلد را می‌توان با استفاده از رشته‌های بدون نقل‌قول تعیین نمود. .SH "نحو عبارات (EXPRESSION SYNTAX)" عبارت اولیه یکی از قالب‌های زیر را دارد: .IP .I field comparison-operator value .B \eregexp .I string-or-regexp .PP .I field یا یک رشته است، که اولین فیلد با آن نام را در رکورد حسابرسی فعلی مشخص می‌کند، یا نویسه فرار .B \e به همراه یک رشته است، که یک فیلد مجازی با نام مشخص‌شده را تعیین می‌کند (فیلدهای مجازی در بخش بعدی تعریف شده‌اند). .I field یک رشته است. .I operator نوع مقایسه‌ای را که باید انجام شود مشخص می‌کند: .TP .B r= r!= رشته خام («raw») مربوط به \fIfield\fR را دریافت کرده، و آن را با \fIvalue\fR مقایسه می‌کند. برای فیلدهای موجود در رکوردهای حسابرسی، رشته خام دقیقاً همان رشته ذخیره‌شده در رکورد حسابرسی است (با حفظ تمام کاراکترهای اسکیپ‌شده و کدگذاری نویسه‌های غیرقابل چاپ)؛ برنامه‌ها می‌توانند رشته خام را با استفاده از .BR auparse_get_field_str (3) بخوانند. هر فیلد مجازی ممکن است یک رشته خام تعریف کند. اگر .I field وجود نداشته باشد یا یک رشته خام تعریف نکرده باشد، نتیجه مقایسه برابر .B false خواهد بود (بدون در نظر گرفتن عملگر). .TP .B i= i!= رشته تفسیرشده («interpreted») مربوط به \fIfield\fR را دریافت کرده، و آن را با \fIvalue\fR مقایسه می‌کند. برای فیلدهای موجود در رکوردهای حسابرسی، رشته تفسیرشده یک تفسیر قابل‌خواندن برای کاربر از مقدار فیلد است؛ برنامه‌ها می‌توانند رشته تفسیرشده را با استفاده از .BR auparse_interpret_field (3) بخوانند. هر فیلد مجازی ممکن است یک رشته تفسیرشده تعریف کند. اگر .I field وجود نداشته باشد یا یک رشته تفسیرشده تعریف نکرده باشد، نتیجه مقایسه برابر .B false خواهد بود (بدون در نظر گرفتن عملگر). .TP .B < <= == > >= !== مقدار («value») مربوط به \fIfield\fR را ارزیابی کرده و آن را با \fIvalue\fR مقایسه می‌کند. یک «مقدار» ممکن است برای هر فیلد یا فیلد مجازی تعریف شده باشد، اما در حال حاضر هیچ مقداری برای هیچ فیلد رکورد حسابرسی تعریف نشده است. قوانین تجزیه \fIvalue\fR برای مقایسه آن با مقدار .I field برای هر \fIfield\fR خاص است. اگر .I field وجود نداشته باشد، نتیجه مقایسه برابر .B false خواهد بود (بدون در نظر گرفتن عملگر). اگر .I field یک مقدار تعریف نکرده باشد، هنگام تجزیه عبارت یک خطا گزارش می‌شود. .PP در حالت خاص .B \eregexp \fIregexp-or-string\fR ، رکورد حسابرسی فعلی به عنوان یک رشته در نظر گرفته می‌شود (بدون تفسیر مقادیر فیلدها)، و با \fIregexp-or-string\fR تطبیق داده می‌شود. .I regexp-or-string یک عبارت باقاعده گسترش‌یافته است که از یک توکن رشته یا عبارت باقاعده استفاده می‌کند (به عبارت دیگر، محصور در .B \(dq یا \fB/\fR). اگر .I E1 و .I E2 عبارت‌های معتبری باشند، آنگاه .B ! \fIE1\fR ، .I E1 .B && \fIE2\fR و .I E1 .B || .I E2 نیز با معناشناسی و اولویت‌های ارزیابی معمول زبان C، عبارت‌های معتبری خواهند بود. توجه داشته باشید که .B ! .I field op value به صورت \fB!(\fIfield op value\fB)\fR تفسیر می‌شود، نه به عنوان \fB(!\fIfield\fB)\fI op value\fR . .SH "فیلدهای مجازی (VIRTUAL FIELDS)" فیلدهای مجازی زیر تعریف شده‌اند: .TP .B \etimestamp مقدار، برچسب زمان (timestamp) رویداد فعلی است. .I value باید به این قالب باشد: .sp .in +5 .nf .na ts:seconds.milli .ad .fi .in -5 .sp که در آن .I seconds و .I milli اعداد ده‌دهی هستند که به ترتیب بخش ثانیه و میلی‌ثانیه برچسب زمان را مشخص می‌کنند. .TP .B \etimestamp_ex این فیلد مشابه .B \etimestamp است اما شماره سریال رویداد را نیز شامل می‌شود. .I value باید به این قالب باشد: .sp .in +5 .nf .na ts:seconds.milli:serial .ad .fi .in -5 .sp که در آن .I serial یک عدد ده‌دهی است که شماره سریال رویداد را مشخص می‌کند. .TP .B \erecord_type مقدار، نوع رکورد فعلی است. .I value یا نام نوع رکورد است، یا یک عدد ده‌دهی که نوع را مشخص می‌کند. .SH "معناشناسی (SEMANTICS)" عبارت در کل بر یک رکورد منفرد اعمال می‌شود. عبارت برای یک رویداد مشخص برابر .B true خواهد بود اگر برای هر رکورد مرتبط با رویداد، برابر .B true باشد. .SH "مثالها (EXAMPLES)" به عنوان نمایشی از معناشناسی مدیریت فیلدهای ناموجود، عبارت زیر در صورتی .B true است که .I field حاضر باشد: .IP .B (\fIfield\fB r= \(dq\(dq) || (\fIfield\fB r!= \(dq\(dq) .PP و همین عبارت هنگامی که توسط .B !( و .B ) احاطه شده باشد، در صورتی .B true است که .I field وجود نداشته باشد. .SH "مسیرهای آینده (FUTURE DIRECTIONS)" ممکن است توالی‌های فرار جدیدی برای رشته‌های داخل نقل‌قول تعریف شوند. برای فیلدهای مجازی تعریف‌شده کنونی که رشته «خام» یا «تفسیرشده» تعریف نکرده‌اند، ممکن است تعریفی در آینده اضافه شود. بنابراین، بر این واقعیت اتکا نکنید که مقایسه رشته «خام» یا «تفسیرشده» فیلد با هر مقداری، برابر \fBfalse\fR است. ممکن است قالب‌های جدیدی از ثابت‌های مقدار برای فیلد مجازی .B \etimestamp اضافه شوند. .SH "نویسنده (AUTHOR)" Miloslav Trmac