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. |