addproj, Subroutine

Zweck

Fügt eine API-basierte Projektdefinition zur Kernelprojektregistry hinzu.

Bibliothek

Bibliothek libaacct.a

Syntax

<sys/aacct.h>

addproj(struct project *)

Beschreibung

Die Subroutine addproj definiert die anwendungsbasierte Projektdefinition für das Kernel-Repository. Eine Anwendung kann ein auf diese Weise definiertes Projekt mithilfe des Systemaufrufs proj_execve zuordnen.

Projekte, die auf diese Weise hinzugefügt werden, werden von Anwendungen als angegeben markiert, sodass sie sich nicht mit vom Systemadministrator definierten Projekten überschneiden, die mit dem Befehl projctl definiert wurden. Das Flag PROJFLAG_API ist im Strukturprojekt aktiviert, um anzuzeigen, dass die Projektdefinition von einer Anwendung hinzugefügt wurde.

Projekte, die von einem Systemadministrator mit dem Befehl projctl hinzugefügt wurden, werden mit dem Flag PROJFLAGS_LDAP oder PROJFLAGS_PDF als aus den lokalen oder LDAP-basierten Projektrepositorys abgeleitet markiert. Wenn eines dieser Flags angegeben wird, schlägt die Subroutine addproj mit EPERMfehl.

Mit der Routine getproj kann der Ursprung eines geladenen Projekts ermittelt werden.

Der Befehl addproj überprüft die Eingabeprojektnummer, um sicherzustellen, dass sie im erwarteten Bereich von 0x00000001 bis 0x00ffffffliegt. Außerdem wird geprüft, ob der Projektname eine POSIX -kompatible alphanumerische Zeichenfolge ist. Wenn eine ungültige Eingabe gefunden wird, wird errno auf EINVAL gesetzt und das Unterprogramm addproj gibt -1 zurück.

Parameter

Element Beschreibung
project Verweist auf eine Projektstruktur, die die Definition des hinzuzufügenden Projekts enthält.

Sicherheit

Nur für privilegierte Benutzer. Die Berechtigung kann auf Benutzer ohne Rootberechtigung erweitert werden, indem einem Benutzer die Berechtigung CAP_AACCT erteilt wird.

Rückgabewerte

Element Beschreibung
0 Erfolg
-1 Fehlschlag

Fehlercodes

Element Beschreibung
EINVAL Ungültiger Projektname/ungültige Nummer oder der übergebene Zeiger ist NULL
EEXIST Projektdefinition vorhanden
EPERM Berechtigung verweigert, kein privilegierter Benutzer