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