Sous-routine putpfileattrs

Objectif

Met à jour plusieurs attributs de fichier dans la base de données des fichiers avec privilèges.

Bibliothèque

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

Syntaxe

#include <usersec.h>

int putpfileattrs(File, Attributes, Count)
    char *File;
    dbattr_t *Attributes;
    int Count;

Descriptif

La sous-routine putpfileattrs modifie un ou plusieurs attributs de la base de données des fichiers avec privilèges (/etc/security/privfiles). Si la base de données n'est pas ouverte, cette sous-routine l'ouvre implicitement pour la lecture et l'écriture. Le fichier spécifié par le paramètre Fichier doit inclure le chemin d'accès complet au fichier et exister dans la base de données des fichiers avec privilèges.

La sous-routine putpfileattrs est utilisée uniquement pour modifier les attributs des fichiers existants dans la base de données. Pour créer ou supprimer des entrées de fichier, utilisez la sous-routine putpfileattr à la place. Les données modifiées par la sous-routine putpfileattrs doivent être explicitement validées en appelant la sous-routine putpfileattr avec un paramètre Type spécifiant SEC_COMMIT. Tant que toutes les données ne sont pas validées, seules les sous-routines getpfileattr et getpfileattrs du processus renvoient les données modifiées.

Le tableau Attributs contient des informations sur chaque attribut à mettre à jour. Chaque élément du tableau Attributs doit être examiné lors d'un appel réussi à la sous-routine putpfileattrs pour déterminer si le tableau Attributs a été correctement écrit. La structure dbattr_t data contient les zones suivantes:
Article Descriptif
nom_attr Nom de l'attribut de fichier à mettre à jour.
attr_idx Cet attribut est utilisé en interne par la sous-routine putpfileattrs .
type_attr Type de l'attribut en cours de mise à jour.
indice_attr Résultat de la demande de mise à jour de l'attribut souhaité. En cas de réussite, la valeur zéro est renvoyée. Sinon, une valeur différente de zéro est renvoyée.
un_attr Union contenant la valeur avec laquelle mettre à jour l'attribut demandé.
Les attributs de fichier privilégiés valides pour la sous-routine putpfileattrs définie dans le fichier usersec.h sont les suivants:
Nom Descriptif Type
S_PRIVLES Extrait tous les fichiers de la base de données des fichiers avec privilèges. Elle est valide uniquement lorsque le paramètre Fichier a pour valeur ALL. Liste_SECO
S_READAUTHS Autorisation de lecture. Il s'agit d'une liste de noms d'autorisation séparés par des valeurs NULL. Au total, huit autorisations peuvent être spécifiées. Un utilisateur disposant de l'une des autorisations est autorisé à lire le fichier à l'aide de l'éditeur privilégié /usr/bin/pvi. Liste_SECO
S_WRITEAUTHS Autorisation d'écriture. Il s'agit d'une liste de noms d'autorisation séparés par des valeurs NULL. Au total, huit autorisations peuvent être spécifiées. Un utilisateur disposant de l'une des autorisations est autorisé à écrire le fichier à l'aide de l'éditeur privilégié /usr/bin/pvi. Liste_SECO
Les membres de l'union qui suivent correspondent aux définitions des macros attr_char, attr_int, attr_long et attr_llong du fichier usersec.h respectivement.
Article Descriptif
caractère_aug Un pointeur de caractère vers la valeur à écrire pour les attributs des types SEC_CHAR et SEC_LIST . Si le pointeur est vers la mémoire allouée, l'appelant est responsable de la libération de la mémoire.
au_int Valeur entière à écrire pour les attributs de type SEC_INT .
au_long Valeur longue à écrire pour les attributs de type SEC_LONG .
au_llong Valeur longue à écrire pour les attributs du type SEC_LLONG .

Paramètres

Article Descriptif
Fichier Indique le nom de fichier pour lequel les attributs doivent être mis à jour.
Attributs Un pointeur vers un tableau d'aucun ou de plusieurs éléments du type dbattr_t . La liste des attributs de fichier est définie dans le fichier d'en-tête usersec.h .
count Nombre d'éléments de tableau dans le tableau Attributs.

Security

Fichiers accédés :
Fichier aff
/etc/security/privfiles rw

Valeurs renvoyées

Si le fichier spécifié par le paramètre Fichier existe dans la base de données des fichiers privilégiés, la sous-routine putpfileattrs renvoie la valeur zéro, même si aucun attribut du tableau Attributs n'a été mis à jour avec succès. En cas de réussite, l'attribut attr_flag de chaque élément du tableau Attributs doit être examiné pour déterminer s'il a été correctement mis à jour. Si le fichier spécifié n'existe pas dans la base de données, la valeur -1 est renvoyée et la valeur errno est définie pour indiquer l'erreur.

Codes d'erreur

Si la sous-routine putpfileattrs renvoie -1, l'une des valeurs errno suivantes peut être définie :
Article Descriptif
EINVAL Le paramètre Fichier est NULL, par défaut ou ALL.
EINVAL Le paramètre Nombre est inférieur à zéro.
EINVAL Le paramètre Attributs est NULL et le paramètre Nombre est supérieur à zéro.
EINVAL Le paramètre Attributs ne pointe pas vers des données valides pour l'attribut demandé.
ENOENT Le fichier spécifié dans le paramètre Fichier n'existe pas.
EPERM Or, cette opération n'est pas permise.
Si la sous-routine putpfileattrs ne parvient pas à mettre à jour un attribut, l'une des erreurs suivantes est renvoyée dans la zone attr_flag de l'élément Attributes correspondant:
Article Descriptif
EACCES L'appelant ne dispose pas d'un accès en écriture à la base de données de fichiers avec privilèges.
EINVAL La zone nom_attr de l'entrée Attributs n'est pas un attribut de fichier privilégié reconnu.
EINVAL La zone attr_type de l'entrée Attributs contient un type non valide.
EINVAL La zone attr_un de l'entrée Attributs ne pointe pas vers une mémoire tampon valide ou vers des données valides pour ce type d'attribut.