GETENV(3) Manuel du programmeur Linux GETENV(3)

getenv, secure_getenv - Lire une variable d'environnement

#include <stdlib.h>
char *getenv(const char *name);
char *secure_getenv(const char *name);
Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :

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, C89, 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)

Cette page fait partie de la publication 5.11 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page, peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

La traduction française de cette page de manuel a été créée par Christophe Blaess https://www.blaess.fr/christophe/, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>

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 à debian-l10n-french@lists.debian.org.

22 mars 2021 GNU