1. 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
2. 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 */
#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);
Exigences de macros de test de fonctionnalités pour la glibc (consultez feature_test_macros(7)) :
getspent_r(), getspnam_r(), fgetspent_r(), sgetspent_r() :
_BSD_SOURCE || _SVID_SOURCE
3. 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 la base de données des mots de passe cachés contre les accès simultané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.
3.1. 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.
3.2. 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; /* Identifiant de connexion */
char
*
sp_pwdp; /* Mot de passe chiffré */
long
sp_lstchg; /* Date de dernière modification
(mesurée en jours depuis l'époque,
1er janvier 1970 à 00:00:00 (UTC)) */
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; /* Date à laquelle le compte expirera,
(mesurée en jours depuis l'époque,
1er janvier 1970 à 00:00:00 (UTC)) */
unsigned
long
sp_flag; /* Réservé */
}
;
4. 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. En cas d'erreur, -1 est renvoyé et errno contient le code d'erreur.
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.
5. ERREURS ▲
- EACCES
L'appelant n'a pas le droit d'accéder au fichier de mots de passe cachés. - ERANGE
Le tampon fourni est trop petit.
6. 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.
7. 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.
8. VOIR AUSSI ▲
getgrnam(3), getpwnam(3), getpwnam_r(3), shadow(5)
9. COLOPHON ▲
Cette page fait partie de la publication 3.52 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/.
10. 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/>.
Alain Portal <http://manpagesfr.free.fr/> (2004-2006). Florentin Duneau et l'équipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à <>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».