Cú pháp tệp cấu hình LoggedFS


8

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 loggedfslệ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:


8

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:

  • logEnables là một chuỗi - "true" có nghĩa là nó thực sự sẽ xuất thông tin nhật ký; bất cứ điều gì khác vô hiệu hóa tất cả đăng nhập. Mặc định là "đúng", vì đó là loại điểm chung của chương trình
  • printProcessName là một chuỗi - "true" có nghĩa là đầu ra nhật ký sẽ bao gồm tên tiến trình, bất cứ điều gì khác có nghĩa là nó sẽ không. Mặc định là "đúng". Trong ví dụ đầu ra, kded [kdeinit]là tên quá trình

Các nút con duy nhất nó quan tâm là <include><exclude>. Trong ví dụ, họ nhóm những người bên dưới <includes><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><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><exclude>có cùng thuộc tính:

  • tiện ích mở rộng là một biểu thức chính quy được khớp với đường dẫn tuyệt đối của tệp được truy cập / sửa đổi / bất cứ điều gì ( extensionlà 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 extensionsẽ cần (một phần) khớp/mnt/loggedfs/some/file
  • uid là một chuỗi chứa một số nguyên hoặc *. 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, 1000là uid
  • hành động là loại hoạt động cụ thể được thực hiện trên hệ thống tập tin. Trong ví dụ đầu ra, getattrlà hành động. Các hành động có thể là:
    • truy cập
    • chmod
    • chown
    • nhận được
    • liên kết
    • mkdir
    • mkfifo
    • mknod
    • mở
    • mở chỉ đọc
    • đọc-viết
    • cởi mở
    • đọc
    • readdir
    • đường dẫn đọc
    • đổi tên
    • rmdir
    • bức tượng
    • liên kết tượng trưng
    • cắt ngắn
    • bỏ liên kết
    • không tưởng
    • đồ dùng
    • viết
  • retname là một biểu thức chính quy. Nếu mã trả về của hoạt động hệ thống tập tin thực tế được thực hiện bởi LoggedFS là 0, thì biểu thức chính quy được khớp với chuỗi 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, FAILUREhoặc sử dụng .*nếu bạn muốn cả hai. Trong ví dụ đầu ra, SUCCESSretname

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.


Danh sách bao gồm / loại trừ mặc định là gì (trống nên không có gì được đưa vào, tôi nghĩ vậy)? Nếu bạn bao gồm /a, loại trừ /a/bvà bao gồm /a/b/c, được /a/b/ctheo dõi? Có bao gồm một thư mục luôn bao gồm nội dung của nó?
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles Nó không biết gì về các thư mục, nó chỉ có đường dẫn tuyệt đối hoàn chỉnh và khớp với biểu thức thông thường. Vì vậy, <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 ^$, nhưng sau đó bạn cần bao gồm toàn bộ đường dẫn cho nó khớp
Michael Mrozek

@Gilles Không có bất kỳ quy tắc nào thực sự là một trường hợp đặc biệt, vì vậy tôi sẽ thêm nó vào câu trả lời
Michael Mrozek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.