Cú pháp của tệp cấu hình LoggedFS là gì?
Tài liệu chính thức chỉ có hướng dẫn sử dụng cho loggedfs
lệnh và ví dụ về tệp cấu hình. Ok, đó là XML, nhưng tất cả các thẻ và thuộc tính có thể là gì và ý nghĩa của chúng là gì?
Cú pháp của tệp cấu hình LoggedFS là gì?
Tài liệu chính thức chỉ có hướng dẫn sử dụng cho loggedfs
lệnh và ví dụ về tệp cấu hình. Ok, đó là XML, nhưng tất cả các thẻ và thuộc tính có thể là gì và ý nghĩa của chúng là gì?
Câu trả lời:
Tôi chọc qua Config.cpp
, tập tin chịu trách nhiệm phân tích cấu hình. Cấu hình ví dụ thực sự làm rất tốt việc nắm bắt các tùy chọn có sẵn - không có nhiều
Khi tôi đề cập đến "đầu ra ví dụ" bên dưới, tôi đang nói về dòng này (được lấy ngẫu nhiên từ trang mẫu):
17:29:35 (src/loggedfs.cpp:136) getattr /var/ {SUCCESS} [ pid = 8700 kded [kdeinit] uid = 1000 ]
Thẻ gốc là <loggedFS>
. Nó có hai thuộc tính tùy chọn:
kded [kdeinit]
là tên quá trìnhCác nút con duy nhất nó quan tâm là <include>
và <exclude>
. Trong ví dụ, họ nhóm những người bên dưới <includes>
và <excludes>
các khối, nhưng những người bị bỏ qua bởi trình phân tích cú pháp (như bất kỳ nút nào khác ngoại trừ <include>
và <exclude>
).
Đương nhiên, <include>
các quy tắc làm cho nó xuất ra dòng nhật ký nếu chúng khớp, trong khi <exclude>
các dòng làm cho nó không. Trong trường hợp chồng chéo, <exclude>
ghi đè <include>
. Thông thường bạn cần ít nhất một <include>
quy tắc để khớp với một sự kiện được ghi lại, nhưng một ngoại lệ là nếu có 0 <include>
quy tắc - thì tất cả các sự kiện đều được ghi lại, ngay cả khi có <exclude>
các dòng khớp .
Cả hai <include>
và <exclude>
có cùng thuộc tính:
extension
là một tên khá nghèo nàn, nhưng tôi đoán đó là cách sử dụng phổ biến). Ví dụ: nếu bạn touch /mnt/loggedfs/some/file
, biểu thức chính quy extension
sẽ cần (một phần) khớp/mnt/loggedfs/some/file
*
. Quy tắc chỉ khớp với một hoạt động nhất định nếu chủ sở hữu của quy trình gây ra hoạt động đó có ID người dùng được chỉ định ( *
tự nhiên có nghĩa là bất kỳ ID người dùng nào khớp). Trong ví dụ đầu ra, 1000
là uidgetattr
là hành động. Các hành động có thể là:
SUCCESS
. Mã trả về khác không làm cho nó khớp với FAILURE
. Đó là những giá trị chỉ có thể, vì vậy rất có thể bạn đang hoặc sẽ hardcode SUCCESS
, FAILURE
hoặc sử dụng .*
nếu bạn muốn cả hai. Trong ví dụ đầu ra, SUCCESS
làretname
Không giống như với các <loggedFS>
thuộc tính, chúng không có mặc định. Ngoài ra, trong khi trình phân tích cú pháp sẽ nhận ra các thuộc tính không xác định và lỗi, nó không phát hiện các thuộc tính bị thiếu, vì vậy nếu bạn quên một thuộc tính, nó sẽ sử dụng bộ nhớ chưa được khởi tạo.
<include extension="/a" uid="*" action=".*" retname=".*" />
sẽ phù hợp với mọi hoạt động hoạt động trên một tệp có đường dẫn chứa /a
- nó thậm chí có thể /foo/abc/bar
. Bạn có thể muốn neo tất cả chúng với ^
và $
, nhưng sau đó bạn cần bao gồm toàn bộ đường dẫn cho nó khớp
/a
, loại trừ/a/b
và bao gồm/a/b/c
, được/a/b/c
theo dõi? Có bao gồm một thư mục luôn bao gồm nội dung của nó?