Steve, Thanks for the reply. I must have something wrong with my system as I can't get it to work even running it as root. I get an error of: FAILURE: errno = 22 Error writing audit file: Invalid argument Error writing audit: Illegal seek Also how do I set auditd to allow other process(s) running not as root to write to the netlink/kernel ( i.e. set CAP_AUDIT_WRITE)? I could not find any info on this. Also where do I find these trusted app examples? Is this something I down loa the src of Linux and look for? snip ----- fd = audit_open(); if (fd < 0) { printf("audit open failure, errno = %d\n", errno); } else { printf("audit file opened, fd = %d\n", fd); printf("attempting to write to audit log.\n"); snprintf(msg, sizeof(msg), "My mesg to audit"); if ((rc = audit_log_user_message(fd, 1101, msg, NULL, NULL, NULL, 0)) > 0) printf("SUCCESS: rc = %d\n", rc); else { printf("FAILURE: errno = %d\n", errno); perror( "Error writing audit file" ); printf( "Error writing audit: %s\n", strerror( errno ) ); } Steve Grubb wrote: >On Saturday 17 March 2007 14:54:54 geckiv wrote: > > >>I was wondering if anyone had a good example of how to write to the >>audit log on linux for a custom application wanting to log events. >> >> > >There's several examples in trusted apps. But its really simple to do. This is >from aide: > >#ifdef WITH_AUDIT > if(nadd!=0||nrem!=0||nchg!=0){ > int fd=audit_open(); > if (fd>=0){ > char msg[64]; > > snprintf(msg, sizeof(msg), "added=%ld removed=%ld changed=%ld", > nadd, nrem, nchg); > > if (audit_log_user_message(fd, AUDIT_ANOM_RBAC_INTEGRITY_FAIL, > msg, NULL, NULL, NULL, 0)<=0) >#ifdef HAVE_SYSLOG > syslog(LOG_ERR, "Failed sending audit message:%s", msg); >#else > ; >#endif > close(fd); > } > >Being that I don't know what your app is doing, I'd say that you should use >the AUDIT_TRUSTED_APP event type. Also try to follow guidelines so that it >can be parsed correctly by tools: > >http://people.redhat.com/sgrubb/audit/audit-parse.txt > > > >>Does it write to the demon then write to the /var/log/auit/audit.log? >> >> > >No, it sends it to the kernel which decides what to do with it. > > > >>Also how do yo set this up so not just any one or any process write to that >>log? >> >> > >The audit system is intended to be high integrity, meaning that its not able >to be written to by ordinary users. You have to have CAP_AUDIT_WRITE in order >to write to the audit system. > >-Steve > > > >