AU_CONTROL(3)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1

πŸ’– AU_CONTROL(3) β€” audit_control database lookups, bestie edition πŸ’–

Library Functions Manual, but make it group-chat. We’re in AU_CONTROL(3) territory, and these interfaces are here to look things up for you. Slay.


✨ NAME ✨

okay so the whole squad is: setac, endac, getacdir, getacdist, getacexpire, getacfilesz, getacflg, getachost, getacmin, getacna, getacpol, au_poltostr, and au_strtopol β€” and their whole thing is looking up information from the audit_control database. No cap.


πŸ“š LIBRARY πŸ“š

Basic Security Module Library (libbsm, -lbsm). Iconic. πŸ’…


🧚 SYNOPSIS 🧚

#include <bsm/libbsm.h>

void
setac(void);

void
endac(void);

int
getacdir(char *name, int len);

int
getacdist(void);

int
getacexpire(int *andflg, time_t *age, size_t *size);

int
getacfilesz(size_t *size_val);

int
getacflg(char *auditstr, int len);

int
getachost(char *auditstr, int len);

int
getacmin(int *min_val);

int
getacna(char *auditstr, int len);

int
getacpol(char *auditstr, size_t len);

int
getacqsize(int *size_val);

ssize_t
au_poltostr(int policy, size_t maxsize, char *buf);

int
au_strtopol(const char *polstr, int *policy);

🌸 DESCRIPTION 🌸

These interfaces may be used to look up information from the audit_control(5) database, which contains various audit-related administrative parameters. Basically your backstage pass to the audit config, bestie. πŸŽ€

  • setac() β€” resets the database iterator to the beginning of the database; see the BUGS section for more information. Yes, this is foreshadowing. πŸ’€
  • endac() β€” closes the audit_control(5) database. Byeee πŸ‘‹
  • getacdir() β€” returns the name of the directory where log data is stored via the passed character buffer name of length len. Directory reveal, periodt.
  • getacdist() β€” returns a value that lets you decide whether trail files distribution is turned on or off. The on/off vibe check.
  • getacexpire() β€” returns the audit trail file expiration parameters in the passed int buffer andflg, time_t buffer age, and size_t buffer size. If the parameter is not specified in the audit_control(5) file, it is set to zero. Zero means zero, bestie.
  • getacfilesz() β€” returns the audit trail rotation size in the passed size_t buffer size_val. Rotation size, served fresh.
  • getacflg() β€” returns the audit system flags via the passed character buffer auditstr of length len. Flags acquired. 🚩
  • getachost() β€” returns the local system’s audit host information via the passed character buffer auditstr of length len. Local host info, coming right up.
  • getacmin() β€” returns the minimum free disk space for the audit log target file system via the passed min_val variable. Disk-space minimum, handled. πŸ’½
  • getacna() β€” returns the non-attributable flags via the passed character buffer auditstr of length len. Non-attributable flags, very demure.
  • getacpol() β€” returns the audit policy flags via the passed character buffer auditstr of length len. Policy flags, served.
  • getacqsize() β€” returns the size of the audit post-commit queue in the passed size_val buffer. If the parameter is not specified in the audit_control(5) file, it is set to -1, indicating that the kernel’s default queue size is being used. So -1 is lowkey meaningful here, not just a random little guy.
  • au_poltostr() β€” converts a numeric audit policy mask, policy, to a string in the passed character buffer buf of length maxsize. Number to string, main character conversion. ✨
  • au_strtopol() β€” converts an audit policy flags string, polstr, to a numeric audit policy mask returned via policy. String to number, reverse slay.

πŸ’― RETURN VALUES πŸ’―

The getacfilesz(), getacdir(), getacexpire(), getacflg(), getachost(), getacmin(), getacna(), getacpol(), getacqsize(), and au_strtopol() functions return 0 on success, or a negative value on failure, along with error information in errno. So bestie: check errno when things go sideways. 😭

The au_poltostr() function returns a string length of 0 or more on success, or a negative value if there is a failure. Length zero is still valid, don’t act weird about it.

The getacdist() function returns 1 if trail files distribution is turned on, 0 if it is turned off, or a negative value on failure. Three moods: on, off, and error. πŸ’€

Functions that return a string value will return a failure if there is insufficient room in the passed character buffer for the full string. So pls size your buffers, bestie β€” no squeezing the whole fit into a tiny bag. πŸ‘œ


πŸ‘€ SEE ALSO πŸ‘€


πŸ•°οΈ HISTORY πŸ•°οΈ

The OpenBSM implementation was created by McAfee Research, the security division of McAfee Inc., under contract to Apple Computer, Inc., in 2004. It was subsequently adopted by the TrustedBSD Project as the foundation for the OpenBSM distribution. A whole origin story. πŸ¦‹


πŸ‘‘ AUTHORS πŸ‘‘

This software was created by Robert Watson, Wayne Salamon, and Suresh Krishnaswamy for McAfee Research, the security research division of McAfee, Inc., under contract to Apple Computer, Inc. Respect the architects. 🫢

The Basic Security Module (BSM) interface to audit records and audit event stream format were defined by Sun Microsystems. Iconic legacy behavior.


πŸ› BUGS πŸ›

These routines cannot currently distinguish between an entry not being found and an error accessing the database. The implementation should be changed to return an error via errno when NULL is returned. Yeah. That’s the messy part. πŸ™ˆ

There is no reason for the setac() interface to be exposed as part of the public API, as it is called implicitly by other access functions and iteration is not supported. So it’s giving unnecessary public appearance, honestly.

These interfaces inconsistently return various negative values depending on the failure mode, and do not always set errno on failure. Truly not the consistency slay we wanted. πŸ’€


okay that’s the page, bestie β€” source/version is Debian, the date is December 2, 2016, and the manual is AU_CONTROL(3). byeee πŸ’–πŸŽ€

πŸ“¦ where this page comes from