auditobj, Subroutine

Zweck

Ruft den Überwachungsmodus eines Systemdatenobjekts ab oder legt ihn fest.

Bibliothek

Standard-C-Bibliothek (libc.a)

Syntax

#include <sys/audit.h>
int auditobj ( Command Obj_Events ObjSize)
int Command;
struct o_event *Obj_Events;
int ObjSize;

Beschreibung

Die Subroutine auditobj fragt die zu generierenden Prüfereignisse ab oder legt sie fest, indem sie auf ausgewählte Objekte zugreift. Für jedes Objekt im Namensbereich des Dateisystems kann das für jeden Zugriffsmodus generierte Ereignis angegeben werden. Mit der Subroutine auditobj kann ein Administrator neue Prüfereignisse im System für Zugriffe auf angegebene Objekte definieren. Diese Ereignisse werden wie systemdefinierte Ereignisse behandelt.

Die Systemprotokollierung muss nicht aktiviert sein, damit die Objektprotokollierungsereignisse festgelegt oder abgefragt werden können. Die Subroutine audit kann mit dem AUDIT_RESET -Befehl angewiesen werden, die Definitionen von Objektprüfereignissen zu löschen.

Parameter

Element Beschreibung
Befehl Gibt an, ob die Objektprüfereignislisten gelesen oder geschrieben werden sollen Die gültigen Werte, die in der Datei sys/audit.h für den Parameter Befehl definiert sind, sind:
AUDIT_SET
Legt die Liste der Objektprüfereignisse fest, nachdem zuerst alle vorherigen Definitionen gelöscht wurden.
AUDIT_GET
Fragt die Liste der Objektprüfereignisse ab.
AUDIT_LOCK (AUDIT_LOCK)
Fragt die Liste der Objektprüfereignisse ab und blockiert auch alle anderen Prozesse, die versuchen, die Liste der Prüfereignisse festzulegen oder zu sperren. Die Sperre wird freigegeben, wenn der Prozess, der die Sperre hält, abstürzt oder die Subroutine auditobj aufruft, wobei der Parameter Befehl auf AUDIT_SETgesetzt ist.
Objektereignisse Gibt das Array von o_event -Strukturen für die Operation AUDIT_SET oder nach der Operation AUDIT_GET oder AUDIT_LOCK an. Die Struktur o_event ist in der Datei sys/audit.h definiert und enthält die folgenden Member:
o_type
Gibt den Typ des Objekts in Form eines Namensbereichs an. Derzeit wird nur ein Objektbenennungsbereich unterstützt:
AUDIT_DATEI
Gibt den Namensbereich des Dateisystems an.
 
o_name
Gibt den Namen des Objekts an
o_event
Gibt ein Array von Ereignisnamen an, die generiert werden, wenn auf das Objekt zugegriffen wird. Beachten Sie, dass Ereignisnamen derzeit auf 16 Byte beschränkt sind, einschließlich der abschließenden Null. Der Index eines Ereignisnamens in diesem Array entspricht einem Zugriffsmodus. Gültige Indizes sind in der Datei audit.h definiert und umfassen Folgendes:
  • AUDIT_READ
  • AUDIT_WRITE (AUDIT_WRITE)
  • AUDIT_EXEC
Hinweis: Der C + + -Compiler generiert eine Warnung, die angibt, dass o_event sowohl als Struktur als auch als Feld in dieser Struktur definiert ist. Obwohl das Feld o_event in C++ verwendet werden kann, kann die Warnung umgangen werden, indem O_EVENT_RENAMEdefiniert wird. Dadurch wird das Feld o_event durch o_event_arrayersetzt. o_event ist das Standardfeld.
ObjSize Bei einer AUDIT_SET -Operation gibt der Parameter ObjSize die Anzahl der Objektprüfereignisdefinitionen in dem Array an, auf das der Parameter Obj_Events verweist. Bei einer AUDIT_GET -oder AUDIT_LOCK -Operation gibt der -ParameterObjSize die Größe des Puffers an, auf den der Parameter Objekt_Ereignisse verweist.

Rückgabewerte

Wenn die Subroutine auditobj erfolgreich ausgeführt wird, wird die Anzahl der Ereignisdefinitionen für die Objektprüfung zurückgegeben, wenn der Parameter Befehl auf AUDIT_GET oder AUDIT_LOCKgesetzt ist. Der Wert 0 wird zurückgegeben, wenn der Parameter Befehl auf AUDIT_SETgesetzt ist. Wenn dieser Aufruf fehlschlägt, wird der Wert -1 zurückgegeben und die globale Variable errno gesetzt, um den Fehler anzuzeigen.

Fehlercodes

Die Subroutine auditobj schlägt fehl, wenn eine der folgenden Bedingungen zutrifft:

Element Beschreibung
EFAULT Der Parameter Obj_Events verweist außerhalb des Adressraums des Prozesses.
EFAULT Der Parameter Befehl ist AUDIT_SETund einer oder mehrere dero_namezeigt außerhalb des Adressraums des Prozesses.
EFAULT Der Parameter Befehl ist AUDIT_GET oder AUDIT_LOCKund die Puffergröße des Parameters Obj_Events ist nicht groß genug, um die ganze Zahl aufzunehmen.
EINVAL Der Wert des Parameters Befehl ist nicht AUDIT_SET, AUDIT_GET oder AUDIT_LOCK.
EINVAL Der Parameter Befehl ist AUDIT_SETund der Wert eines oder mehrerer dero_typeist nicht AUDIT_FILE.
EINVAL Ein Ereignisname war länger als 15 signifikante Zeichen.
ENOENT Der Parameter Befehl ist AUDIT_SETund das übergeordnete Verzeichnis eines der Dateisystemobjekte ist nicht vorhanden.
ENOSPC Der Wert des Parameters Befehl ist AUDIT_GET oder AUDIT_LOCKund die Größe des Puffers, wie durch den Parameter ObjSize angegeben, ist nicht groß genug, um die Liste der Ereignisstrukturen und Namen aufzunehmen. In diesem Fall wird das erste Wort des Puffers auf die erforderliche Puffergröße gesetzt.
ENOMEM Hauptspeicherzuordnung fehlgeschlagen.
EBUSY Ein anderer Prozess hat die Subroutine auditobj mit AUDIT_LOCKaufgerufen.
EPERM Der Aufrufende hat keine Rootberechtigung.