Apa sintaks dari file konfigurasi LoggedFS ?
Dokumentasi resmi hanya memiliki instruksi penggunaan untuk loggedfs
perintah dan contoh file konfigurasi. Oke, ini XML, tapi apa saja kemungkinan tag dan atribut dan apa artinya?
Saya melihat Config.cpp
, file yang bertanggung jawab untuk mengurai konfigurasi. Contoh konfigurasi sebenarnya melakukan pekerjaan yang cukup bagus untuk menangkap opsi yang tersedia - tidak banyak
Ketika saya merujuk ke "output contoh" di bawah, saya berbicara tentang baris ini (ditarik secara acak dari halaman sampel):
17:29:35 (src/loggedfs.cpp:136) getattr /var/ {SUCCESS} [ pid = 8700 kded [kdeinit] uid = 1000 ]
Tag root adalah <loggedFS>
. Ini memiliki dua atribut opsional:
kded [kdeinit]
adalah nama prosesSatu-satunya simpul anak yang dipedulikannya adalah <include>
dan <exclude>
. Dalam contoh mereka mengelompokkan yang di bawah <includes>
dan <excludes>
blok, tetapi mereka diabaikan oleh parser (seperti halnya node lain kecuali <include>
dan <exclude>
).
Secara alami, <include>
aturan menyebabkannya mengeluarkan garis log jika cocok, sedangkan <exclude>
garis menyebabkannya tidak. Jika terjadi tumpang tindih, <exclude>
timpa <include>
. Biasanya Anda membutuhkan setidaknya satu <include>
aturan untuk mencocokkan acara yang akan dicatat, tetapi pengecualian adalah jika ada 0 <include>
aturan - maka semua acara dicatat, bahkan jika ada <exclude>
baris yang cocok .
Keduanya <include>
dan <exclude>
mengambil atribut yang sama:
extension
adalah nama yang agak buruk, tapi saya rasa itu adalah penggunaan umum). Misalnya, jika Anda touch /mnt/loggedfs/some/file
, ekspresi reguler di extension
perlu (parsial) cocok/mnt/loggedfs/some/file
*
. Aturan hanya cocok dengan operasi yang diberikan jika pemilik proses yang menyebabkan operasi memiliki ID pengguna yang ditentukan ( *
secara alami berarti setiap ID pengguna cocok). Dalam contoh output, 1000
adalah uidgetattr
adalah tindakan. Tindakan yang mungkin dilakukan adalah:
SUCCESS
. Kode pengembalian yang tidak nol menyebabkannya cocok FAILURE
. Mereka adalah nilai-nilai hanya mungkin, sehingga kemungkinan besar Anda baik akan hardcode SUCCESS
, FAILURE
, atau penggunaan .*
jika Anda ingin kedua. Dalam contoh output, SUCCESS
adalahretname
Berbeda dengan <loggedFS>
atribut, ini tidak memiliki standar. Juga, sementara parser akan mengenali atribut yang tidak dikenal dan kesalahan keluar, itu tidak mendeteksi atribut yang hilang, jadi jika Anda lupa atribut itu akan menggunakan memori yang tidak diinisialisasi.
/a
, mengecualikan/a/b
dan memasukkan/a/b/c
, apakah Anda/a/b/c
ditonton? Apakah termasuk direktori selalu menyertakan isinya?<include extension="/a" uid="*" action=".*" retname=".*" />
akan mencocokkan setiap operasi yang beroperasi pada file yang jalurnya berisi/a
- bahkan bisa jadi/foo/abc/bar
. Anda mungkin ingin menjangkar mereka semua dengan^
dan$
, tetapi kemudian Anda harus menyertakan seluruh jalan untuk mencocokkan