Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]
GETSPNAM
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- Versions ré-entrantes
- Structure
- VALEUR RENVOYÉE
- ERREURS
- FICHIERS
- CONFORMITÉ À
- VOIR AUSSI
- TRADUCTION
NOM
getspnam, getspnam_r, getspent, getspent_r, setspent, endspent, fgetspent,
fgetspent_r, sgetspent, sgetspent_r, putspent, lckpwdf, ulckpwdf - Obtenir
un enregistrement du fichier des mots de passe cachés
SYNOPSIS
/* API du fichier des mots de passe cachés */
#include <shadow.h>
struct spwd *getspnam(const char *name);
struct spwd *getspent(void);
void setspent(void);
void endspent(void);
struct spwd *fgetspent(FILE *fp);
struct spwd *sgetspent(const char *s);
int putspent(struct spwd *p, FILE *fp);
int lckpwdf(void);
int ulckpwdf(void);
/* Extension GNU */
#define _SVID_SOURCE /* ou _BSD_SOURCE */
#include <shadow.h>
int getspent_r(struct spwd *spbuf,
char *buf, size_t buflen, struct spwd **spbufp);
int getspnam_r(const char *name, struct spwd *spbuf,
char *buf, size_t buflen, struct spwd **spbufp);
int fgetspent_r(FILE *fp, struct spwd *spbuf,
char *buf, size_t buflen, struct spwd **spbufp);
int sgetspent_r(const char *s, struct spwd *spbuf,
char *buf, size_t buflen, struct spwd **spbufp);
DESCRIPTION
Il a longtemps été considéré comme sûr d'avoir des mots de passe chiffrés
ouvertement visibles dans le fichier des mots de passe. Lorsque les
ordinateurs sont devenus plus rapides et que les gens sont devenus plus
conscients des problèmes de sécurité, cela n'était plus acceptable. Julianne
Frances Haugh a implémenté la suite d'utilitaires « shadow » qui conserve
les mots de passe chiffrés dans la base de données des mots de passe cachés
« shadow » (par exemple, le fichier local des mots de passe cachés
/etc/shadow, NIS ou LDAP), lisible seulement par le superutilisateur.
Les fonctions décrites ci-dessous ressemblent aux fonctions traditionnelles
de la base de données des mots de passe (par exemple, consultez
getpwnam(3) et getpwent(3)).
La fonction getspnam() renvoie un pointeur vers une structure contenant
les champs d'un enregistrement extrait de la base de données « shadow » de
l'entrée correspondant à l'utilisateur de nom name.
La fonction getspent() renvoie un pointeur sur l'entrée suivante de la
base de données « shadow ». La position dans le flux d'entrée est
initialisée par setspent(). Lorsque la lecture est finie, le programme
devrait appeler endspent() pour désallouer les ressources.
La fonction fgetspent() est similaire à getspent() mais utilise le
flux fourni plutôt que celui implicitement ouvert par setspent().
La fonction sgetspent() analyse la chaîne s fournie dans la structure
spwd.
La fonction putspent() écrit le contenu de la structure spwd *p
fournie sous forme d'une ligne de texte au format du fichier des mots de
passe cachés dans le flux fp. Les entrées chaînes de valeur NULL et les
entrées numériques de valeur -1 sont écrites comme des chaînes vides.
La fonction lckpwdf() a pour but de protéger contre les accès simultanés
à la base de données des mots de passe cachés. Elle tente d'obtenir un
verrou, renvoie 0 si elle y arrive ou -1 si elle échoue (le verrou n'a pas
pu être obtenu dans les 15 secondes). La fonction ulckpwdf() libère le
verrou. Veuillez noter qu'il n'y a pas de protection contre l'accès direct
au fichier des mots de passe cachés. Seuls les programmes qui utilisent
lckpwdf() remarqueront le verrou.
C'étaient les routines qui composaient l'API originale shadow. Elles sont
largement disponibles.
Versions ré-entrantes
De manière analogue aux routines ré-entrantes pour la base de données des
mots de passe, la glibc possède aussi des versions ré-entrantes pour la base
de données des mots de passe cachés. La fonction getspnam_r() est
équivalente à la fonction getspnam() mais enregistre la structure des
mots de passe cachés trouvée dans l'espace pointé par spbuf. Cette
structure des mots de passe cachés contient des pointeurs vers des chaînes
qui sont stockées dans le tampon buf de taille buflen. Un pointeur
vers le résultat (en cas de réussite) ou NULL (au cas où aucune entrée n'ait
été trouvée ou qu'une erreur soit survenue) est stocké dans *spbufp.
Les fonctions getspent_r(), fgetspent_r() et sgetspent_r() sont
analogues à leurs homologues non ré-entrantes.
Certains systèmes non glibc ont également des fonctions portant ces noms,
souvent avec des prototypes différents.
Structure
La structure des mots de passe cachés est définie dans <shadow.h>
de la manière suivante :
-
struct spwd {
char *sp_namp; /* Nom de connexion */
char *sp_pwdp; /* Mot de passe chiffré */
long sp_lstchg; /* Date de dernière modification */
long sp_min; /* Nombre de jours minimum entre
deux modifications */
long sp_max; /* Nombre de jours maximum entre
deux modifications */
long sp_warn; /* Nombre de jours avant l'expiration
du mot de passe pour avertir
l'utilisateur de le modifier */
long sp_inact; /* Nombre de jours après l'expiration
du mot de passe pour la désactivation
du compte */
long sp_expire; /* Nombre de jours depuis le 1er janvier 1970
avant que le compte ne soit désactivé */
unsigned long sp_flag; /* Réservé */
};
VALEUR RENVOYÉE
Ces routines qui renvoient un pointeur renvoient NULL s'il n'y a plus
d'entrée disponible ou si une erreur est survenue pendant le traitement. Les
routines qui ont un int comme valeur de retour renvoient 0 en cas de
réussite et -1 en cas d'échec.
Pour les fonctions non ré-entrantes, la valeur de retour peut pointer sur
une zone statique et peut être écrasée par des appels consécutifs de ces
fonctions.
Les fonctions ré-entrantes renvoient zéro si elles réussissent. Si elles
échouent, une valeur d'erreur est renvoyée.
ERREURS
- ERANGE
-
Le tampon fourni est trop petit.
FICHIERS
- /etc/shadow
-
fichier base de données des mots de passe cachés
- /etc/.pwd.lock
-
fichier verrou
Le fichier d'inclusion <paths.h> définit la constante
_PATH_SHADOW comme étant le chemin du fichier des mots de passe cachés.
CONFORMITÉ À
La base de données shadow et son API ne sont pas spécifiées dans
POSIX.1-2001. Cependant, beaucoup de systèmes fournissent une API similaire.
VOIR AUSSI
getgrnam(3), getpwnam(3), getpwnam_r(3), shadow(5)
TRADUCTION
Cette page de manuel a été traduite et mise à jour par
Alain Portal <aportal AT univ-montp2 DOT fr> entre 2004 et 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction 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> ».
|