NOM¶
getpass - Obtenir un mot de passe (password)
SYNOPSIS¶
#include <unistd.h>
char *getpass( const char *prompt);
Exigences de macros de test de fonctionnalités pour la glibc (consultez
feature_test_macros(7)) :
getpass() :
- Depuis la glibc 2.2.2 :
-
_BSD_SOURCE ||
(_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
!(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
-
Avant la glibc 2.2.2 : aucune
-
DESCRIPTION¶
Cette fonction est obsolète, ne l'utilisez pas.
La fonction
getpass() ouvre
/dev/tty (le terminal de contrôle
du processus) affiche le message d'accueil
prompt, éteint
l'écho local, lit une ligne (le mot de passe), puis restaure l'état
de
/dev/tty et le referme.
VALEUR RENVOYÉE¶
La fonction
getpass() renvoie un pointeur sur une chaîne de
caractères allouée statiquement contenant les
PASS_MAX
premiers caractères du mot de passe sans le retour chariot final,
terminé par un caractère nul (« \0 »). Ce tampon
peut être écrasé par un autre appel. En cas d'erreur,
l'état du terminal est restauré,
errno est rempli, et la
fonction renvoie NULL.
ERREURS¶
La fonction peut échouer dans les cas suivants :
- ENXIO
- Le processus n'a pas de terminal de contrôle.
FICHIERS¶
/dev/tty
Présent dans SUSv2, mais marquée « LEGACY ».
Supprimé de POSIX.1-2001.
NOTES¶
Dans les versions libc4 et libc5, le message n'est pas affiché sur
/dev/tty mais sur
stderr. De plus, si
/dev/tty ne peut
être ouvert, le mot de passe est lu depuis
stdin. Le tampon
statique a une longueur de 128 octets, aussi seulement 127 caractères du
mot de passe sont renvoyés. Durant la lecture, les signaux (
SIGINT,
SIGQUIT,
SIGSTOP,
SIGTSTP) sont
désactivés et les caractères de contrôle correspondant (en
général Ctrl-C, Ctrl-\, Ctrl-Z et Ctrl-Y) sont transmis comme part
intégrante du mot de passe. Depuis la libc 5.4.19, l'édition de
ligne est également désactivée, ainsi les retours en
arrières, etc., seront présents dans le mot de passe.
Pour la glibc2, si
/dev/tty ne peut pas être ouvert, le message est
envoyé sur
stderr et le mot de passe lu sur
stdin. Il n'y a
pas de limite à la longueur du mot de passe. L'édition de ligne
n'est pas désactivée.
D'après SUSv2, la valeur de
PASS_MAX doit être définie
dans
<limits.h> au cas où elle est inférieure à 8,
et doit toujours être accessible avec
sysconf(_SC_PASS_MAX).
Quoiqu'il en soit, POSIX.2 retire les constantes
PASS_MAX et
_SC_PASS_MAX, ainsi que la fonction
getpass(). Les
bibliothèques libc4 et libc5 n'ont jamais géré
PASS_MAX
ou
_SC_PASS_MAX. La glibc2 accepte
_SC_PASS_MAX et renvoie
BUFSIZ (par exemple, 8192).
BOGUES¶
Le processus appelant doit effacer le mot de passe saisi aussi vite que
possible, afin d'éviter d'en conserver une copie en texte clair dans son
espace d'adressage.
VOIR AUSSI¶
crypt(3)
COLOPHON¶
Cette page fait partie de la publication 3.44 du projet
man-pages Linux.
Une description du projet et des instructions pour signaler des anomalies
peuvent être trouvées à l'adresse
<
http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
<
http://po4a.alioth.debian.org/> par l'équipe de traduction
francophone au sein du projet perkamon
<
http://perkamon.alioth.debian.org/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Florentin Duneau et
l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande «
man -L C
<section> <page_de_man> ».