Sous-routine getcmdattr

Objectif

Interroge les informations de sécurité des commandes dans la base de données des commandes avec privilèges.

Bibliothèque

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

Syntaxe

#include <usersec.h>

int getcmdattr (Command, Attribute, Value, Type)
    char *Command;
    char *Attribute;
    void *Value;
    int Type;

Descriptif

La sous-routine getcmdattr lit un attribut spécifié dans la base de données de commandes. Si la base de données n'est pas ouverte, cette sous-routine effectue une ouverture implicite pour la lecture. Pour les attributs des types SEC_CHAR et SEC_LIST , la sous-routine getcmdattr renvoie la valeur à la mémoire allouée. L'appelant doit libérer cette mémoire.

Paramètres

Article Descriptif
Commande Indique le nom de la commande. La valeur doit être le chemin d'accès complet à la commande sur le système.
Attribut Indique l'attribut à lire. Les attributs possibles suivants sont définis dans le fichier usersec.h :
S_ACCESSAUTHS
Autorisations d'accès. Le type d'attribut est SEC_LIST et il s'agit d'une liste de noms d'autorisation séparés par des valeurs NULL. Seize autorisations peuvent être spécifiées. Un utilisateur disposant de l'une des autorisations est autorisé à exécuter la commande. Outre les autorisations définies par l'utilisateur et définies par le système disponibles sur le système, les trois valeurs spéciales suivantes sont autorisées:
PROPRIETAIRE
Permet au propriétaire de la commande d'exécuter la commande sans vérifier les autorisations d'accès.
GROUPE ALLOW_GROUP
Permet au groupe de commandes d'exécuter la commande sans vérifier les autorisations d'accès.
TOUT_AUTORISER
Permet à chaque utilisateur d'exécuter la commande sans vérifier les autorisations d'accès.
S_AUTHPRIVS
Privilèges autorisés. Le type d'attribut est SEC_LIST. Les paires d'autorisations de privilèges et de privilèges autorisés indiquent les privilèges de processus lors de l'exécution de la commande correspondant à l'autorisation que possède le processus parent. L'autorisation et ses privilèges correspondants sont séparés par un signe égal (=) ; les privilèges individuels sont séparés par un signe plus (+) ; les paires d'autorisation et de privilèges sont séparées par une virgule (,), comme illustré dans l'illustration suivante:
auth=priv+priv+...,auth=priv+priv...,...
Le nombre de paires d'autorisations et de privilèges est limité à seize.
S_AUTHROLES
Rôle ou liste de rôles, les utilisateurs ayant ces rôles doivent être authentifiés pour permettre l'exécution de la commande. Le type d'attribut est SEC_LIST.
S_INNATEPRIVS
Privilèges innés. Il s'agit d'une liste de privilèges séparés par des valeurs null qui sont affectés au processus lors de l'exécution de la commande. Le type d'attribut est SEC_LIST.
S_INHERITPRIVS
Privilèges héritables. Il s'agit d'une liste de privilèges séparés par des valeurs null qui sont transmis aux privilèges de processus enfant. Le type d'attribut est SEC_LIST.
ID_UE_s
ID utilisateur effectif à utiliser lors de l'exécution de la commande. Le type d'attribut est SEC_INT.
S_EGID
ID de groupe effectif à prendre en compte lors de l'exécution de la commande. Le type d'attribut est SEC_INT.
ID_RU_s
ID utilisateur réel à utiliser lors de l'exécution de la commande. Le type d'attribut est SEC_INT.
Valeur Spécifie un pointeur ou un pointeur vers un pointeur en fonction de la valeur spécifiée dans les paramètres Attribut et Type . Pour plus de détails, voir le paramètre Type .
type Indique le type d'attribut. Les types valides suivants sont définis dans le fichier usersec.h :
SEC_INT
Le format de l'attribut est un entier. Pour la sous-routine, l'utilisateur doit fournir un pointeur vers une variable entière définie.
SEC_CHAR (CHAR)
Le format de l'attribut est une chaîne de caractères terminée par une valeur nulle. Pour la sous-routine, l'utilisateur doit fournir un pointeur vers une variable de pointeur de caractères définie. L'appelant doit libérer cette mémoire.
LISTE DES SECTEURS
Le format de l'attribut est une série de chaînes concaténées dont chacune se termine par une valeur nulle. La dernière chaîne de la série se termine par deux caractères nuls successifs. Pour la sous-routine, l'utilisateur doit fournir un pointeur vers une variable de pointeur de caractères définie. L'appelant doit libérer cette mémoire.

Security

Fichiers accédés :
Fichier Mode
/etc/security/privcmds rw

Valeurs renvoyées

Si l'opération aboutit, la sous-routine getcmdattr renvoie zéro. Dans le cas contraire, 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 getcmdattr échoue, l'une des valeurs errno suivantes est définie:

Article Descriptif
EINVAL Le paramètre Command est NULL ou default.
EINVAL Le tableau Attribut ou le paramètre Type est NULL ou ne contient pas l'une des valeurs définies.
ENATTR Le tableau Attribut est S_PRIVCMDS, mais le paramètre Commande n'est pas ALL.
ENOENT La commande spécifiée dans le paramètre Commande n'existe pas.
ENATTR L'attribut spécifié dans le tableau Attribut est valide, mais aucune valeur n'est définie pour la commande.
EPERM Or, cette opération n'est pas permise.
EIO Echec de l'accès à la base de données de commandes distante.