gpt4 book ai didi

c - 如何在 linux 中使用审计来使用 libaudit 监控文件

转载 作者:太空狗 更新时间:2023-10-29 12:38:54 25 4
gpt4 key购买 nike

上一个问题显示了 libaudit 的代码 How to use libaudit?

但答案不是一个完整的例子。我添加了包含文件来创建 mwe,但它不起作用。在这种情况下,我正在监视一个文件,并期望每当文件发生更改时都会回调监视函数。我尝试触摸并附加到文件,但没有任何反应。谁能发现我做错了什么?

#include <stdio.h>
#include <libaudit.h>
#include <unistd.h>
#include <ev.h>

int fd;

void monitoring(struct ev_loop *loop, struct ev_io *io, int revents) {
struct audit_reply reply;

audit_get_reply(fd, &reply, GET_REPLY_NONBLOCKING, 0);

if (reply.type != AUDIT_EOE &&
reply.type != AUDIT_PROCTITLE &&
reply.type != AUDIT_PATH) {
printf("Event: Type=%s Message=%.*s\n",
audit_msg_type_to_name(reply.type),
reply.len,
reply.message);
}
}

int main() {
fd = audit_open();
struct audit_rule_data* rule = new audit_rule_data();

// what directory we will follow.
// audit_add_watch_dir(AUDIT_DIR, &rule, "foo");

audit_add_watch(&rule, "foo/test.txt");

// setting rule.
audit_add_rule_data(fd, rule, AUDIT_FILTER_USER, AUDIT_ALWAYS);
struct ev_io monitor;
audit_set_pid(fd, getpid(), WAIT_YES);

audit_set_enabled(fd, 1);
struct ev_loop *loop = ev_default_loop(EVFLAG_NOENV);

ev_io_init(&monitor, monitoring, fd, EV_READ);
ev_io_start(loop, &monitor);

ev_loop(loop, 0);

audit_close(fd);
return 0;
}

最佳答案

原来我忘了用sudo运行,这只能在root权限下运行但它没有崩溃,只是没有任何报告。

关于c - 如何在 linux 中使用审计来使用 libaudit 监控文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57534297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com