Задать вопрос
2lazy4dat
@2lazy4dat

Как работать с библиотекой libaudit?

Пытаюсь разобраться как работать с библиотекой libaudit, хочу написать службу на C/C++, которая будет получать события о действиях пользователя (какие файлы открывал, что запускал, что пытался изменить, пытался ли передать что-либо по сетевому соединению).

Например, для теста устанавливаю правило на отслеживание создание директории в /tmp:

int audit_fd = audit_open();

struct audit_rule_data *rule = (struct audit_rule_data *) malloc(sizeof(struct audit_rule_data));
memset(rule, 0, sizeof(struct audit_rule_data));

audit_rule_syscallbyname_data(rule, "mkdir");
audit_add_watch_dir(AUDIT_DIR, &rule, "/tmp");
audit_add_rule_data(audit_fd,
                        rule,
                        AUDIT_FILTER_USER,
                        AUDIT_ALWAYS);

int rc;
fd_set read_mask;
FD_ZERO(&read_mask);
FD_SET(audit_fd, &read_mask);

struct timeval t;
t.tv_sec  = 0;
t.tv_usec = 300 * 1000;

do
{
    rc = select(audit_fd+1, &read_mask, NULL, NULL, &t /*NULL*/);

    struct audit_reply rep;
    audit_get_reply(audit_fd, &rep, GET_REPLY_NONBLOCKING, 0);

    if (rep != NULL)
    {
        printf("%s", rep.message);
        break;
    }
}
while (rc < 0); 

audit_close(audit_fd);


Но задание правила аудита не срабатывает, кто-нибудь работал с этой библиотекой? Что не так? Или может есть другие способы получения событий о действиях пользователя?
  • Вопрос задан
  • 173 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы