Sous-routine putdevattr

Objectif

Modifie les informations de sécurité du périphérique dans la base de données des périphériques privilégiés.

Bibliothèque

Bibliothèque de sécurité (libc.a)

Syntaxe

#include <usersec.h>

int putdevattr (Device, Attribute, Value, Type)
char *Device;
char *Attribute;
void *Value;
int Type;

Descriptif

La sous-routine putdevattr écrit un attribut spécifié dans la base de données des unités. Si la base de données n'est pas ouverte, cette sous-routine effectue une ouverture implicite pour la lecture et l'écriture. Les données modifiées par les sous-routines putdevattr et putdevattrs doivent être explicitement validées en appelant la sous-routine putdevattr avec un paramètre Type spécifiant SEC_COMMIT. Jusqu'à ce que toutes les données soient validées, seules les sous-routines du processus renvoient des données écrites.

Vous devez d'abord créer de nouvelles entrées dans les bases de données d'unités en appelant la sous-routine putdevattr avec le type SEC_NEW .

Les modifications apportées à la base de données des périphériques privilégiés n'ont pas d'impact sur les considérations de sécurité tant que la base de données entière n'est pas envoyée aux tables de sécurité du noyau via le périphérique setkst ou tant que le système n'est pas réamorcé.

Paramètres

Tableau 1. Paramètres
Article Descriptif
Device Nom de l'unité. La valeur doit être le chemin d'accès complet à l'unité sur le système. Ce paramètre doit être spécifié sauf si le paramètre Type est SEC_COMMIT.
Attribute Indique que l'attribut est écrit. Les attributs possibles suivants sont définis dans le fichier usersec.h :
_READPRIVS
Privilèges requis pour la lecture à partir de l'unité. Huit privilèges peuvent être définis. Un processus disposant de l'un des privilèges de lecture est autorisé à lire à partir de l'unité. Le type d'attribut est SEC_LIST.
S_WRITEPRIVS
Privilèges requis pour écrire sur l'unité. Huit privilèges peuvent être définis. Un processus avec l'un des privilèges d'écriture est autorisé à écrire sur l'unité. Le type d'attribut est SEC_LIST.
Value Indique une mémoire tampon, un pointeur vers une mémoire tampon ou un pointeur vers un pointeur en fonction des paramètres Attribute et Type . Pour plus de détails, voir le paramètre Type .
Type Indique le type d'attribut attendu. Les types valides sont définis dans le fichier usersec.h et incluent
SEC_INT
Le format de l'attribut est un entier. L'utilisateur doit fournir un entier.
SEC_CHAR (CHAR)
Le format de l'attribut est une chaîne de caractères terminée par une valeur nulle. L'utilisateur doit fournir un pointeur de caractère.
LISTE DES SECTEURS
Le format de l'attribut est une série de chaînes concaténées, chacune terminée par une valeur nulle. La dernière chaîne de la série se termine par deux caractères nuls successifs. L'utilisateur doit fournir un pointeur de caractère.
COMMIT_SECT
Indique que les modifications apportées à l'unité nommée doivent être validées dans la mémoire permanente. Les paramètres Attribute et Value sont ignorés. Si aucune unité n'est indiquée, les modifications apportées à toutes les unités modifiées sont validées en mémoire permanente.
SUPPRESSION DE LA SÉCURITÉ
Si le paramètre Attribute est spécifié, l'attribut correspondant est supprimé de la base de données des unités avec privilèges. Si aucun paramètre Attribute n'est spécifié, la totalité de la définition d'unité est supprimée de la base de données des unités privilégiées.
SEC_NOUVEAU
Crée une nouvelle unité dans la base de données des unités avec privilèges lorsqu'elle est spécifiée avec la sous-routine putdevattr .

Security

Fichiers accédés
Tableau 2. Fichier accédé
Fichier aff
/etc/security/privdevs rw

Valeurs renvoyées

Si l'opération aboutit, la sous-routine putdevattr renvoie zéro. Sinon, la valeur -1 est renvoyée et la valeur globale errno est définie pour indiquer l'erreur.

Codes d'erreur

Si la sous-routine putdevattr échoue, l'une des valeurs errno suivantes peut être définie:

Tableau 3. Codes d'erreur
Article Descriptif
EINVAL Le paramètre Device est NULL et le paramètre Type n'est pas SEC_COMMIT.
EINVAL Le paramètre Device est default ou ALL.
EINVAL Le paramètre Attribute ne contient pas l'un des attributs définis ou est NULL.
EINVAL Le paramètre Type ne contient pas l'une des valeurs définies.
EINVAL Le paramètre Value ne pointe pas vers une mémoire tampon valide ou vers des données valides pour ce type d'attribut.
ENOENT L'unité spécifiée par le paramètre Device n'existe pas.
EPERM Or, cette opération n'est pas permise.