getenv, secure_getenv - Lire une variable d'environnement
Bibliothèque C standard (
libc,
-lc)
#include <stdlib.h>
char *getenv(const char *name);
char *secure_getenv(const char *name);
secure_getenv() :
_GNU_SOURCE
La fonction
getenv() recherche dans la liste des variables
d'environnement une variable nommée
name, et renvoie un pointeur
sur la chaîne
value correspondante.
La fonction
secure_getenv() spécifique à GNU est simplement
comme
getenv(), à la différence qu'elle renvoie NULL dans
les cas où « secure execution »
(exécution sécurisée) est nécessaire.
L'exécution sécurisée est nécessaire si l'une des
conditions suivantes était vraie quand le programme
exécuté pour le processus appelant a été
chargé :
- •
- l'UID effectif du processus ne correspondait pas à
son UID réel, ou le GID effectif du processus ne correspondait pas
à son GID réel (c'est typiquement le cas lors de
l'exécution d'un programme Set-UID ou Set-GID) ;
- •
- le bit de capacité effective a été
défini sur le fichier exécutable ;
- •
- le processus a une capacité non vide permise
définie.
L'exécution sécurisée pourrait aussi être
nécessaire si elle est déclenchée par certains modules de
sécurité Linux.
La fonction
secure_getenv() a pour but d'être utilisée dans
les bibliothèques polyvalentes pour éviter les
vulnérabilités qui pourraient survenir si des programmes Set-UID
ou Set-GID faisaient accidentellement confiance à l'environnement.
La fonction
getenv() renvoie un pointeur sur la valeur correspondante de
l'environnement ou NULL s'il n'y a pas de correspondance.
secure_getenv() a été introduite dans la glibc dans sa
version 2.17.
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
getenv(), secure_getenv() |
Sécurité des threads |
MT-Safe env |
getenv() : POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.
secure_getenv() est une extension GNU.
Les chaînes dans la liste des variables d'environnement sont de la forme
nom=valeur.
Telle qu'elle est généralement implémentée,
getenv() renvoie un pointeur vers une chaîne de la liste
d'environnement. L'appelant doit faire attention à ne pas modifier
cette chaîne car cela modifierait l'environnement du processus.
L'implémentation de
getenv() ne nécessite pas qu'elle soit
réentrante. La chaîne pointée par la valeur de retour de
getenv() peut être allouée statiquement et peut
être modifiée par un appel ultérieur à
getenv(),
putenv(3),
setenv(3) ou
unsetenv(3).
Le mode « secure execution » (exécution
sécurisée) de
secure_getenv() est contrôlé
par l'attribut
AT_SECURE contenu dans le vecteur auxiliaire
passé du noyau à l'espace utilisateur.
clearenv(3),
getauxval(3),
putenv(3),
setenv(3),
unsetenv(3),
capabilities(7),
environ(7)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]> et David Prévot <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]